During
my initial days as developer, I found myself doing cd to folders which
were deep in the directory structures often having long names. Long
names were not a big problem due to auto completion but remembering
different directory names were a problem. The idea of having aliases for
cd for different directories was dropped even before writing a single
alias as I didn't want to remember the aliases for different
directories. So I wrote two scripts named push.sh and pop.sh. The
working is pretty simple, you go to a directory which need to be
remembered, execute push. The pop script will give a list of remembered
directories and based on the choice will take you to the selected
directory. I hope you may find this useful. Here are the scripts:
Save scripts in a convenient location say ~/bin. The pop.sh script need to run in the current shell the cd to work correctly. This can be either be done by preceding the pop.sh with a dot (not very convenient) or creating an alias which will run the script in the current shell as follows
alias pop='. ~/bin/pop.sh'
alias push='~/bin/push.sh' # Put these aliases in the .bashrc or .profile
Hope you may find it useful. Share and enjoy!*
* "Share and Enjoy" is the slogan of the Sirius Cybernetics Corporation ;)
[prime@ford bin]$ cat push.sh
#! /bin/bash
lines_to_keep=9
data_file=~/.dir.dat
tmp_file=~/.dir.dat.$$
tail -"$lines_to_keep" $data_file > $tmp_file
mv $tmp_file $data_file
cur_dir=`pwd`
echo $cur_dir >> $data_file
[prime@ford bin]$ cat pop.sh
#! /bin/bash
lines_to_keep=9
data_file=~/.dir.dat
tail -"$lines_to_keep" $data_file |nl
echo -e "Choice please : " \\c
read choice
case "$choice" in
[0-9]*)
;;
*)
echo "Invalid choice"
return 0
;;
esac
dest_dir=`tail -"$lines_to_keep" $data_file | head -$choice |tail -1`
cd $dest_dir
Save scripts in a convenient location say ~/bin. The pop.sh script need to run in the current shell the cd to work correctly. This can be either be done by preceding the pop.sh with a dot (not very convenient) or creating an alias which will run the script in the current shell as follows
alias pop='. ~/bin/pop.sh'
alias push='~/bin/push.sh' # Put these aliases in the .bashrc or .profile
Hope you may find it useful. Share and enjoy!*
* "Share and Enjoy" is the slogan of the Sirius Cybernetics Corporation ;)