Alterar diretório sem digitar cd?

17

É possível fazer o diretório de alteração do bash na linha de comando simplesmente digitando esse diretório sem nenhum comando como cd?

Por exemplo, é possível em vez de escrever isso:

$ cd /tmp

Eu só quero escrever apenas isso:

$ /tmp

Em outras palavras, se eu chamar o diretório como um aplicativo, desejo defini-lo como um diretório funcional.

Vladimir
fonte
9
Precisa ser festança? zsh pode fazer isso ( autocd)
Michael Mrozek
1
Não, não, não, eu preciso de uma solução em bash =) Esse é o principal requisito como em algumas instituições científicas na Rússia frio frio lá são relíquias apenas com o bash como uma linguagem de script;)
Vladimir
A quantidade de digitação salva ao não digitar "cd" provavelmente será compensada por não haver preenchimento automático padrão inteligente para caminhos. Além disso, esse método de alterar diretórios, com a mesma freqüência que se altera, é um pouco assustador, pois a execução acidental de um programa (potencialmente malicioso) (que você acha que é um diretório) se torna muito provável.
22613 Michael
Funciona para mim no ZSH
ishidex2 23/02

Respostas:

36

No bash também há autocdopção. Você pode habilitá-lo usando shopt -s autocd:

pbm@tauri ~ $ shopt -s autocd
pbm@tauri ~ $ django # Now just type this
cd ./django    <- it's done automatically
pbm@tauri ~/django $
pbm
fonte
2
Meu novo recurso favorito no bash 4 para uso interativo. (Para scripts, é **.) Infelizmente, não está nas versões mais antigas.
Gilles 'SO- stop be evil'
0

Eu imagino que sim. Existe algum mecanismo abrangente que o Ubuntu possui. Quando você executa um comando que não está no sistema, às vezes diz:

Nenhum comando 'foo' encontrado você quis dizer: ...

Aposto que você pode seqüestrar o que quer que seja e adicionar uma verificação para ver se é dado um diretório. Provavelmente vale a pena postar outra pergunta, perguntando o que faz isso.

EDIT: Encontrei: https://wiki.ubuntu.com/CommandNotFoundMagic

Shawn J. Goff
fonte
Sim, isso é o que se poderia ingenuamente esperar - no entanto, bash é mais esperto do que nós e nem sequer chamar command_not_found_handle para diretórios :(
Thomas Themel
Após alguma pesquisa, encontrei um pequeno patch ( mail-archive.com/[email protected]/msg06761.html ) que poderia corrigi-lo. Infelizmente, este patch não é oficial e, portanto, não pode ser usado com uma versão padrão do bash fornecida com o ubuntu.
Vladimir