. oooo .o8
.o8 `888 "888
.o888oo .ooooo. .ooooo. 888 888oooo. .ooooo. oooo ooo
888 d88' `88b d88' `88b 888 d88' `88b d88' `88b `88b..8P'
888 888 888 888 888 888 888 888 888 888 Y888'
888 . 888 888 888 888 888 888 888 888 888 .o8"'88b
"888" `Y8bod8P' `Y8bod8P' o888o `Y8bod8P' `Y8bod8P' o88' 888otoolbox is a collection of Unix shell utilities for everyday use.
Each utility is a portable POSIX script built on the Unix shell framework
shellbase:
-
bakwrapsrdiff-backupto create incremental backups. -
chownerchanges the owner and permissions on a directory. -
copyrightupdates years in copyright notices. -
essidwatches for changes to the connected Wi-Fi network’s ESSID and reports them. -
flactomp3converts audio files tomp3with tags. -
ivalvalidates image files. The name stands for Image Validation. -
myipcontinuously displays the external IP address usingdig. -
pingoadds timestamps to the ping command output. -
reelconverts a video clip to a vertical 1080×1920 social media reel usingffmpeg, padding it with a blurred copy of itself. Accepts-cto center-crop and fill the frame instead of padding,-ffor input file,-ofor output file,-sfor start time,-ufor duration, and-zfor a horizontal crop shift in pixels, accepting negative values. -
remountremounts filesystems using a temporaryfstabconfiguration, then restores the permanent one. -
rsyncxwrapsrsyncand picks a safe option set for the installedrsyncversion. -
scannerdetects whether a device with a given MAC address appears on the local network usingarp-scan. -
siftcopies a random subset of files from a source directory into a destination directory until it reaches a byte budget. Accepts-sfor the byte budget (a number with an optionalK,M, orGsuffix, default8G) and-ofor the destination directory (default the current directory). Takes the source directory as the mandatory positional argument. -
speedcontinuously displays download and upload internet speeds usingspeedtest. -
texcompiles a TeX source file to PDF and opens the result. -
truremoves a torrent and its content, then adds it again to increase the share ratio. The name stands for Transmission Remote Updater. It can run undercron. -
ydatawrapsyt-dlp: it downloads, converts, renames, and stores media, skipping videos it already downloaded. It can run undercron.
Ensure /usr/local/bin is in your PATH.
git clone https://github.com/rdavid/toolbox.git &&
./toolbox/app/installThe project uses Daniel J. Bernstein’s build system redo.
You can install Sergey Matveev’s goredo implementation.
redo lint runs whichever of the following linters you have installed:
actionlint,
checkbashisms,
conform,
gitleaks,
reuse,
shellcheck,
shfmt,
typos,
vale,
yamllint,
zizmor.
It also parses every script with dash -n and mksh -n to catch syntax
errors and Bash-only constructs.
$ redo lint
20260803-14:02:01 » dash -n ./lint.do
20260803-14:02:01 » mksh -n ./lint.do
20260803-14:02:02 » shellcheck ./*.do ./app/*
# actionlint, checkbashisms, conform, gitleaks, reuse - not installed, nothing logged
20260803-14:02:04 shfmt failed, err=1.
20260803-14:02:05 » yamllint ./.github/*.yml ./.github/workflows/*.yml
OKDavid Rabkin holds the copyright to toolbox and distributes it
under the Zero-Clause BSD license.