J: an alternative to cd that learns where you spend time
github.com
github.com
Kind of but not really in a similar vein: I have 'sd' aliased to a small script that goes to the 'next interesting directory', where an 'interesting directory' is one with a visible non-directory or more than one sub-directory. So, for instance, if you're sitting at foo, and underneath you is bar/baz/bat/bit.txt, 'sd bar' will bring you all the way down to bat, and then 'sd ..' will pull you all the way back up to the previous interesting directory.
Just to keep from getting lost, it does a pwd when it gets where it's going, and because typing ls after cd had burned itself into my muscle memory, it goes ahead and does that, too.
It's a small thing, but I really like it for hopping around source trees in languages that use directories to denote package structure.
And a small bash function (since you can only change your shell's pwd from the shell itself):
http://github.com/obra/sd/tree/master
Yay for two-letter identifiers. ;)
If you want something you can simply add to .bashrc, here are some bash functions to also help jump around to directories you want: http://mattie.posterous.com/some-handy-bash-commands
There's a link there for the "up" command (taking you to some directory higher in your path with that name) and also for "down" (similar downward) and "cdd" which just does a rapid use of locate to find the first directory that matches.
At work, I have the interesting heads of our source tree in CDPATH, so I can get to most directories I care about by typing their short names.
For instance http://www.macosxhints.com/article.php?story=200503181431142...
With CDPATH, I index it all at the beginning. If I find a new major head in my directory tree, I just add it.
I know where .bashrc is, but simply pasting it into the file seems like .. the wrong way to do it. Couldn't really find an answer on Google
source .bashrc
or, equivalently . .bashrc
which runs .bashrc in the current shell, as opposed to in a forked subshell as happens if you did ./.bashrc ; and hence the new functions/aliases/variable settings you've put in .bashrc are now available in the current shell (as opposed to only being visible in a forked subshell and disappearing when it exits). . $HOME/.bash/j.sh
(Change that path to point to wherever j.sh is, though ~/.bash is probably a good place for it.)second one, simple - effective
But this is nice and self-contained.
complete -o dirnames -o filenames -C "j --complete" cp mv
or something similar.