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.


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 $

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


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/bug-bash@gnu.org/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
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.