Live data from Hacker News

Quickly navigate your filesystem from the command line

jeroenjanssens.com

71–80 of 148 posts

Re: Quickly navigate your filesystem from the command line

#71

To have completion with bash you can use this: function _jump { local cur=${COMP_WORDS[COMP_CWORD]} local marks=$(find $MARKPATH -type l -printf "%f\n") COMPREPLY=($(compgen -W '${marks[@]}' -- "$cur")) return 0 } complete -o default -o nospace -F _jump jump Bash completion really needs better docs :-|

Hmmm, this doesn't seem to work in `zsh`. Typing `jump ` suggests everything in the current directory (folders and files). Does anyone here know offhand how autocompletion in `zsh` works?

see my comment at the bottom https://news.ycombinator.com/item?id=6229468

Re: Quickly navigate your filesystem from the command line

#72

For Windows users I have a closely related shameless plug: cdhere navigates your cmd.exe to wherever the current topmost Explorer window is pointed at. It's not the same as the OP's trick, of course, but since you're voluntarily using Windows, I'm going to assume you "live" on the command line less than the average UNIX user, and more on GUI tools such as good old Explorer. https://github.com/eteeselink/cdhere

You can hold shift and right-click in Explorer and select "Open Command Window Here" (at least in Win 7 and 8).

Re: Quickly navigate your filesystem from the command line

#74

For Windows users I have a closely related shameless plug: cdhere navigates your cmd.exe to wherever the current topmost Explorer window is pointed at. It's not the same as the OP's trick, of course, but since you're voluntarily using Windows, I'm going to assume you "live" on the command line less than the average UNIX user, and more on GUI tools such as good old Explorer. https://github.com/eteeselink/cdhere

You can hold shift and right-click in Explorer and select "Open Command Window Here" (at least in Win 7 and 8).

Or even faster: shift + context menu button, then W.

Re: Quickly navigate your filesystem from the command line

#75

I found this is a useful addition to his scripts... I can't live without my tab completion! _jump() { local cur=${COMP_WORDS[COMP_CWORD]} COMPREPLY=( $(compgen -W "$( ls $MARKPATH )" -- $cur) ) } complete -F _jump jump

Cleaner than the other variants here that use "find".

Re: Quickly navigate your filesystem from the command line

#77

Interesting idea. I've the bash built-in "pushd" and "popd" for a long time for similar reasons, but those effectively limit you to treating the history as a stack rather than an arbitrary list.

yeah, it can be annoying that the directory stack sequence keeps changing, which means that sometimes you can't easily re-run commands from your history if you've pushd since you last ran the command e.g., a command like "tar cfz bak.tgz ~3 ~2/subdirectory ~1" would mean something else once you've "pushd +3". I always find it hard to undo my sequence changes to get the stack in the same order as before, so usually en…

I frequent systems where tcsh, for historical reasons, is the default shell, and for all its faults it does have some nice pushd settings that make directory browsing with 'cd +' and 'dirs' very convenient.

I have ported this functionality to Bash: http://thrysoee.dk/pushd/

Re: Quickly navigate your filesystem from the command line

#78
post #74

Earlier quoted context omitted.

You can hold shift and right-click in Explorer and select "Open Command Window Here" (at least in Win 7 and 8).

Or even faster: shift + context menu button, then W.

About the same speed on Windows 8: File -> Open Command Prompt.

Re: Quickly navigate your filesystem from the command line

#79

I set my version up with a -f on the unmark rm so that I don't need to be prompted to remove it. Also added some basic completion for both jump and unmark export MARKPATH=$HOME/.marks function jump { cd -P $MARKPATH/$1 2>/dev/null || echo "No such mark: $1" } function mark { mkdir -p $MARKPATH; ln -s $(pwd) $MARKPATH/$1 } function unmark { rm -if $MARKPATH/$1 } function marks { ls -l $MARKPATH | sed 's/ / /g' | cut -…

I recommend avoiding -f on rm if you can. Make one mistake and it can be painful. In this case think removing the -i from the unmark function will accomplish what you want.

I made something to the OP's system for the same reason of disdain for super deep trees at work. I'll make a gist and edit this post with it in a few minutes.

Edit: https://gist.github.com/desertmonad/6258429

I like the OP's idea of using symbolic links. That makes it more generally useful (i.e. a gui app can use those simple paths too). I may switch over to that.

Re: Quickly navigate your filesystem from the command line

#80

For Windows users I have a closely related shameless plug: cdhere navigates your cmd.exe to wherever the current topmost Explorer window is pointed at. It's not the same as the OP's trick, of course, but since you're voluntarily using Windows, I'm going to assume you "live" on the command line less than the average UNIX user, and more on GUI tools such as good old Explorer. https://github.com/eteeselink/cdhere

I like this.

On Windows you can also get a nice "browse for folder" dialog in batch files with Wfolder [1]. If you replace "cdwhere.exe" in your script (cdhere.cmd) with "wfolder.exe" [2] and put wfolder.exe in the same directory as cdhere.cmd then instead of going to the location open in the topmost Explorer window the "cdhere" command will ask you where to cd, starting at your current location (like so: http://i.imgur.com/3MCzD4b.png).

Edit: Wfolder comes with a script that's analogous to cdhere.cmd.

[1] http://www.horstmuc.de/wcon.htm

[2] I did it in http://pastebin.com/aq0FiKmz.

Post reply on HN