jdalias: An Aliased Directory Navigation Utility
This program is a little utility that has made my life in bash so much easier that I just had to share it. I do not pretend that it is perfect (I can think of dozens of improvements), nor comprehensive (I wish I could use it to manage paths), nor even original (I came across the "go" command on the web, and its aliasing feature was the inspiration behind this program). However, it does its job well enough for me, and as I am releasing it under the GNU GPL 2 License, you are free to do what you want to get it to work for you as well. So, what exactly does it do? In a nutshell, it manages a list of directory aliases: short strings that serve as stand-ins for long, deep path specifications. With a simple command ("jd"), you can jump to anyone one of these aliased paths.
Requirements
Any POSIX shell environment with Python 2.4 or greater installed.
.bashrc" in your home
directory (i.e., "~/.bashrc")
as its configuration file. Obviously, this not only
far from universally true, it cannot even be said to
be generally true. There are dozens of other
conventions (for example,
"~/.tshrc", or
"~/.cshrc"). I've been meaning
to modify the code to behave smarter and search for an
appropriate configuration file, but I have not. I
might in the next release. The workaround, however, is
fairly simply, and is detailed below.
Download
You can download the package from its SourceForge site:
Installation
Installation is very straightforward. The script has the ability to "bootstrap" itself into installation. Simply execute the script with the "--install" argument:
$ python jdalias.py --install
You do not need root permissions or anything like that. The
scripts basically creates a directory called
".jdalias" in your home directory,
writes a copy of itself to it, creates a new shell script
file there, and then modifies your
"~/.bashrc" file to source the shell
script.
As noted above, if your shell environment does not rely on
"~/.bashrc" as its configuration
file, after running the installation option, you will have
to modify the appropriate file by sourcing the shell script
using the following line:
$ . ~/.jdalias/jd.sh
For example, if your shell environment uses
"~/.tshrc" as its resource/configuration file, the
following command executed at the shell prompt should do the
trick:
$ echo " . ~/.jdalias/jd.sh" >> ~/.tshrc
Make sure you use two angle brackets in the above command, as using just one will overwrite your configuration file!
Usage
To begin using the program, simply go to a directory that you want to
alias ("bookmark", "tag", etc."), and type:
$ jd -a
Or:
$ jd --add
Where "ALIAS" is a shortcut that is short enough
to be quick and easy to type, yet meaningful enough so that
you can remember it. For example:
$ cd ~/Development/Python/Projects/Utilities/MyProject/trunk $ jd -a myproj
Jumping to an Aliased Directory
From now on, no matter where you are in the filesystem, you
can always get to
"~/Development/Python/Projects/Utilities/MyProject/trunk"
by typing:
$ jd myproj
Listing Aliases
To see a list of shortcuts that you have defined, you would type:
$ jd -l
Or:
$ jd --list
For that matter, if you type in "jd" without
arguments, you will also be shown a list of defined
aliases.
Autocompletion
I've also incorporated bash autocompletion, and if you type
"jd", space, and then
To remove a defined alias, use the "-r" option:
$ jd -r myproj
A Shortcut to an Alias
You do not need to specify the full alias to refer to it: you can use just enough characters to specify it ambigiously, or use its numerical index.
For example, assuming the following is your alias list:
$ jd -l 1: admin /home/jeet/Administration 2: bin /home/jeet/bin 3: proj11 /home/jeet/Documents/Projects/Proj11 4: proj22 /home/jeet/Documents/Projects/Proj22 5: proj33 /home/jeet/Documents/Projects/Proj33 6: refs /home/jeet/A/Very/Long/Path/To/Some/References
Then:
- "
jd a" will take you directly to "/home/jeet/Administration" - "
jd b" will take you to "/home/jeet/bin" - "
jd r" will take you to "/home/jeet/A/VeryLong/Path/To/Some/References"
However, since "jd p" cannot resolve
an alias unambiguously, you would need to type in the alias
at least to "proj1",
"proj2", or
"proj3" for the alias manager to know
which alias you are referring to.
Using the Defintion Index Instead of the Alias
You can also use the numerical index of an alias definition as a stand in for the alias. For example, given the alias definitions above:
- "
jd 1" will take you to "/home/jeet/Administration" - "
jd 3" will take you to "/home/jeet/Documents/Projects/Proj11" - "
jd 6" will take you to "/home/jeet/A/Very/Long/Path/To/Some/References"
Overwriting Aliases
The program will not complain if you assign two or more aliases to the same path, but if you try an redefine an existing alias, you will be prompted for confirmation.
The Alias File
The aliases are maintained in a file,
"jdalias.defs" in the
"~/.jdalias" directory. Deleting this
file will clear all the aliases. You can also modify the
file with a text editor if you want more control over the
alias definitions or the ways that you can edit them.
More Help
Other than that, there is not much more to
it. "jd --help" gives you a list of
all the options that are available to you.
Uninstalling
There is no automated uninstall procedure, but uninstallation is pretty straightforward. You have to do two things:
-
Edit your shell resource file ("~/.bashrc", or whichever file your shell uses) to remove the line(s) in which the jdalias shell script is sourced:
# source jdalias wrapper function . /home/jeet/.jdalias/jd.sh
-
Delete the jdalias directory:
$ rm -rf ~/.jdalias/
Copyright, License and Warranty
This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3 of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>.
feed
Comments
0 comments postedPost new comment