shell - aurman - zsh tweaks
cd-1,-2,-3 etc en el shell Z (2)
Si usa pushd
lugar de cd
, puede listar los directorios con dirs
y cd al directorio antiguo con popd
. También puede configurar la opción de autopush
para que el cd
comporte como pushd -q
. Aquí hay un ejemplo:
setopt pushdsilent # Omit printing directory stack
setopt autopush # Make cd push directories onto stack
setopt pushdminus # Invert meanings of +N and -N arguments to pushd
mkdir -p 1/2/3/4
cd 1
cd 2
cd 3
cd 4
popd # Go to previous directory (3) and remove it from directory stack
pushd - # Go to previous directory (4)
pushd -2 # Go 2 directories back the directory stack (2)
Tenga en cuenta que pushd
no elimina nada de la pila de directorios, solo lo gira. Ver man zshbuiltins
para más detalles.
¿Cómo configura el shell Z de modo que al escribir cd? Le proporcione una lista de las rutas visitadas anteriormente, y cd -1, -2, -3, etc. lo llevará a los directorios?
Si ha setopt AUTO_PUSHD
en su .zshrc
entonces cd
automáticamente hará un pushd
de cada directorio al que cambie. Tomando el ejemplo de ZyX:
$ setopt AUTO_PUSHD
$ mkdir -p 1/2/3/4
$ cd 1
$ cd 2
$ cd 3
$ cd 4
Puedes ver una lista de los directorios usando dirs
:
$ dirs -v
0 ~/1/2/3/4
1 ~/1/2/3
2 ~/1/2
3 ~/1
4 ~
Para poder completar la lista con tabulación, puede usar los argumentos +
y -
con cd
( <TAB>
significa que presionó la tecla de tabulación):
$ cd +<TAB>
1 -- ~/1/2/3
2 -- ~/1/2
3 -- ~/1
4 -- ~
O al revés:
$ cd -<TAB>
0 -- ~
1 -- ~/1
2 -- ~/1/2
3 -- ~/1/2/3
Luego simplemente selecciona el número para ir a ese directorio:
$ cd +2
$ pwd
~/1/2
Tabula directorios completos
Siempre olvido la secuencia mágica para hacer lo siguiente, así que actualicé la respuesta para explicar esta parte.
El +
y -
solo lo llevarán al directorio, no puede completar la ruta en la pila (es decir, cd -2/<TAB>
no le da nada). Para que esto funcione, puedes usar una tilde ( ~
).
Haz algunos directorios en 3
para mejorar este ejemplo.
$ mkdir 3/foo 3/bar 3/baz
Luego encuentra el directorio en la pila.
$ cd ~+<TAB>
1 -- ~/1/2/3/4
2 -- ~/1/2/3
3 -- ~/1
4 -- ~
A continuación, utilice la tabulación en una entrada.
$ cd ~+2/<TAB>
4/ bar/ baz/ foo/