Hacker Newsnew | past | comments | ask | show | jobs | submitlogin
J: an alternative to cd that learns where you spend time (github.com/rupa)
55 points by burke on Feb 17, 2009 | hide | past | favorite | 23 comments


This 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.


Post like you just did should have a mandatory link to the code :)


There's a python portion: http://pastebin.com/f16aae31d

And a small bash function (since you can only change your shell's pwd from the shell itself):

http://pastebin.com/f5d93d12a


Thanks!


The name "sd" conflicts with this, however:

http://github.com/obra/sd/tree/master

Yay for two-letter identifiers. ;)


It's just a bash function, you can name it anything you want, and the tool you linked is hardly standard.


For any zsh users out there, I made a couple changes so it works in zsh: http://github.com/burke/j


Perfect, that's just what I was looking for. Thanks!


Very 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

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.


why 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=200503181431142...


Because you don't have to teach it, it just learns.


With 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.


It would be nice if it could look through .bash_history when it's first run, or something.


Ok, 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


Add 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.)


Thanks so much! Makes sense


I 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).


Now it's clearer, thank you! :)



My version: http://akkartik.name/bash.html#cd

But this is nice and self-contained.


awesome. huge timesaver. wish it could for for cp paths too


you 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.


I prefer the proggit headline: "Where the fuck has this been for the last 30 years? A cd command that learns."




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: