Player FM - Internet Radio Done Right
144 subscribers
Checked 8h ago
Added eleven years ago
Content provided by HPR Volunteer and Hacker Public Radio. All podcast content including episodes, graphics, and podcast descriptions are uploaded and provided directly by HPR Volunteer and Hacker Public Radio or their podcast platform partner. If you believe someone is using your copyrighted work without your permission, you can follow the process outlined here https://player.fm/legal.
Player FM - Podcast App
Go offline with the Player FM app!
Go offline with the Player FM app!
Hacker Public Radio explicit
Mark all (un)played …
Manage series 32765
Content provided by HPR Volunteer and Hacker Public Radio. All podcast content including episodes, graphics, and podcast descriptions are uploaded and provided directly by HPR Volunteer and Hacker Public Radio or their podcast platform partner. If you believe someone is using your copyrighted work without your permission, you can follow the process outlined here https://player.fm/legal.
Hacker Public Radio is an podcast that releases shows every weekday Monday through Friday. Our shows are produced by the community (you) and can be on any topic that are of interest to hackers and hobbyists.
…
continue reading
860 episodes
Mark all (un)played …
Manage series 32765
Content provided by HPR Volunteer and Hacker Public Radio. All podcast content including episodes, graphics, and podcast descriptions are uploaded and provided directly by HPR Volunteer and Hacker Public Radio or their podcast platform partner. If you believe someone is using your copyrighted work without your permission, you can follow the process outlined here https://player.fm/legal.
Hacker Public Radio is an podcast that releases shows every weekday Monday through Friday. Our shows are produced by the community (you) and can be on any topic that are of interest to hackers and hobbyists.
…
continue reading
860 episodes
All episodes
×This show has been flagged as Clean by the host. TuxJam co-host Kevie goes over the command line applications that he currently uses, January 2025 at the time of recording. These include: mpg123 - Playing audio streams ffmpeg - Recording audio streams MOC - Music player Lynx - browser Mutt - email client Neofetch - System information Weechat - IRC client Provide feedback on this episode .…
This show has been flagged as Clean by the host. About Linux Matters Join 3 experienced Open Source professionals as they discuss the impact Linux has in their daily lives. Upbeat family-friendly banter, conversation and discussion for Linux enthusiasts and casual observers of all ages. A new episode every two weeks covering terminal productivity, desktop experience, development, gaming, hosting, hardware, community, cloud-native and all the Linux Matters that matter. Links Website: https://linuxmatters.sh/ License: Creative Commons Attribution-NonCommercial 4.0 International license. RSS: https://linuxmatters.sh/episode/index.xml Provide feedback on this episode .…
H
Hacker Public Radio


