¿Cambiar directorio sin escribir cd?

17

¿Es posible hacer bash change directory en la línea de comandos simplemente escribiendo ese directorio sin ningún comando como cd?

Por ejemplo, es posible en lugar de escribir esto:

$ cd /tmp

Solo quiero escribir solo esto:

$ /tmp

En otras palabras, si llamo al directorio como una aplicación, entonces quiero establecer ese directorio como uno que funcione.

Vladimir
fuente
9
¿Tiene que ser bash? zsh puede hacerlo ( autocd)
Michael Mrozek
1
No, no, no, necesito una solución en bash =) Ese es el requisito principal, ya que en algunas instituciones científicas en la fría y fría Rusia hay reliquias con solo bash como lenguaje de script;)
Vladimir
La cantidad de escritura guardada al no escribir "cd" probablemente se compensará al no tener autocompletado inteligente predeterminado para las rutas. Además, este método de cambiar los directorios, tan a menudo como uno cambia los directorios, da un poco de miedo porque es muy probable que ejecute accidentalmente un programa (potencialmente malicioso) (que cree que es un directorio).
Michael
A mí me funciona en ZSH
ishidex2

Respuestas:

36

En bash también hay autocdopción. Puede habilitarlo 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
fuente
2
Mi nueva característica favorita en bash 4 para uso interactivo. (Para las secuencias de comandos, es **.) Desafortunadamente, no está en versiones anteriores.
Gilles 'SO- deja de ser malvado'
0

Me lo imagino. Hay algún mecanismo general que Ubuntu tiene. Cuando ejecuta un comando que no está en el sistema, a veces dice:

No se encontró el comando 'foo' que quisiste decir: ...

Apuesto a que puedes secuestrar lo que sea y agregar un cheque para ver si se le ha dado un directorio. Probablemente valga la pena publicar otra pregunta preguntando qué hace eso.

EDITAR: Lo encontré: https://wiki.ubuntu.com/CommandNotFoundMagic

Shawn J. Goff
fuente
Sí, eso es lo que uno esperaría ingenuamente; sin embargo, bash es más inteligente que nosotros y ni siquiera llama a command_not_found_handle para directorios :(
Thomas Themel
Después de algunas investigaciones, encontré un pequeño parche ( mail-archive.com/[email protected]/msg06761.html ) que podría solucionarlo. Desafortunadamente, este parche no es oficial, por lo que no podría usarse con una versión estándar de bash provista con ubuntu.
Vladimir el