'cd -' go back to previous directory. Genius! How did I not know this?
http://www.caliban.org/bash/ (Under bash Tips and Tricks)
One other good cd trick:
# Shamelessly stolen from Learning the Bash Shell (3ed), Cameron Newham
# & Bill Rosenblatt
my_cd() {
case "$#" in
0|1)
builtin cd $1
;;
2)
newdir=${PWD//$1/$2}
case "$newdir" in
$PWD)
echo "bash: my_cd: bad substitution" >&2
return 1
;;
*)
builtin cd "$newdir"
;;
esac
;;
*)
echo "bash: my_cd: wrong arg count" 1>&2
return 1
;;
esac
}
The function allows you to do simple search/replace on your current working directory and cd to the replaced version, all in one step. This is a built-in ksh feature, but easy enough to enable in bash. If you have directories with relatively deep nesting and very similar names (e.g. school/2009-2010/compsci1/grades versus school/2010-2011/compsci2/grades), it's a godsend. An example: $ pwd
/Users/telemachus/mmt/2010-2011/compsci2
$ my_cd compsci2 compsci4
$ pwd
/Users/telemachus/mmt/2010-2011/compsci4mv somefile -t /somedir
cd !$ # now you are in /somedir
Repeat this key combo to fetch the last argument from further back in your command history.
I use this all the time (almost as much as tab completion).
shopt -s histverify
then if you type !$<enter> will replace !$ with /somedir but not hit return, so you could then modify it. Then you could do...
mv somefile -t /somedir
vim !$<enter>/somefile
$if Bash
Space: magic-space
$endif
Now the history expansion will be done when 'space' is pressed. [chronomex@gir ~]$ mkdir test1 test2
[chronomex@gir ~]$ cd test2
[chronomex@gir ~/test2]$ pwd
/home/chronomex/test2
[chronomex@gir ~/test2]$ pushd ../test1
~/test1 ~/test2
[chronomex@gir ~/test1]$ pwd
/home/chronomex/test1
[chronomex@gir ~/test1]$ pushd
~/test2 ~/test1
[chronomex@gir ~/test2]$ pwd
/home/chronomex/test2
[chronomex@gir ~/test2]$