This show has been flagged as Clean by the host. Hello, this is your host, Archer72 for another episode of Hacker Public Radio In this episode, I talk about how I use Newsboat and Podboat for a couple of tasks. I don’t always use Podboat for podcasts, but it is useful when listening from my laptop For my other podcast listening, I used Antennapod Newsboat source of feeds is from a url list in ~/.config/newsboat/urls Newsboat url list # (Bible) https://feeds.feedburner.com/hl-int-tv-en-kjv "Bible" (Bible) # (Reddit) https://www.reddit.com/r/commandline.rss "Commandline" (Reddit) https://www.reddit.com/r/raspberry_pi.rss "~Raspberry Pi" (Reddit) # (Lemmy) https://lemmy.sdf.org/feeds/local.xml?sort=New "Lemmy SDF" (Lemmy) # (Podcasts) http://gnuworldorder.info/ogg.xml "Gnu_World_Order" # Tuxjam.Otherside.Network https://tuxjam.otherside.network/feed "TuxJam" https://tuxjam.otherside.network/feed/uncut "TuxJam Uncut" https://thebugcast.org/category/podcast/feed "The Bugcast" # Hacker Public Radio http://hackerpublicradio.org/rss-future.php HackerPublicRadio_future_feed "~Hacker Public Radio ~ Future feed" (HPR) http://hackerpublicradio.org/hpr_ogg_rss.php "HPR_two_week_feed" (HPR) http://hackerpublicradio.org/comments_rss.php HPR_comment_feed "HPR_Comments" (HPR) https://archive.org/services/collection-rss.php?collection=dlarc-hackerpublicradio "~HPR Amateur Radio - Archive.org" (HPR) # Other Tech podcasts https://feeds.fireside.fm/asknoah/rss "The Ask Noah Show" https://feeds.feedburner.com/urandom-podcast/ogg "Urandom Podcast" https://ubuntu.social/@linuxmatters # (Youtube) https://www.youtube.com/feeds/videos.xml?channel_id=UC2eYFnH61tmytImy1mTYvhA "Luke Smith" (Youtube) https://www.youtube.com/feeds/videos.xml?channel_id=UCH6ttJZ3T5gA-r_7PYkHk9g "SGOTI" (Youtube) https://www.youtube.com/feeds/videos.xml?channel_id=UCVls1GmFKf6WlTraIb_IaJg "DistroTube" (Youtube) https://www.youtube.com/feeds/videos.xml?channel_id=UC9x0AN7BWHpCDHSm9NiJFJQ "Network Chuck" (Youtube) # Import from Newpipe https://www.youtube.com/feeds/videos.xml?channel_id=UC_SLthyNX_ivd-dmsFgmJVg "Jeremy Fielding" (Youtube) https://www.youtube.com/feeds/videos.xml?channel_id=UCJ0-OtVpF0wOKEqT2Z1HEtA "ElectroBOOM" (Youtube) https://www.youtube.com/feeds/videos.xml?channel_id=UCv1Kcz-CuGM6mxzL3B1_Eiw "Gardiner Bryant" (Youtube) https://www.youtube.com/feeds/videos.xml?channel_id=UC3s0BtrBJpwNDaflRSoiieQ "Hak5" (Youtube) https://www.youtube.com/feeds/videos.xml?channel_id=UCR-DXc1voovS8nhAvccRZhg "Jeff Geerling" (Youtube) https://www.youtube.com/feeds/videos.xml?channel_id=UCzgA9CBrIXPtkB2yNTTiy1w "Level 2 Jeff" (Youtube) https://www.youtube.com/feeds/videos.xml?channel_id=UCLx053rWZxCiYWsBETgdKrQ "LGR" (Youtube) https://www.youtube.com/feeds/videos.xml?channel_id=UCXuqSBlHAE6Xw-yeJA0Tunw "Linus Tech Tips" (Youtube) https://www.youtube.com/feeds/videos.xml?channel_id=UCm9K6rby98W8JigLoZOh6FQ "LockPickingLawyer" (Youtube) https://www.youtube.com/feeds/videos.xml?channel_id=UCjFaPUcJU1vwk193mnW_w1w "Modern Vintage Gamer" (Youtube) https://www.youtube.com/feeds/videos.xml?channel_id=UCP8QhVVoM7IKD0YwnvnPPbg "Pater Practicus" (Youtube) https://www.youtube.com/feeds/videos.xml?channel_id=UCjr2bPAyPV7t35MvcgT3W8Q "The Hated One" (Youtube) https://www.youtube.com/feeds/videos.xml?channel_id=UCo71RUe6DX4w-Vd47rFLXPg "typecraft" (Youtube) ## From Mrs. Archer https://www.youtube.com/feeds/videos.xml?channel_id=UCld68syR8Wi-GY_n4CaoJGA "Brodie Robertson" (Youtube) https://www.youtube.com/feeds/videos.xml?channel_id=UCg6gPGh8HU2U01vaFCAsvmQ "Chris Titus Tech" (Youtube) https://www.youtube.com/feeds/videos.xml?channel_id=UCoryWpk4QVYKFCJul9KBdyw "Switched To Linux" (Youtube) https://www.youtube.com/feeds/videos.xml?channel_id=UCJf7AT2BzFT-31z0d-bc8Rg "Windows, computers and Technology" (Youtube) https://www.youtube.com/feeds/videos.xml?channel_id=UC5UAwBUum7CPN5buc-_N1Fw "The Linux Experiment" (Youtube) https://www.youtube.com/feeds/videos.xml?channel_id=UCmyGZ0689ODyReHw3rsKLtQ "Michael Tunnell" (Youtube) # (News) https://olfconference.org/feed/ "OLF Conference" (News) To organize the url list, tags can be used, along with a description of the feed. This only give an internal description, as the Main title is determined by the RSS feed itself. This can be manually set, for example, in the HPR Future feed. The default feed title is the same as the feed for two weeks. To set manually, us a tilde ~ before the Feed Title shown in this example. Tags follow the Feed Title, typed in parentheses and with no spaces. Multiple tags can be used here. http://hackerpublicradio.org/rss-future.php HackerPublicRadio_future_feed "~Hacker Public Radio ~ Future feed" (HPR) Not all feeds in the url list are podcasts. Some are Reddit feeds, while others are youtube channels. The first item I go to in the morning is my Bible daily verse. I heard one new host mention that he reads some, and thought it might be interesting to include this. The next 2 entries are from Reddit, and can be modified to contain the rss feed in this way: Replace the /r/commandline with /r/commandline.rss add "Title" and "(Tag)" https://www.reddit.com/r/commandline.rss "Commandline" (Reddit) The next entry, which I only include one, is the Lemmy instance for lemmy.sdf.org Lemmy is part of the Fediverse, and became popular after the June 2023 controversy involving charging excessive money for Reddit’s API. This in turn, caused third party Reddit apps to be no longer viable. Alternativeto.net - API Charging Policy Wikipedia - Lemmy_(social_network) Next, we’ll start on the ~/.config/newsboat/config file Newsboat config file # Podboat download-path "~/Downloads/podcasts/%h/%n" # %h - Hostname # %n - Podcast name # Example: hub.hackerpublicradio.org # gnuworldorder.info # media.blubrry.com/The Bugcast # archive.org/TuxJam download-filename-format "%n - %t.%u" # %n - Name of the podcast feed # %t - Title of the podcast episode # %u - Indicates the file extension podlist-format "%4i [%6dMB/%6tMB] [%5p %%] %-10S %b" # Table 7. Available Identifiers for podlist-format # %i - Download index, 4 indicating number of digits # %6dMB/%6tMB - Downloaded (in MB) / Total file size (in MB) # [%5p %%] - Percent downloaded # %-10S - Status - {queued, downloading, ready, played, deleted} # # 4.18. Format Strings # %b - Boolean string # load URLS on launch auto-reload yes # vim binds bind-key j down bind-key k up bind-key j next articlelist bind-key k prev articlelist bind-key J next-feed articlelist bind-key K prev-feed articlelist bind-key G end bind-key g home # bind-key d pagedown - default bind-key D pagedown bind-key u pageup bind-key l open bind-key h quit bind-key a toggle-article-read bind-key n next-unread bind-key N prev-unread # bind-key D pb-download - default bind-key d pb-download bind-key U show-urls bind-key x pb-delete # Colors highlight article "^Feed:.*" color5 color0 highlight article "^Title:.*" color3 color0 bold highlight article "^Author:.*" color2 color0 highlight article "^Date:.*" color223 color0 highlight article "^Link:.*" color4 color0 highlight article "^Flags:.*" color9 color0 highlight article "\\[[0-9][0-9]*\\]" color66 default bold highlight article "\\[image [0-9][0-9]*\\]" color109 default bold color listnormal cyan default color listfocus black yellow standout bold color listnormal_unread cyan default color listfocus_unread yellow default bold color info red black bold color article cyan default # macro setup browser linkhandler macro , open-in-browser # download-path ~/.newsboat/queue player "mpv --vid=no" macro 1 set browser "mpv --vid=no"; one; set browser lynx # launch video player macro v set browser "setsid -f mpv" ; open-in-browser ; set browser linkhandler # download video macro d set browser "yt-dlp"; open-in-browser ; set browser linkhandler # download audio only macro a set browser "yt-dlp --embed-metadata -xic -f bestaudio/best" ; open-in-browser ; set browser linkhandler When enqueing a podcast for Podboat, I changed the default download path to ~/Downloads/podcasts/ using download-path "~/Downloads/podcasts/%h/%n" Where %h is the Hostname, and %n is the Podcast name The file name is formatted in the following way %n - %t.%u Where %n is the podcast name, %t is the podcast title and %u indicates the file extension Finally, there is a custom line for podlist-format which for podcast purposes I won’t list out. This includes a Download index to 4 places, percentage of each podcast downloaded, and Podcast status When I use Podboat, after the set of podcasts are enqued I found a way to monitor the bluetooth connection, in order to pause a show with the bluetooth button on an earbud. The first part of this puzzle is to have mpris-proxy , which is included in the bluez-utils Archwiki - MPRIS Then enable the service with systemctl --user enable mpris-proxy.service and systemctl --user start mpris-proxy.service After that, git clone https://github.com/hoyon/mpv-mpris.git from Github - hoyon/mpv-mpris cd mpv-mpris and make , with the resulting mpris.so copied to ~/.config/mpv/scripts/ Newsboat documentation Newsboat Documentation page Format strings Newsboat Documentation page - Format Strings Provide feedback on this episode .…
H
Hacker Public Radio


