A veces, mientras accedo a los distintos directorios, sucede la mayoría de las veces que recuerdo los nombres o al menos parte de los nombres de un directorio en nuestro sistema Linux. Pero algunos de los directorios se nombran comenzando con las mayúsculas del primer carácter o uno de los caracteres en el medio del nombre Mayúscula.
¿Alguien puede sugerir cómo puedo hacer que los argumentos que siguen al cd
caso del comando sean INSENSIBLES, de modo que si lo ejecuto cd BackupDirectory
o cd backupdirectory
podría ingresar el nombre del directorio BackupDirectory?
Por supuesto, no quiero arruinar las cosas para otros usuarios, así que si lo anterior es posible, ¿es posible que el cambio se pueda aplicar solo a la sesión que estoy usando y no afecte a otros usuarios?
Ok, lo probé set completion-ignore-case
pero esto simplemente no funciona. Sólo ayuda en que si escribo cd b
y Tab, o Esc Escse llena el nombre del directorio ignorando el caso. Pero, lo que necesito es que si hago un cd backupdirectory
, simplemente ignora el caso y entra BackupDirectory
por sí solo.
fuente
backUP
ybackUp
, ¿cómobackup
no a qué directorio desea ir?mc
o cambiar a una GUI? Hace la vida mucho más fácil.Respuestas:
La habilitación
cdspell
ayudará a:De la
man
página:fuente
Golpetazo
set completion-ignore-case on
en~/.inputrc
(obind 'set completion-ignore-case on'
en~/.bashrc
) sería mi recomendación. Si va a escribir el nombre completo, ¿por qué rechazar unas pocas pulsaciones de la Shifttecla?Pero si realmente lo quiere, aquí hay una envoltura
cd
que intenta una coincidencia exacta, y si no hay ninguna, busca una coincidencia entre mayúsculas y minúsculas y la realiza si es única. Utiliza lanocaseglob
opción de shell para el globbing que no distingue entre mayúsculas y minúsculas, y convierte el argumento en un glob al agregarlo@()
(que no coincide con nada y requiereextglob
). Laextglob
opción tiene que estar activada cuando se define la función, de lo contrario bash ni siquiera puede analizarla. Esta función no es compatibleCDPATH
.Ksh
Mientras estoy en eso, aquí hay una función similar para ksh93. La
~(i)
modificación para la coincidencia que no distingue entre mayúsculas y minúsculas parece ser incompatible con el/
sufijo para hacer coincidir solo los directorios (esto puede ser un error en mi versión de ksh). Entonces uso una estrategia diferente, para eliminar los no directorios.Zsh
Finalmente, aquí hay una versión zsh. Nuevamente, permitir la finalización sin distinción entre mayúsculas y minúsculas es probablemente la mejor opción. La siguiente configuración vuelve a ser insensible a mayúsculas y minúsculas si no hay coincidencia exacta de mayúsculas y minúsculas:
Eliminar
''
para mostrar todas las coincidencias entre mayúsculas y minúsculas, incluso si hay una coincidencia exacta entre mayúsculas y minúsculas. Puede configurar esto desde la interfaz del menú decompinstall
.fuente
inputrc
para que funcione. Así:echo "set completion-ignore-case on" >> ~/.inputrc
cd:cd:17: no such file or directory: videos
(Tengo un directorio llamadoVideos
)emulate -L zsh
aemulate -LR zsh
? (Por cierto que acaba de arreglar un error, que debería haber sidoemulate -L zsh
, noemulate zsh
, de lo contrario sería estropear sus opciones de shell.)