Shells

Loopback mountin' a specific partition inside a disk image

Loopback mounts are cool as heck. You can take a file containing an image of a partition and mount on top of your regular filesystem. But what if you have a file containing an entire disk image rather than just an image of a single partition? It's common to deal with such files when dealing with User Mode Linux (UML) root filesystems.

Well, you can still do it. It turns out that losetup and hence mount which uses losetup to do loopback mounting, allow you to specify an offset option to specify the starting offset into the file from which to read. Now the only trick is to use fdisk to figure out where the partitions are:

ls -h

I've been using Linux for years, but I just realized yesterday that ls has a -h option to display human-readable sizes. I've always used -h with du, but I never knew that ls had it too.

You learn something new everyday!

Improving touch

I've sometimes wished that the UNIX touch command had the same -p option as mkdir. With a little bit of scripting, it can:

#!/bin/sh

mkdir="/bin/mkdir"
touch="/usr/bin/touch"

for arg in $*; do
    if [ "$arg" = "-p" ]; then
        opt_p=true
        continue
    fi
    if [ "$opt_p" = "true" ]; then
        $mkdir -p $(dirname $arg) && $touch $arg
    else
        $touch $arg
    fi
done