top | item 5543307

"j" for switching directories - hacking "cd" with python

46 points| joeyespo | 13 years ago |charlesleifer.com | reply

25 comments

order
[+] pajju|13 years ago|reply
Also see fasd: Its the best one out there.

https://github.com/clvv/fasd

+ Fasd (pronounced similar to "fast") is a command-line productivity booster.

+ Fasd offers quick access to files and directories for POSIX shells. It is inspired by tools like autojump, z and v.

+ Fasd keeps track of files and directories you have accessed, so that you can quickly reference them in the command line.

I've been using this tool, nothing comes close this one. Trust me on this. :)

[+] pekk|13 years ago|reply
What is better about it? Why should I trust you on this?
[+] cpa|13 years ago|reply
For a simpler worflow than "j" one can use pushd/popd which are builtin in bash. One can push and pop directories one a stack. It's pretty neat!

$ cd foo1

$ pushd ~/foo2

[do some work]

$ pushd ~/foo3

[do some work]

$ popd

$ pwd

~/foo2

$ popd

$ pwd

~/foo1

[+] cpeterso|13 years ago|reply
You can also:

  $ cd -
to jump to the last directory, like popd without the pushd.

I also alias .. to 'cd ..' and ... to 'cd ../..' (and so on).

[+] izakage|13 years ago|reply
There's also "dirs" to view the directory stack!
[+] SoftwareMaven|13 years ago|reply
pushd without an argument will cycle through the directory stack as well.
[+] logn|13 years ago|reply
I tried a similar thing to replicate Eclipse's 'Open Resource' search functionality while I was coding in Vim.

https://github.com/hollingsworthd/POSIXplorer

You basically enter a search term or regex and it will search recursively down from your current directory to find the file. If >1 results are found it displays a navigable list of files to open, otherwise it immediately loads the file in your $EDITOR (or defaults to vim).

It also can search file contents in addition to a path regex, with all the same functionality to browse and open files.

OP's script looks neat. I think there are all sorts of things we could do to improve cmdline usability.

[+] stevekemp|13 years ago|reply
I've been burned by these kind of tools before, when I started using the CDPATH variable, as supported by bash.

Imagine the situation where you have a bunch of domains stored beneath /home/www. For example "/home/www/example.com" and "/home/www/example.org". (This is common for vhosts with a single prefix).

I decided I was going to get rid of the archived copies beneath /var/backup - so I decide to run "cd /var/backup; cd example.com; rm -rf *". Because of the path-searching I ended up at my live location, not my (obsolete) backup.

Since then I've always decided to navigate manually.

[+] jgross206|13 years ago|reply
A very, very simple cd "hack" I use is (put this in your .bashrc):

function cd() { builtin cd "$*" && ls }

it automatically runs "ls" every time you cd somewhere. I find when I'm using someone elses box or SSH'd in somewhere it's really annoying not to have it.

[+] hk__2|13 years ago|reply
You can also check your most used commands with huffshell (gem install huffshell), it also suggests you some aliases.