Comment by revicon
1 year ago
I have a bunch of little scripts and aliases I've written over the years, but none are used more than these...
alias ..='cd ..'
alias ...='cd ../..'
alias ....='cd ../../..'
alias .....='cd ../../../..'
alias ......='cd ../../../../..'
alias .......='cd ../../../../../..'
In fish, I have an abbreviation that automatically expands double dots into ../ so that you can just spam double dots and visually see how far you're going.
I used to do this, but unary kind of sucks after 3; So maybe others might like this better before their fingers get trained:
Of course, what I actually have been doing since the early 90s is realize that a single "." with no-args is normally illegal and people "cd" soooo much more often than sourcing script definitions. So, I hijack that to save one "." in the first 3 cases and then take a number for the general case.
and as per the comment this even works in lowly dash, but needs a slight workaround. bash can just do a .() and ..() shell function as with the zsh.
I need this *so* often that I programmed my shell to execute 'cd ..' every time I press KP/ i.e. '/' on the keypad, without having to hit Return.
Other single-key bindings I use often are:
KP* executes 'ls'
KP- executes 'cd -'
KP+ executes 'make -j `nproc`'
How? Readline macros?
Literally with my own shell: https://github.com/cosmos72/schemesh
up() { local d="" for ((i=1; i<=$1; i++)); do d="../$d" done cd "$d" }
up 2, up 3 etc.
fish lets you cd to a folder without 'cd' although you still need the slashes. I use it all the time.
zsh also does, with `setopt autocd` https://zsh.sourceforge.io/Intro/intro_16.html
I have setup a shortcut: alt+. to run cd.., it's pretty cool.
I also aliased - to run cd -
but alt-. in bash is used for pasting the last argument to the previous command into the current one.
Good point, when working with keybindings, you'll inevitably end up overriding built-ins. I see it as a trade-off, between something I don't know of (and wouldn't use) and something I find useful. Works for me :)
2 replies →
Does zsh support this out-of-the-box? Because I definitely never had to setup any of these kinds of aliases but have been using this shorthand dot notation for years.
It's an oh-my-zsh thing.
Yes it does.
Not on my Mac.
alias cdtop=’cd $(git rev-parse --show-toplevel)’