. 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 Wi-Fi ESSID changes 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-gfor a top and bottom gap in crop mode. -
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 is present on the local network usingarp-scan. -
siftcopies a random subset of files from a source directory into a destination directory until a byte budget is reached. 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 safely. 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 are installed:
actionlint,
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, 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.