NOBODD-SH(1)
π NOBODD-SH(1) β the nobodd-sh page, bestie edition β¨
okay so. this is the manual page for nobodd-sh, living in section 1 of the nobodd manual. sit down, grab a snack, we're doing this π
β¨ NAME β¨
nobodd-sh β run shell-like commands against files within images π¦
Basically: you get to run shell-ish commands against the file-system and/or FAT partitions inside a file-system image. it's giving "scripts that prep images for the nobodd-tftpd server", and honestly? iconic. that's the whole point of it π
β¨ SYNOPSIS β¨
usage: nobodd-sh [-h] [--version] [-v] [-q]
{help,cat,rm,rmdir,mkdir,touch,ls,cp,mv} ...
β¨ OPTIONS β¨
-h,--helpβ shows this help message and dips. bye bestie π--versionβ prints the program's version number and exits β¨-v,--verboseβ more output. we love a talkative queen π-q,--quietβ no output at all. silent. mysterious. main character energy π
β¨ SUB-COMMANDS β¨
so the first mandatory thing you pass to nobodd-sh is the sub-command you want to run. every one of them is named after the standard POSIX shell utility it's cosplaying as, and every one implements a similar but much more limited set of options. notably: filenames you hand to these utilities get treated pretty differently from how their regular shell counterparts treat them. iykyk π
πΈ help
with no arguments, it shows you a list of the nobodd-sh help commands. give it a command name and it shows you the description and options for that named command. so helpful fr fr π«Ά
usage: nobodd-sh help [-h] [command]
- command β the command you want help for; the valid ones are shown in the sections below π
-h,--helpβ show this help message and exit
π± cat
concatenates the content of the given files and writes it to stdout by default. if - shows up as a filename, or if you give it no filenames at all, it reads stdin instead. and because output can go into a file inside an image, there's -o for specifying an output that isn't stdout. slay π
usage: nobodd-sh cat [-h] [-o filename] [filenames ...]
- filenames β the input files
-h,--helpβ show this help message and exit-ofilename,--outputfilename β the output file (default: stdout)
π¦ cp
copies the specified file over the target file β but only if you give it one single source. if the target is a directory, it copies the specified files and directories into that target directory instead π
usage: nobodd-sh cp [-h] filenames [filenames ...] dest
- filenames β the files or directories to copy
- dest β the directory to copy into, or the file to replace
-h,--helpβ show this help message and exit
π ls
lists info about the files you name, or the contents of the directories you name. entries get sorted alphabetically unless you explicitly ask for another ordering. by default, hidden files (the ones starting with .) are left out of the output unless -a is provided. yes, exactly like regular ls, we stay consistent π
usage: nobodd-sh ls [-h] [-a] [-l] [--sort SORT] [-U] [-S] [-t] [-X]
filenames [filenames ...]
- filenames β the files or directories to list
-h,--helpβ show this help message and exit-a,--allβ do not ignore entries beginning with.(show the hidden girlies π)-lβ show details beside the listed entries--sort SORTβ sort on"name"(the default),"size","time", or"none"to disable sorting-Uβ disable sorting-Sβ sort by file size (largest first)-tβ sort by modification time (newest first)-Xβ sort by entry extension
πΈ mkdir
creates the directories you specify β and those directories must not already exist, neither as directories nor as regular files. no take-backs, no merge π«
usage: nobodd-sh mkdir [-h] [-p] filenames [filenames ...]
- filenames β the directories to create
-h,--helpβ show this help message and exit-p,--parentsβ create parent directories as required
π§ mv
moves the specified file over the target file when only one source is given, or moves the specified files and directories into the target directory when the target is a directory β¨
usage: nobodd-sh mv [-h] filenames [filenames ...] dest
- filenames β the files or directories to copy
- dest β the directory to move into, or the file to replace
-h,--helpβ show this help message and exit
warning, bestie, this one matters: unlike regular mv, there is no guarantee of atomic operation here, particularly with respect to files within images. so yeah. plan accordingly π
π rm
removes the files you specify. hand it -r and it will recursively remove directories and their contents too. gone. deleted. not coming back π«Ά
usage: nobodd-sh rm [-h] [-r] [-f] filenames [filenames ...]
- filenames β the files or directories to remove
-h,--helpβ show this help message and exit-r,-R,--recursiveβ remove directories and their contents recursively-f,--forceβ do not error on non-existent arguments, and never prompt
π rmdir
removes the directories you specify β which must be empty. no contents allowed, it's a strict vibe π€
usage: nobodd-sh rmdir [-h] filenames [filenames ...]
- filenames β the directories to remove
-h,--helpβ show this help message and exit
β touch
updates last-modified timestamps, and creates any files that don't already exist while it's at it π
usage: nobodd-sh touch [-h] filenames [filenames ...]
- filenames β the files to create or modify the timestamps of
-h,--helpβ show this help message and exit
β¨ USAGE β¨
okay here's the tea β filenames get parsed as regular filenames unless they contain ":/" or ":N/", where N is a partition number. when that happens:
- the part before
":"is treated as an image file - the N (if you specified one) is the partition within that image β and if you didn't specify N, the first auto-detected FAT partition gets used
- the part from
"/"onwards is an absolute path within that partition
which means this application can copy (or move) files to / from / within FAT file-systems inside images. obsessed π
for example:
foo.txtwill be interpreted as an ordinary file in the file-systemfoo.img:/foo.txtwill be interpreted as the filefoo.txtin the root of the first FAT partition found within the disk imagefoo.imgfoo.img:10/foo.txtwill be interpreted as the filefoo.txtin the root of the 10th partition found in the disk imagefoo.img
please be aware:nobodd-shdoes not perform file-locking [1]. therefore it is possible β but definitely not advisable β to open the same partition in the same image in two parallelnobodd-shprocesses. this is extremely likely to lead to corruption of the FAT file-system if both processes are writing to that partition. and even if one process is read-only and the other is read-write, it's still not safe, because the reading process may read the wrong data depending on what the writing process does. so like. don't π
β¨ EXAMPLES β¨
query the current kernel command line in an image π
$ nobodd-sh cat ~/images/ubuntu-26.04.img:1/current/cmdline.txt
console=serial0,115200 multipath=off dwc_otg.lpm_enable=0 console=tty1 root=LABEL=writable rootfstype=ext4 panic=10 rootwait fixrtc
copy the kernel command line to the local file-system, edit it with sed, and move it back into the image π
$ nobodd-sh cp ~/images/ubuntu-26.04.img:1/current/cmdline.txt ./
$ sed -i -e 's/panic=10/panic=5/' cmdline.txt
$ nobodd-sh mv cmdline.txt ~/images/ubuntu-26.04.img:1/current/
doing the same with the cat -o option with a pipe from sed π
$ nobodd-sh cp ~/images/ubuntu-26.04.img:1/current/cmdline.txt ./
$ sed -i -e 's/panic=10/panic=5/' cmdline.txt | \
nobodd-sh cat -o ~/images/ubuntu-26.04.img:1/current/cmdline.txt
checking the content of the current bootloader assets in the image π¦
$ nobodd-sh ls -l ~/images/ubuntu-26.04.img:/current/
-r--r--r-- 1 root root 32503 Oct 23 13:41 bcm2710-rpi-2-b.dtb
-r--r--r-- 1 root root 35330 Oct 23 13:41 bcm2710-rpi-3-b-plus.dtb
-r--r--r-- 1 root root 34695 Oct 23 13:41 bcm2710-rpi-3-b.dtb
-r--r--r-- 1 root root 33684 Oct 23 13:41 bcm2710-rpi-cm0.dtb
-r--r--r-- 1 root root 32266 Oct 23 13:41 bcm2710-rpi-cm3.dtb
-r--r--r-- 1 root root 33672 Oct 23 13:41 bcm2710-rpi-zero-2-w.dtb
-r--r--r-- 1 root root 33672 Oct 23 13:41 bcm2710-rpi-zero-2.dtb
-r--r--r-- 1 root root 56289 Oct 23 13:41 bcm2711-rpi-4-b.dtb
-r--r--r-- 1 root root 56293 Oct 23 13:41 bcm2711-rpi-400.dtb
-r--r--r-- 1 root root 39913 Oct 23 13:41 bcm2711-rpi-cm4-io.dtb
-r--r--r-- 1 root root 56810 Oct 23 13:41 bcm2711-rpi-cm4.dtb
-r--r--r-- 1 root root 53510 Oct 23 13:41 bcm2711-rpi-cm4s.dtb
-r--r--r-- 1 root root 78638 Oct 23 13:41 bcm2712-d-rpi-5-b.dtb
-r--r--r-- 1 root root 78642 Oct 23 13:41 bcm2712-rpi-5-b.dtb
-r--r--r-- 1 root root 78598 Oct 23 13:41 bcm2712-rpi-500.dtb
-r--r--r-- 1 root root 79591 Oct 23 13:41 bcm2712-rpi-cm5-cm4io.dtb
-r--r--r-- 1 root root 79657 Oct 23 13:41 bcm2712-rpi-cm5-cm5io.dtb
-r--r--r-- 1 root root 79632 Oct 23 13:41 bcm2712-rpi-cm5l-cm4io.dtb
-r--r--r-- 1 root root 79698 Oct 23 13:41 bcm2712-rpi-cm5l-cm5io.dtb
-r--r--r-- 1 root root 78646 Oct 23 13:41 bcm2712d0-rpi-5-b.dtb
-r--r--r-- 1 root root 132 Oct 23 13:41 cmdline.txt
-r--r--r-- 1 root root 78601311 Oct 23 13:41 initrd.img
dr-xr-xr-x 2 root root 0 Jan 1 1970 overlays
-r--r--r-- 1 root root 5 Oct 23 13:41 state
-r--r--r-- 1 root root 13783000 Oct 23 13:41 vmlinuz
β¨ SEE ALSO β¨
go read these next, bestie π
nobodd-prep(1)<https://manpages.ubuntu.com/manpages/noble/en/man1/nobodd-prep.1.html>nobodd-tftpd(1)<https://manpages.ubuntu.com/manpages/noble/en/man1/nobodd-tftpd.1.html>nbd-server(1)<https://manpages.ubuntu.com/manpages/noble/en/man1/nbd-server.1.html>
β¨ BUGS β¨
please report bugs at: <https://github.com/waveform80/nobodd/issues> π (do it, they wanna know)
[1] for all the reasons that one should generally avoid file-locking on Linux; see On the Brokenness of File Locking <https://0pointer.de/blog/projects/locking.html> for more
β¨ Author β¨
Dave Jones π
β¨ Copyright β¨
2023-2026 Dave Jones
and that's a wrap, babe π«Ά this was version 0.5, dated Feb 19, 2026, and yeah β the page header up top said NOBODD-SH(1) with nobodd as the manual, and the footer said exactly the same thing on the other end. slay, go run some commands π β¨
π¦ where this page comes from
- ubuntu resolute: nobodd-tools 0.5-0ubuntu2 Β· GPL-3.0-only
- ubuntu stonking: nobodd-tools 0.5-0ubuntu2 Β· GPL-3.0-only
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms