For those of you who would like similar functionality sans learning of your MFU directories, you can do something like
export CDPATH=($HOME/common:$HOME/repos)
You'd have to manually symlink your favorite directories into ~/common, of course.
The directories listed in $CDPATH are made available to `cd` no matter what directory you are in, so if you have ~/common/downloads, you can type `cd downloads` from any directory. Tab-completion works with this too.
Not to downplay autojump -- I just prefer this approach since I explicitly control all the directories I want quick access to, and my `cd` command is deterministic (assuming I name directories to avoid conflicts).
z was inspired by autojump. It has a slightly different philosophy than autojump: while autojump is designed to be so simple that you forget about it after a while, z has more features and is slightly more complex. Using one or the other is mostly a matter of taste :)
I've also found the CTRL-r shortcut quite helpful in Bash. Most of my commonly used directories and commands are near the surface this way, it works on almost everything without installation, and I'm usually in a directory where those commands would make sense.
Although, it doesn't really help if you need to jump to an obscure part of the filesystem.
Back in the 90's I used 4DOS on MS-DOS, which had a similar concept of 'jumping' to a directory by just typing the last part of a directory path. You had to pre-index your directory structure with 'CDD /S', though. And it didn't remember your favourite directories to give them priority.
it doesn't learn, but rather you create bookmarks with simple aliases. The nicest part is that it's set up so you can tab-complete bookmarks and subsequent subdirs.
I wrote my own utility which works a bit differently. Instead of calling cd, I call a different function which changes to a directory stored by an alias in a DBM database. Any time I'm in a directory that I know I'll want to revisit frequently, I call another function to save the current directory (by alias) to the database. Another shell function lists the current aliases in the database and what directories they point to.
It's a bit of a hack (a combo of Perl and bash scripting) -- something anyone on HN could probably put together in no time, but it does the job. I've been using it for 2 or 3 years now, and I find it to be extremely useful and a decent time saver.
It runs for me, but I have no tab completion. Puzzling.
Edit: scratch that. I have tab completion of things in the database, but not of paths! Much, much less usable than cd for going to places I haven't been before, which is probably half of my usage. Oh well.
I tried autojump (and/or something like it) for a short while, but essentially never found that I never remembered to use it/them. cd, cd -, tab completion, symlinks and screen/tmux are enough for me.
Hm. Is it just me, or does it feel like describing a path with plain ol' tab completion isn't really bothersome, impractical or "a lot of keystrokes"? And since when weren't aliases good enough? I definitely see the use for this under Windows, but in a real nix shell? -shrug-
Tab completion is very painful on some of the Unix systems that I have access to. NFS can randomly hang making tab completion very unresponsive. I would have thought that, these days, this shouldn't happen. But I've experienced crapness over NFS at more than one place where I have no control over the network. As I result, I have had to resort to using fancy tools like the one posted.
I guess it all depends on the usage you make of the command line. I work with a lot of data in directories that do not have nice names (spaces, long sequences of numbers...), so autojump is very useful for me.
In any case I'd recommend to try it for a bit, I've seen quite a lot of people changing their minds after using it for a couple days. Sure, you can emulate the functionality with aliases and so on, but this is fully automatic, and after a few days, you might very well be thinking, "why didn't I use this all along?" :)
[+] [-] keyist|16 years ago|reply
export CDPATH=($HOME/common:$HOME/repos)
You'd have to manually symlink your favorite directories into ~/common, of course.
The directories listed in $CDPATH are made available to `cd` no matter what directory you are in, so if you have ~/common/downloads, you can type `cd downloads` from any directory. Tab-completion works with this too.
Not to downplay autojump -- I just prefer this approach since I explicitly control all the directories I want quick access to, and my `cd` command is deterministic (assuming I name directories to avoid conflicts).
[+] [-] dmd|16 years ago|reply
Discussed on reddit here: http://www.reddit.com/r/programming/comments/7y4ap/where_the...
[+] [-] joelthelion|16 years ago|reply
[+] [-] sunkencity|16 years ago|reply
[+] [-] akkartik|16 years ago|reply
Update: Ah, I knew there was another j a year ago: http://news.ycombinator.com/item?id=485053. (And I pushed my version there as well :/)
[+] [-] amix|16 years ago|reply
* Makes it possible to jump to a relative path (e.g. `j ../models`)
* Possible to specify multiple patterns, e.g. `j my_project static`
http://github.com/amix/autojump/commit/f5fff8d8c0c6e8ce676aa...
[+] [-] weilawei|16 years ago|reply
Although, it doesn't really help if you need to jump to an obscure part of the filesystem.
[+] [-] Luyt|16 years ago|reply
[+] [-] shabble|16 years ago|reply
it doesn't learn, but rather you create bookmarks with simple aliases. The nicest part is that it's set up so you can tab-complete bookmarks and subsequent subdirs.
[+] [-] joelthelion|16 years ago|reply
[+] [-] phil|16 years ago|reply
A few extra keystrokes is a good trade to get predictability.
[+] [-] nocman|16 years ago|reply
It's a bit of a hack (a combo of Perl and bash scripting) -- something anyone on HN could probably put together in no time, but it does the job. I've been using it for 2 or 3 years now, and I find it to be extremely useful and a decent time saver.
[+] [-] unknown|16 years ago|reply
[deleted]
[+] [-] christefano|16 years ago|reply
[+] [-] holygoat|16 years ago|reply
Edit: scratch that. I have tab completion of things in the database, but not of paths! Much, much less usable than cd for going to places I haven't been before, which is probably half of my usage. Oh well.
[+] [-] ciudilo|16 years ago|reply
[+] [-] amix|16 years ago|reply
Could it be because you haven't trained the database?
[+] [-] joelthelion|16 years ago|reply
[+] [-] Pistos2|16 years ago|reply
[+] [-] chronomex|16 years ago|reply
[+] [-] wyclif|16 years ago|reply
[+] [-] hackermom|16 years ago|reply
[+] [-] imurray|16 years ago|reply
[+] [-] joelthelion|16 years ago|reply
In any case I'd recommend to try it for a bit, I've seen quite a lot of people changing their minds after using it for a couple days. Sure, you can emulate the functionality with aliases and so on, but this is fully automatic, and after a few days, you might very well be thinking, "why didn't I use this all along?" :)
[+] [-] jodrellblank|16 years ago|reply
[+] [-] ibarrac|16 years ago|reply