We’ve been through plenty of fast-directory switchers, like j and j2, or z or popd and pushd, and a lot of others (and there are still more to come 🙄 ). But I don’t recall seeing something like bashmarks before, which lets you give a nickname to your path, and recall it in the future.
bashmarks works as a shell script you can either trigger through your .bashrc file, or source directly as you need it. The git package offers to “install” it to .local/bin, but I found it just as usable in its raw form, sourced with
. bashmarks/bashmarks.sh whenever I felt I wanted it.
Once you’re hooked in, bashmarks gives you about five commands, all single letters that trigger or control nicknames to folders in your system: “s” saves a path, “g” goes to a path, “l” lists the bookmarks, “d” deletes one and “p” prints the path held in a bookmark.
And basically, that’s all.
kmandla@6m47421: /usr/src/nvidia-96.43.23$ l downloads /home/kmandla/downloads home /home/kmandla nvidia /usr/src/nvidia-96.43.23 kmandla@6m47421: /usr/src/nvidia-96.43.23$ g home kmandla@6m47421: ~$ g nvidia kmandla@6m47421: /usr/src/nvidia-96.43.23$
bashmarks saves its data in ~/.sdirs, and I doubt anyone would complain if you wanted to hand-edit that file, and still move seamlessly around your system.
There are two big reasons I enjoy using this. The first is tab completion with bashmarks, which is such an obvious addition that it would be a huge mistake if it hadn’t been included. The difference between
g d[TAB] to get to /home/kmandla/downloads and
cd /h[TAB]/k[TAB]/d[TAB] is enough to make bashmarks a useful tool.
The other reason is more philosophical, I suppose: If I was going to create some sort of “fast directory switching” tool, it would probably work like this. It’s the most obvious solution to me.
I’ve seen a lot of other directory switching tools that use stacks or frequency or priorities to try and analyze and predict where I want to go. bashmarks takes the simple path, lets you assign names, and goes where you tell it. And it does that without compiling intricate binaries, background daemons or gnarled dependencies.
It’s even got a tiny bit of color. 😉
And since I’m feeling generous today, and because it does such a bang-up job, I’m going to give out a K.Mandla gold star to bashmarks: ⭐ Don’t spend it all in one place. 😉 Enjoy!