Queria saber se existe algum comando * nix (ou script) que permita alterar diretórios para trás para uma pasta que corresponda a um determinado nome.
Por exemplo, fingir pwd
é:
~ / espaço de trabalho / proj / subproj / src / main / java
Eu quero digitar algo como:
cd ..proj
e instantaneamente ser cdd de volta para a proj
pasta. (em vez de precisar digitar cd ../../../../
)
PS Ter o preenchimento automático, como eu poderia fazer: cd ..pr<tab>
seria incrível também.
pushd
,popd
edirs
pode ajudá-lo um pouco. Em vez decd
, altere o diretório compushd
e, posteriormente, recupere o diretório desejado com opushd +<num>
qual gira a pilha (dirs
gera a pilha de diretórios para você). Para remover diretórios da pilha, usepopd
.Respostas:
Não como tal, não, mas aqui estão alguns truques úteis.
Use
cd -
. Isso o levará ao seu diretório anterior.Use
pushd
:Use a
CDPATH
variável Isso permite que você use o Tabpreenchimento automático de nomes de diretório de qualquer lugar, desde que esses diretórios estejam definidosCDPATH
. Por exemplo, digamos que eu tenha um diretório nomeado~/foo
com 4 subdiretórios:Agora, se eu estiver no
~/
diretório, digitandodir
e Tabnão será preenchido automaticamente porque eles estão abaixo~/foo
. Mas será se eu adicionar~/foo
aCDPATH
:Use uma função que pesquise nos diretórios pai para onde você deseja ir. Basta adicionar estas linhas ao seu
~/.bashrc
e, em seguida, executarsource ~/.bashrc
ou simplesmente abrir um novo terminal:Agora você poderá executar
pcd baz
e será movido para../../../baz
. A função encontrará o 1º diretório nomeadobaz
que é um subdiretório de qualquer um dos seus diretórios atuais.RESSALVAS:
~/foo/bar/baz/
,pcd foo
o moverá para,../../foo
mas não encontrará../bar/foo
se esse diretório existe.fonte
find
todos os tipos de truques. Só não vale a pena, a menos que o OP especifique exatamente o que eles precisam. Idealmente, você seria apresentado com escolhas entre../foo/baz
e../../baz
etc. Isso é mais esforço do que eu estou disposto a gastar agora embora :)