This show has been flagged as Clean by the host. I am subscribed to a number of YouTube channels, and I am sharing them with you. Links: https://www.youtube.com/@BackToSpace https://www.youtube.com/@bakerstreetjournal1642 https://www.youtube.com/@BBCEarthExplore https://www.youtube.com/@besmart https://www.youtube.com/@BeyondTheSofa https://www.youtube.com/@BillBruford https://www.youtube.com/@BizarreBeasts https://www.youtube.com/@boesthius https://www.youtube.com/@braincraft https://www.youtube.com/@BreakRoomofGeeks https://www.youtube.com/@briantylercohen https://www.youtube.com/@ButterflySpanish https://www.youtube.com/@cab801 https://www.youtube.com/@candyrat https://www.youtube.com/@carcareclues https://www.youtube.com/@carhelpcorner https://www.palain.com/ Provide feedback on this episode .…
This show has been flagged as Clean by the host. Where oxo answers some of the questions about hajime oxo/hajime - Codeberg.org hajime/prep/make-recov at main - oxo/hajime - Codeberg.org hajime/prep/isolatest at main - oxo/hajime - Codeberg.org Provide feedback on this episode .
This show has been flagged as Explicit by the host. From Wikipedia - https://en.wikipedia.org/wiki/Content_moderation "On websites that allow users to create content, content moderation is the process of detecting contributions that are irrelevant, obscene, illegal, harmful, or insulting. The purpose of content moderation is to remove or apply a warning label to problematic content or allow users to block and filter content themselves." Facebook Community Standards - https://transparency.meta.com/en-gb/policies/community-standards/ TikTok Community Guidelines - https://www.tiktok.com/community-guidelines/en Provide feedback on this episode .…
This show has been flagged as Clean by the host. This is a further look at the stories of the First Doctor, portrayed by William Hartnell, during the 1960s Links: https://en.wikipedia.org/wiki/Planet_of_Giants https://en.wikipedia.org/wiki/The_Dalek_Invasion_of_Earth https://en.wikipedia.org/wiki/The_Rescue_(Doctor_Who) https://en.wikipedia.org/wiki/The_Romans_(Doctor_Who) https://en.wikipedia.org/wiki/The_Web_Planet https://en.wikipedia.org/wiki/The_Crusade_(Doctor_Who) https://www.palain.com/science-fiction/intro-to-doctor-who/the-first-doctor-part-2/ Provide feedback on this episode .…
H
Hacker Public Radio


