We started producing shows as Today with a Techie on 2005-09-19, 18 years, 11 months, 28 days ago. our shows are produced by listeners like you and can be on any topic that "are of interest to hackers". if you listen to HPR then please consider contributing one show a year. if you record your show now it could be released in 9 days.
Call for shows
We are running very low on shows at the moment. Have a look at the hosts page and if you don't see "2024-??-??" next to your name, or if your name is not listed, you might consider sending us in something.
This section describes the syntax of the various forms of shell
commands.
DEFINITIONS.
The following definitions are used throughout the rest of this
document.
blank A space or tab.
word A sequence of characters considered as a single unit by
the shell. Also known as a token.
name A word consisting only of alphanumeric characters and
underscores, and beginning with an alphabetic character or
an underscore. Also referred to as an identifier.
metacharacter
A character that, when unquoted, separates words. One of
the following:
| & ; ( ) < > space tab newline
control operator
A token that performs a control function. It is one of
the following symbols:
|| & && ; ;; ;& ;;& ( ) | |& <newline>
Lists.
A list is a sequence of one or more pipelines separated by one of
the operators ;, &, &&, or ||, and optionally terminated by one
of ;, &, or <newline>.
ARITHMETIC EVALUATION.
((expression))
- + unary minus and plus
* / % multiplication, division, remainder
+ - addition, subtraction
<= >= < >
comparison
== != equality and inequality
&& logical AND
|| logical OR
CONDITIONAL EXPRESSIONS.
[[ expression ]]
Return a status of 0 or 1 depending on the evaluation of the conditional expression.
-a file, True if file exists.
-d file, True if file exists and is a directory.
-f file, True if file exists and is a regular file.
PARAMETERS (Positional Parameters & Special Parameters).
A parameter is an entity that stores values.
EXPANSION.
race expansion, tilde expansion, parameter and variable
expansion, command substitution, arithmetic expansion, word
splitting, and pathname expansion.
JOB CONTROL.
Job control refers to the ability to selectively stop (suspend)
the execution of processes and continue (resume) their execution
at a later point.
Title: 'The Linux Command Line' License:creativecommons:
Attribution-NonCommercial-NoDerivs 3.0 Unported 'CC BY-NC-ND 3.0' Source(s): linuxcommand:
'The Linux Command Line: Fifth Internet Edition' by William
Shotts. archive:
'The Linux Command Line Fifth Internet Edition' by William Shotts.
Title: bash Linux manual page. License: Bash is Copyright (C) 1989-2022 by the Free
Software Foundation, Inc. Source(s): man7: bash(1) — Linux manual
page man7:
Linux manual pages: alphabetic list of all pages.
Trollercoaster interacts with the Community News Summary of August 2024
Hosted by Trollercoaster on 2024-09-13 is flagged as Clean and released under a CC-BY-SA license. Software Freedom Day, Community, Activism, Drama, Troll.general.(Be the first).
Trollercoaster reacts to the community news podcast of August - in a
way fitting to his handle. With a little touch of drama and a little
touch of humor. I hope I didn't offend anyone (oh well... I'm trolling a
bit, so I guess I don't care that much... but I do a bit though... does
it show that I have a chaotic brain?)
NB: in this case, you may d/l the csv, but you'd still have
to do the same work. The point is to show a horrible UX case and how you
can fix it in LibreOffice Calc
Kevie discusses Dynamic DNS and how to setup DuckDNS on a Raspberry Pi
Hosted by Kevie on 2024-09-11 is flagged as Clean and released under a CC-BY-SA license. Dynamic DNS,Raspberry Pi,remote access,Linux.general.(Be the first).
Kevie, co-host of TuxJam, discusses what a Dynamic DNS is and also introduces the free service DuckDNS. To complete this project you are going to need:
Raspberry Pi
Pi Power Supply
Micro-SD Card
Ethernet Cable
The first thing that we will need to do is to go to the DuckDNS website, sign in using your preferred method, once you complete the captcha then you will be given your unique token (copy or take a note of it, but don't share this with anybody).
Next you will want to create your own unique address, type in your chosen domain and click on Add Domain.
Now it is time to setup your Raspberry Pi. Log into your Pi and open a terminal. The first thing that we will do is make sure that it is up to date:
sudo apt update && sudo apt upgrade -y
Install Curl using the command:
sudo apt install curl
You will now create two new folders, the first is where the script will be kept, the second to store the logs:
We need to add a bash script that will update your IP with the DuckDNS service. First of all create a new file called duck.sh with the code:
sudo nano /opt/duckdns/duck.sh
At this point the file is empty, we need to enter in the command below. However you must replace DUCKDNSDOMAIN with the domain that was created on the DuckDNS website and replace DUCKTOKEN with your DuckDNS Token:
Part 3 deals with the replacement of the clock backup battery on my TS-940S
Hosted by MrX on 2024-09-10 is flagged as Explicit and released under a CC-BY-SA license. Amateur, Radio, DIY, repair, electronics, soldering.HAM radio.(Be the first).
shows the radio hanging over the edge with the front panel rotated down
before rotating it back into place. It shows the cramped working
condition I had to deal with.
shows the clock display immediately after first switch on with the
display not working properly.
Picture 3
shows the correct clock display after pushing an internal reset button.
I think the picture shows the alarm and timer settings. It eventually
displays the correct time once it was setup. Unfortunately I forgot to
take a picture of the final clock display.
I have been working on an HPR project which is restoring external
files to shows which lost them when we migrated to the current static
site.
As I make changes I want to be able to check that they are correct,
but to make this check I need to wait for the next update of the static
site.
Ken was away recently, and set up a cron job to refresh
the site every three hours. Each show page shows the refresh time in UTC
form in the header.
Being a bit numerically challenged I wanted a way of computing the
next refresh time in my timezone from the previous refresh time.
The GNU date command accepts a date and time expression
after the -d option (or using the
alternative--date=STRING option). The contents of the
STRING here are very flexible but quite complex since you
can include time zone data, offsets, day and month names, etc. See the
links below for links to the GNU manual.
My first attempt used the date command like this and
got the wrong answer (using the output format +%T which
writes the time in a default form):
$ date -d '16:27:16 + 3 hours' +%T
15:27:16
It is not clear why this fails, but the GNU function which parses
these date parameters is obviously confused. The second try included the
time zone after the time, and worked better, but is a little
confusing:
$ date -d '16:27:16 UTC + 3 hours' +%T
20:27:16
The time returned is local time for me. The date
command has added three hours to the UTC date to get 19:27:16, but since
I am in the UK, which is in DST (called BST - British Summer Time - UTC
plus 1 hour), an hour is added.
The final try used the -u option which writes UTC
time:
$ date -u -d '16:27:16 UTC + 3 hours' +%T
19:27:16
I actually ended up using and re-using these commands (though a
script would have been better):
While processing and "repairing" shows I came across the need to
generate a list of show numbers separated by commas. In the past I have
loaded these into a Bash array and turned them into a comma-delimited
string, using the parameter substitution capabilities of Bash which can
add a comma to each element. The trouble with this is that it leaves a
trailing comma which has to be removed. I stumbled upon
paste as an alternative way of doing this.
The GNU paste command is another from the GNU
Coreutils group. This one merges lines of files. Its synopsis
is:
paste [OPTION]... [FILE]...
It merges lines consisting of the corresponding lines from each file
provided as an argument, by default separated by TABs, and writes them
to standard output. This means it produces lines consisting of the first
line from each of the files, separated by tabs, then the second lines,
and so on.
Any of the files can be linked to standard in by using a
- (hyphen) as the file name.
The delimiters can be changed with the -d LIST or
--delimiters=LIST option. The use of a list of delimiters
causes the characters in the list to be used sequentially for each
delimiter.
The merged lines can be visualised as rows in a matrix, where each
file provides a column.
The "matrix" is rotated by using the -s or
--serial option. Here the lines from one file at a time are
merged - the files are processed serially rather than in
parallel.
The paste command can be used to generate the
comma-delimited list I wanted by using the options -s and
-d ',':
Note that you can't get the same result with
echo {1..10} because all the numbers will be written to one
line rather than being the separate lines that paste
requires.
The file arguments to paste may also be Bash
process substitution expressions:
An introduction to one of my favorites, Doctor Who
Hosted by Ahuka on 2024-09-06 is flagged as Clean and released under a CC-BY-SA license. Science fiction, Doctor Who, TV, movies.Science Fiction and Fantasy.3.
This introduction is an overview of Doctor Who from its beginnings in
1963 right up to the end of 2023. We look at the television series and
movies, as well as appearances in other media. Many of these will be
things we go into more detail about later, but this helps to put the
pieces in place first.
Personal reflections on hobbies, obsessive interests and mental health
Hosted by Lee on 2024-09-04 is flagged as Explicit and released under a CC-BY-SA license. retro-computing, mental health, role-playing.How I got into tech.1.