Comando Linux cd ..

9

Digamos que eu precise fazer muito isso:

cd ../../../../foo/sub1/bar/dest/
cd ../../../../foo2/sub1/bar/dest/
cd ../../../../foo3/sub1/bar/dest/
cd ../../../../foo/sub1/bar/dest/

Existe alguma maneira mais rápida de nem sempre digitar ../../../../tantas vezes? Alguma idéia criativa?

Stan
fonte
2
por que não apenas executar cd ../../../..e acabar com isso?
Red Cricket
8
Você pode desfrutar pushde popdou mesmo cd -.
jscott
1
Se você estiver indo tão longe, talvez faça sentido apenas cd / real / path / you / want dependendo da profundidade das pastas.
Drew Khoury
Isso é muito mais esforço do que vale a pena. Se você estiver movendo entre diretórios, a especificação do caminho completo ou apenas o uso cd -( para ir para o último diretório ) são mais fáceis. Normalmente, alias h="history|grep"para que eu possa usar os atalhos de entrada do histórico. Algo como h foo3, seguido !450de repetir esse comando.
ewwhite
Abra outra janela do terminal e não digite cd ../../../ .. em tudo
Matt

Respostas:

18

A maneira clássica de fazer isso é definir a CDPATHvariável. No seu caso, pode ser definido como .:../../../../ou .:/path/to/the/parent/of/foopara alcançar o efeito desejado. Você pode simplesmente fazer cd foo/sub1/bar/deste chegar onde quiser.

A vantagem disso é que a conclusão da guia cdtambém analisa $CDPATHe funcionará magicamente.

Dennis Kaarsemaker
fonte
9

Você pode usar o autojump, que aprende automaticamente com o comando cd anterior e só precisa especificar uma sequência exclusiva do caminho completo na próxima vez. ex. j foo, j foo1, j foo2

pragnesh
fonte
7

Você pode criar atalhos para esses comandos adicionando aliases no arquivo de configuração do bash (~ / .bashrc ou /etc/bash.bashrc)

alias cdd="cd ../../../../"

Então, quando você digita, cddele executa esse comando.

Jason
fonte
3
Sim, ou function cdd () { cd ../../../../$1/bar/dest ; }, então você pode digitar cdd foo, por exemplo cdd foo2,.
Andrew Schulman
0

Encontrei recentemente https://github.com/rupa/z , que permite saltar para um diretório usado recentemente por regex. Então você pode fazer algo como:

z foo3.*dest

ao invés de:

cd ../../../../foo3/sub1/bar/dest/

(desde que você tenha visitado esse diretório antes e nada mais recente / usado com frequência corresponda a essa expressão regular)

rjmunro
fonte