This show has been flagged as Clean by the host. I am subscribed to a number of YouTube channels, and I am sharing them with you. Links: https://www.youtube.com/@2LegsAPaulMcCartneyPodcast https://www.youtube.com/@AdamNeely https://www.youtube.com/@AlReviewsWho https://www.youtube.com/@AlternateHistoryHub https://www.youtube.com/@amawaterways https://www.youtube.com/@theSpaceVixen https://www.youtube.com/channel/UC1AtM-B9YZTSoMcKt1yDieg https://www.youtube.com/@TheRealAndyMcKee https://www.youtube.com/channel/UCxgAH7EcmKhC9bLm7xQ971g https://www.youtube.com/@ApartmentSessions https://www.youtube.com/@arthurc.clarkecenterforhum6745 https://www.youtube.com/@associationofirishcelticfe4447 https://www.palain.com/ Provide feedback on this episode .…
This show has been flagged as Clean by the host. TuxJam co-host Kevie goes over the desktop applications that he currently uses, January 2025 at the time of recording. These include: Peazip Lutris GIMP Inkscape Tuba Mumble Telegram Calibre PDF Arranger Bluefish Editor Easytag Goodvibes OBS Studio Openshot Reco Audacity Provide feedback on this episode .…
This show has been flagged as Explicit by the host. Overview Several years ago I wrote a Bash script to perform a task I need to perform almost every day - find the newest file in a series of files. At this point I was running a camera on a Raspberry Pi which was attached to a window and viewed my back garden. I was taking a picture every 15 minutes, giving them names containing the date and time, and storing them in a directory. It was useful to be able to display the latest picture. Since then, I have found that searching for newest files useful in many contexts: Find the image generated by my random recipe chooser, put in the clipboard and send it to the Telegram channel for my family. Generate a weather report from wttr.in and send it to Matrix. Find the screenshot I just made and put it in the clipboard. Of course, I could just use the same name when writing these various files, rather than accumulating several, but I often want to look back through such collections. If I am concerned about such files accumulating in an unwanted way I write cron scripts which run every day and delete the oldest ones. Original script The first iteration of the script was actually written as a Bash function which was loaded at login time. The function is called newest_matching_file and it takes two arguments: A file glob expression to match the file I am looking for. An optional directory to look for the file. If this is omitted, then the current directory will be used. The first version of this function was a bit awkward since it used a for loop to scan the directory, using the glob pattern to find the file. Since Bash glob pattern searches will return the search pattern when they fail, it was necessary to use the nullglob (see references) option to prevent this, turning it on before the search and off afterwards. This technique was replaced later with a pipeline using the find command. Improved Bash script The version using find is what I will explain here. function newest_matching_file { local glob_pattern=${1-} local dir=${2:-$PWD} # Argument number check if [[ $# -eq 0 || $# -gt 2 ]]; then echo 'Usage: newest_matching_file GLOB_PATTERN [DIR]' >&2 return 1 fi # Check the target directory if [[ ! -d $dir ]]; then echo "Unable to find directory $dir" >&2 return 1 fi local newest_file # shellcheck disable=SC2016 newest_file=$(find "$dir" -maxdepth 1 -name "$glob_pattern" \ -type f -printf "%T@ %p\n" | sort | sed -ne '${s/.\+ //;p}') # Use printf instead of echo in case the file name begins with '-' [[ -n $newest_file ]] && printf '%s\n' "$newest_file" return 0 } The function is in the file newest_matching_file_1.sh , and it's loaded ("sourced", or declared) like this: . newest_matching_file_1.sh The '.' is a short-hand version of the command source . I actually have two versions of this function, with the second one using a regular expression, which the find command is able to search with, but I prefer this one. Explanation The first two lines beginning with local define variables local to the function holding the arguments. The first, glob_pattern is expected to contain something like screenshot_2025-04-*.png . The second will hold the directory to be scanned, or if omitted, will be set to the current directory. Next, an if statement checks that there are the right number of arguments, aborting if not. Note that the echo command writes to STDERR (using '>&2' ), the error channel. Another if statement checks that the target directory actually exists, and aborts if not. Another local variable newest_file is defined. It's good practice not to create global variables in functions since they will "leak" into the calling environment. The variable newest_file is set to the result of a command substitution containing a pipeline: The find command searches the target directory. Using -maxdepth 1 limits the search to the chosen directory and does not descend into sub-directories. The search pattern is defined by -name "$glob_pattern" Using -type f limits the search to files The -printf "%T@ %p\n" argument returns the file's last modification time as the number of seconds since the Unix epoch '%T@' . This is a number which is larger if the file is older. This is followed, after a space, by the full path to the file ( '%p' ), and a newline. The matching file names are sorted. Because each is preceded by a numeric time value, they will be sorted in ascending order of age. Finally sed is used to return the last file in the sorted list with the program '${s/.\+ //;p}' : The use of the -n option ensures that only lines which are explicitly printed will be shown. The sed program looks for the last line (using '$' ). When found the leading numeric time is removed with ' s/.\+ //' and the result is printed (with 'p' ). The end result will either be the path to the newest file or nothing (because there was no match). The expression '[[ -n $newest_file ]]' will be true if $newest_file variable is not empty, and if that is the case, the contents of the variable will be printed on STDOUT, otherwise nothing will be printed. Note that the script returns 1 (false) if there is a failure, and 0 (true) if all is well. A null return is regarded as success. Script update While editing the audio for this show I realised that there is a flaw in the Bash function newest_matching_file . This is in the sed script used to process the output from find . The sed commands used in the script delete all characters up to a space, assuming that this is the only space in the last line. However, if the file name itself contains spaces, this will not work because regular expressions in sed are greedy . What is deleted in this case is everything up to and including the last space. I created a directory called tests and added the following files: 'File 1 with spaces.txt' 'File 2 with spaces.txt' 'File 3 with spaces.txt' I then ran the find command as follows: $ find tests -maxdepth 1 -name 'File*' -type f -printf "%T@ %p\n" | sort | sed -ne '${s/.\+ //;p}' spaces.txt I adjusted the sed call to sed -ne '${s/[^ ]\+ //;p}' . This uses the regular expression: s/[^ ]\+ // This now specifies that what it to be removed is every non-space up to and including the first space. The result is: $ find tests -maxdepth 1 -name 'File*' -type f -printf "%T@ %p\n" | sort | sed -ne '${s/[^ ]\+ //;p}' tests/File 3 with spaces.txt This change has been propagated to the copy on GitLab . Usage This function is designed to be used in commands or other scripts. For example, I have an alias defined as follows: alias copy_screenshot="xclip -selection clipboard -t image/png -i \$(newest_matching_file 'Screenshot_*.png' ~/Pictures/Screenshots/)" This uses xclip to load the latest screenshot into the clipboard, so I can paste it into a social media client for example. Perl alternative During the history of this family of scripts I wrote a Perl version. This was originally because the Bash function gave problems when run under the Bourne shell, and I was using pdmenu a lot which internally runs scripts under that shell. #!/usr/bin/env perl use v5.40; use open ':std', ':encoding(UTF-8)'; # Make all IO UTF-8 use Cwd; use File::Find::Rule; # # Script name # ( my $PROG = $0 ) =~ s|.*/||mx; # # Use a regular expression rather than a glob pattern # my $regex = shift; # # Get the directory to search, defaulting to the current one # my $dir = shift // getcwd(); # # Have to have the regular expression # die "Usage: $PROG regex [DIR]\n" unless $regex; # # Collect all the files in the target directory without recursing. Include the # path and let the caller remove it if they want. # my @files = File::Find::Rule->file() ->name(qr/$regex/) ->maxdepth(1) ->in($dir); die "Unsuccessful search\n" unless @files; # # Sort the files by ascending modification time, youngest first # @files = sort {-M($a) <=> -M($b)} @files; # # Report the one which sorted first # say $files[0]; exit; Explanation This is fairly straightforward Perl script, run out of an executable file with a shebang line at the start indicating what is to be used to run it - perl . The preamble defines the Perl version to use, and indicates that UTF-8 (character sets like Unicode) will be acceptable for reading and writing. Two modules are required: Cwd : provides functions for determining the pathname of the current working directory. File::Find::Rule : provides tools for searching the file system (similar to the find command, but with more features). Next the variable $PROG is set to the name under which the script has been invoked. This is useful when giving a brief summary of usage. The first argument is then collected (with shift ) and placed into the variable $regex . The second argument is optional, but if omitted, is set to the current working directory. We see the use of shift again, but if this returns nothing (is undefined), the '//' operator invokes the getcwd() function to get the current working directory. If the $regex variable is not defined, then die is called to terminate the script with an error message. The search itself is invoked using File::Find::Rule and the results are added to the array @files . The multi-line call shows several methods being called in a "chain" to define the rules and invoke the search: file() : sets up a file search name(qr/$regex/) : a rule which applies a regular expression match to each file name, rejecting any that do not match maxdepth(1) : a rule which prevents the search from descending below the top level into sub-directories in($dir) : defines the directory to search (and also begins the search) If the search returns no files (the array is empty), the script ends with an error message. Otherwise the @files array is sorted. This is done by comparing modification times of the files, with the array being reordered such that the "youngest" (newest) file is sorted first. The <=> operator checks if the value of the left operand is greater than the value of the right operand, and if yes then the condition becomes true. This operator is most useful in the Perl sort function. Finally, the newest file is reported. Usage This script can be used in almost the same way as the Bash variant. The difference is that the pattern used to match files is a Perl regular expression. I keep this script in my ~/bin directory, so it can be invoked just by typing its name. I also maintain a symlink called nmf to save typing! The above example, using the Perl version, would be: alias copy_screenshot="xclip -selection clipboard -t image/png -i \$(nmf 'Screenshot_.*\.png' ~/Pictures/Screenshots/)" In regular expressions '.*' means "any character zero or more times". The '.' in '.png' is escaped because we need an actual dot character. Conclusion The approach in both cases is fairly simple. Files matching a pattern are accumulated, in the Bash case including the modification time. The files are sorted by modification time and the one with the lowest time is the answer. The Bash version has to remove the modification time before printing. This algorithm could be written in many ways. I will probably try rewriting it in other languages in the future, to see which one I think is best. References Glob expansion: Wikipedia article on glob patterns HPR shows covering glob expansion: Finishing off the subject of expansion in Bash (part 1) Finishing off the subject of expansion in Bash (part 2) GitLab repository holding these files: hprmisc - Miscellaneous scripts, notes, etc pertaining to HPR episodes which I have contributed Provide feedback on this episode .…
Welcome to Player FM!
Player FM is scanning the web for high-quality podcasts for you to enjoy right now. It's the best podcast app and works on Android, iPhone, and the web. Signup to sync subscriptions across devices.