Existe uma maneira de acessar qualquer diretório diretamente de qualquer outro diretório?

14

Existe uma maneira de acessar qualquer diretório diretamente de qualquer outro diretório? Por exemplo, digamos que eu esteja na raiz e queria ir diretamente para o currentProject sem fazer :

cd dropbox/dev/currentProject



-root
  -dropbox
     -dev
        -currentProject

Existe maneira de fazer isso?

abajur
fonte

Respostas:

21

Você pode usar algo como salto automático . O salto automático permite saltar rapidamente para os diretórios visitados com frequência com o jcomando

Por exemplo, depois de cdentrar no currentProjectdiretório algumas vezes, você pode pular para ele assim:

j currentProject

Você pode até usar apenas parte do nome do diretório. Então você poderia fazer:

j current

Para cddentro currentProject.

Wuffers
fonte
8

Você também pode adicionar alguns diretórios comuns ao seu $ CDPATH

export CDPATH=$HOME

Isso, por exemplo, permite que você entre cdem qualquer diretório da sua pasta pessoal de qualquer lugar do sistema.

Mais

Yab
fonte
7

Isso não responde diretamente à sua pergunta, mas se estou deduzindo corretamente que você estará pulando bastante entre diretórios, você poderá usar um multiplexador de terminal como o GNU Screen para manter os diferentes diretórios abertos em diferentes janelas e simplesmente alterne entre eles conforme necessário. Eu pessoalmente uso o Byobu , que adiciona algumas funcionalidades na parte superior da tela.

Abe Voelker
fonte
1
Veja também: tmux .
Annika Backstrom
5

Você pode definir um alias no seu perfil do bash. Basicamente, isso permite abreviar um comando com uma palavra. Você pode definir currentProject para realmente apontar para / dropbox / dev / currentProject

n0pe
fonte
4

Você pode criar links simbólicos no diretório inicial para onde deseja ir.

ln -s /dropbox/dev/currentProject ~/currentProject

Dessa forma, você ainda está usando o cd, mas não precisa se lembrar do caminho completo. Apenas use:

cd ~/currentProject

Quando você parar de usar o link, basta excluí-lo.

rm ~/currentProject
Chris Ting
fonte
0

Como o Wuffers mencionou acima, o autojump que pode fazer isso por você. Ele armazena um banco de dados de diretórios visitados anteriormente e permite que você use um comando como j <a few letters in the directory path>mover para esse diretório. Há um comando adicional para o salto automático nomeado jcque deve atender aos seus requisitos. jcpermite pular para um subdiretório visitado anteriormente do diretório de trabalho atual. Portanto, você só precisa visitar o diretório uma vez para que isso funcione até limpar o banco de dados de salto automático. Além disso, você também pode adicioná-lo diretamente com autojump --add DIR(talvez criando a lista de adição a partir de uma lista de árvores de diretórios, se necessário).

Snap Shot
fonte
0

No bash e * csh, existem os comandos internos 'pushd' e 'popd' que permitem enviar diretórios para uma pilha Last In First Out (with pushd [directory]) e depois mudar rapidamente para o diretório superior da pilha usando 'popd'. Portanto, dependendo de como você carregou a pilha, você poderá navegar rapidamente entre os diretórios adequadamente para que isso funcione.

Nevin Williams
fonte