Como complemento ao comentário da sagarchalise:
Está em vigor: link
Deve funcionar em versões mais antigas também.
Eu estava apenas em uma palestra, onde notei o palestrante usando um comando (provavelmente com viés) para pular para uma pasta específica.
Exemplo:
~/code$ j sciproj
~/projects/sciproj2011/$
Isso pareceu bem legal, então comecei a pensar:
Este é um utilitário padrão e, em caso afirmativo, qual é o nome?
Eu tenho duas teorias sobre como isso funciona:
Ele pode criar, excluir e pular para aliases diretamente da linha de comando no estilo do exemplo, sem ter que configurar aliases em um arquivo de configuração ou script ou qualquer outra coisa manualmente.
Ele procura no diretório inicial uma pasta correspondente ao nome e salta para ele.
A segunda opção parece um pouco lenta, no entanto, o primeiro seria o preferido.
Que tal isso?
function j() { for dir in ~/projects/$@*; do if [ -d $dir ]; then cd "$dir"; fi; done ;}
Ele encontra a correspondência mais próxima possível. Então, digamos que eu tenha uma listagem de dir assim:
~/projects/
~/projects/apples/
~/projects/apples-and-pears/
~/projects/cabbage/
j a
corresponderá a ambos os apples*
dirs, mas como apples-and-pears
é o mais tardio, ele irá cd para o último, e é aí que você vai acabar (a falha nessa função). j c
colocará você em ~/projects/cabbage/
.
Batoque em um terminal para testá-lo e quando você estiver feliz, basta plonk-lo no final de ~/.bashrc
.
Edit: Eu também estou brincando fazendo uma variante find
, mas não é tão boa (mais lenta e menos precisa). Sinta-se à vontade para entrar em contato com ele.
function j() { cd $(find ~/projects -maxdepth 1 -type d -name "$@*"); }
Normalmente, você pode usar popd
, pushd
e dirs
para pular entre algumas pastas. Mas no seu caso, é um alias personalizado que você pode definir em seu arquivo ~ / .bash_profile.
No exemplo:
# Change dir via find
# Usage: cdf (dir)
cdf() {
pushd $(find . -name )
}
E então cdf some_dir
vai pular para a pasta ignorando as sub-dirs.
Exemplo ao vivo para pesquisar nomes de pastas exatas (ignorar prompt):
~/$ cdf() { pushd $(find . -name ); }
~/$ mkdir -p ab/cd/ef/gh/ij/kl
~/$ cdf kl
~/ab/cd/ef/gh/ij/kl ~/
~/$ pwd
~/ab/cd/ef/gh/ij/kl
kl$ popd # We're going back to our previous folder.
~/$ pwd
~/
Para um alias semelhante para pastas que contêm um texto parcial:
cdf() { pushd $(find . -name \*\*); }
Exemplo de arquivo .bash_profile .