O tuve esto en algún lugar hace 20 años o soñé con eso.
Básicamente:
Si si tipo blobblob
me sale
blobblob: command not found
Lo suficientemente justo.
Me gustaría que cuando mi shell reciba esos errores, comando no encontrado, verifique si existe un directorio con ese nombre ('blobblob') y si lo hace cd
es a ese directorio.
Estoy seguro de que hay algunas razones para no hacer esto o hacerlo con precaución.
Sin embargo, creo que sería bastante bueno y me gustaría intentarlo para encontrar cómo en algún lugar (¡como aquí!).
No tengo idea de cómo hacer la programación de shell que esto podría implicar.
fuente
shopt -s autocd
en la línea de comando en que funcionó. Ahora puedo comenzar a escribir nombres de directorio y usar autocompletar y luego presionar Intro y el shellcd
en el directorio. Muy guay !cd
no es tan difícil de escribir, y la mayoría de los mecanismos de finalización de pestañas son más inteligentes cuando les das más contexto.autocd
shopt se agregó en bash versión 4. Por lo tanto, no está disponible en macOS (que todavía tiene bash versión 3.xx) a menos que se instale un bash alternativo más nuevo (por ejemplo, a través de homebrew).La utilidad autojump proporciona un mecanismo similar con una lista de directorios más utilizada. Sin embargo, requiere el tedio adicional de escribir,
j
Spacepero esto se compensa adivinando con la mayor frecuencia.Este es el más cercano a DWIM que he usado hasta la fecha.
fuente
Una vez hice un script útil para un propósito similar, con una función fcd para find-n-cd.
Escribe
fcd foo
y pueden suceder 3 cosas:"no such directory " $1
Es similar porque no necesita que escriba la ruta completa, pero ha llamado explícitamente a la función.
Debe utilizar
source
la función (source fcd.sh
|. fcd.sh
) y no puede llamarla como secuencia de comandos, porque decd
lo contrario solo sucedería en el contexto de la secuencia de comandos, y después de terminar, volvería a estar en su directorio de inicio inmediatamente.Como funciona con
locate
, es bastante rápido encontrar directorios (pero no siempre está actualizado).No maneja espacios en blanco en los nombres de directorio con gracia. Si tiene una solución elegante para el problema, sería feliz.
fuente
cd
automáticamente, sin escribir ningún comando. Esta respuesta es más adecuada para la navegación rápida del directorio en la terminal ./etc/bash.bashrc
la hay, en Ubuntu, unafunction command_not_found_handle
que parece como si pudiera ser modificado.Esto también funciona
.. dado que configuró un script cdf.sh personalizado (a continuación) de origen en el shell. Para un directorio como parámetro, este script solo llega al directorio padre para el directorio encontrado. Agregue la siguiente línea en su .bashrc o .zshrc, lo que sea ..
Y agregue este código al archivo ~ / bin / cdf.sh que necesita crear desde cero.
fuente
Pon esto en tu
~/.bashrc
fuente