Parfois, lors de l'accès aux différents répertoires, il m'arrive la plupart du temps de me souvenir des noms ou au moins d'une partie des noms d'un répertoire sous notre système Linux. Mais certains des répertoires sont nommés en commençant par les premiers majuscules des caractères ou l'un des caractères au milieu du nom Majuscule.
Quelqu'un peut-il suggérer comment rendre les arguments suivants cd
insensibles à la casse de commande, de sorte que si j'exécute cd BackupDirectory
ou cd backupdirectory
qu'il puisse entrer le nom de répertoire BackupDirectory.
Bien sûr, je ne veux pas gâcher les choses pour les autres utilisateurs, donc si ce qui précède est possible, est-il possible que le changement puisse être appliqué uniquement à la session que j'utilise et n'affecte pas les autres utilisateurs?
Ok, j'ai essayé set completion-ignore-case
mais ça ne marche pas. Cela aide simplement si je tape cd b
et / Tabou Esc Escs'il remplit le nom du répertoire en ignorant la casse. Mais, ce dont j'ai besoin, c'est que si je fais un cd backupdirectory
, il ignore simplement le cas et entre BackupDirectory
de lui-même.
la source
backUP
etbackUp
comment nebackup
pas dans quel répertoire vous voulez aller?mc
ou de passer à une interface graphique? Rend la vie beaucoup plus facile.Réponses:
L'activation
cdspell
aidera:Depuis la
man
page:la source
Frapper
set completion-ignore-case on
en~/.inputrc
(oubind 'set completion-ignore-case on'
en~/.bashrc
) serait ma recommandation. Si vous allez taper le nom complet, pourquoi rechigner à quelques pressions sur la Shifttouche?Mais si vous le voulez vraiment, voici un wrapper
cd
qui essaie une correspondance exacte, et s'il n'y en a pas, recherche une correspondance insensible à la casse et l'exécute si elle est unique. Il utilise l'nocaseglob
option shell pour la globalisation insensible à la casse et transforme l'argument en glob en ajoutant@()
(ce qui ne correspond à rien et nécessiteextglob
). L'extglob
option doit être activée lors de la définition de la fonction, sinon bash ne peut même pas l'analyser. Cette fonction n'est pas prise en chargeCDPATH
.Ksh
Pendant que j'y suis, voici une fonction similaire pour ksh93. La
~(i)
modification pour une correspondance insensible à la casse semble être incompatible avec le/
suffixe pour correspondre uniquement aux répertoires (cela peut être un bogue dans ma version de ksh). J'utilise donc une stratégie différente pour éliminer les non-répertoires.Zsh
Enfin, voici une version zsh. Encore une fois, autoriser une complétion insensible à la casse est probablement la meilleure option. Le paramètre suivant revient à un remplacement insensible à la casse s'il n'y a pas de correspondance exacte:
Supprimer
''
pour afficher toutes les correspondances insensibles à la casse même s'il existe une correspondance exacte à la casse. Vous pouvez définir cela à partir de l'interface de menu decompinstall
.la source
inputrc
pour que cela fonctionne. Comme ça:echo "set completion-ignore-case on" >> ~/.inputrc
cd:cd:17: no such file or directory: videos
(j'ai unVideos
emulate -L zsh
pouremulate -LR zsh
? (Soit dit en passant, je viens de corriger un bug, qui aurait dû l'êtreemulate -L zsh
,emulate zsh
sinon, cela gâcherait vos options de shell.)