4 ms·
J: an alternative to cd that learns where you spend time
- burke 18y agoFor any zsh users out there, I made a couple changes so it works in zsh: http://github.com/burke/j http://github.com/burke/j
- codyrobbins 18y agoPerfect, that's just what I was looking for. Thanks!
- calambrac 18y agoThis is nice. 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.
- brunoqc 18y agoPost like you just did should have a mandatory link to the code :)
- jrockway 18y agoThe name "sd" conflicts with this, however: http://github.com/obra/sd/tree/master http://github.com/obra/sd/tree/master Yay for two-letter identifiers. ;)
- calambrac 18y agoIt's just a bash function, you can name it anything you want, and the tool you linked is hardly standard.
- msg 18y agowhy not use CDPATH? 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=2005031814311425 http://www.macosxhints.com/article.php?story=200503181431142...
- Harkins 18y agoBecause you don't have to teach it, it just learns.
- msg 18y agoWith J I have to visit directories to add them to my index. This ramp-up is annoying. With CDPATH, I index it all at the beginning. If I find a new major head in my directory tree, I just add it.
- doki_pen 18y agoIt would be nice if it could look through .bash_history when it's first run, or something.
- thorax 18y agoVery neat tool. I saw this when it was mentioned on a post I made not long ago. 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 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.
- braindead_in 18y agoawesome. huge timesaver. wish it could for for cp paths too
- lysium 18y agoyou could add a completion for cp commands just like in the last line of j.sh complete -o dirnames -o filenames -C "j --complete" cp mv or something similar.
- akkartik 18y agoMy version: http://akkartik.name/bash.html#cd http://akkartik.name/bash.html#cd But this is nice and self-contained.
- zacharypinter 18y agoI prefer the proggit headline: "Where the fuck has this been for the last 30 years? A cd command that learns."
- bluishgreen 18y agohttp://www.commandlinefu.com/commands/by/senthil http://www.commandlinefu.com/commands/by/senthil second one, simple - effective
- truebosko 18y agoOk, I feel like an idiot. When it says "source this into your .bashrc" what does it mean? 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
- parenthesis 18y agoI think what is referred to is bash's source command: when you've modified your .bashrc and you want the changes to be reflected in your current shell process, you do 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).
- truebosko 18y agoNow it's clearer, thank you! :)
- inky 18y agoAdd a line to the end of your ~/.bashrc file with: . $HOME/.bash/j.sh (Change that path to point to wherever j.sh is, though ~/.bash is probably a good place for it.)
- truebosko 18y agoThanks so much! Makes sense