Manchmal erinnere ich mich beim Zugriff auf die verschiedenen Verzeichnisse meistens an die Namen oder zumindest einen Teil der Namen eines Verzeichnisses unter unserem Linux-System. Einige der Verzeichnisse werden jedoch beginnend mit Großbuchstaben oder einem der Zeichen in der Mitte des Namens Großbuchstaben benannt.
Kann jemand vorschlagen, wie ich die Argumente nach dem cd
Befehl case INSENSITIVE machen kann, so dass, wenn ich ausführe cd BackupDirectory
oder cd backupdirectory
es den Verzeichnisnamen BackupDirectory eingeben könnte.
Natürlich möchte ich die Dinge nicht für andere Benutzer vermasseln. Wenn dies möglich ist, ist es dann möglich, dass die Änderung nur auf die von mir verwendete Sitzung angewendet wird und keine Auswirkungen auf andere Benutzer hat?
Ok, ich habe es anprobiert, set completion-ignore-case
aber das funktioniert einfach nicht. Es hilft nur dabei, wenn ich tippe cd b
und / Taboder Esc Escden Verzeichnisnamen ausfülle, wobei der Fall ignoriert wird. Aber was ich brauche, ist, wenn ich a mache cd backupdirectory
, es ignoriert einfach den Fall und tritt BackupDirectory
von selbst ein.
quelle
backUP
und habenbackUp
, wie würdebackup
nein zu welchem Verzeichnis Sie gehen möchten?mc
oder zu einer GUI zu wechseln? Macht das Leben viel einfacher.Antworten:
Das Aktivieren
cdspell
hilft:Von der
man
Seite:quelle
Bash
set completion-ignore-case on
in~/.inputrc
(oderbind 'set completion-ignore-case on'
in~/.bashrc
) wäre meine Empfehlung. Wenn Sie den vollständigen Namen eingeben möchten, warum sollten Sie dann ein paar ShiftTastendrücke ausführen ?Aber wenn Sie es wirklich wollen, finden Sie hier einen Wrapper
cd
, der nach einer genauen Übereinstimmung sucht. Wenn es keine gibt, sucht er nach einer Übereinstimmung ohne Berücksichtigung der Groß- und Kleinschreibung und führt sie aus, wenn sie eindeutig ist. Es verwendet dienocaseglob
Shell-Option für das Globbing ohne Berücksichtigung der Groß- und Kleinschreibung und verwandelt das Argument durch Anhängen in einen Glob@()
(der mit nichts übereinstimmt und erforderlich istextglob
). Dieextglob
Option muss beim Definieren der Funktion aktiviert sein, andernfalls kann bash sie nicht einmal analysieren. Diese Funktion wird nicht unterstütztCDPATH
.Ksh
Während ich gerade dabei bin, ist hier eine ähnliche Funktion für ksh93. Das
~(i)
für Übereinstimmungen ohne Berücksichtigung der Groß- und Kleinschreibung modifizierte Element scheint nicht mit dem/
Suffix kompatibel zu sein, nur Verzeichnisse abzugleichen (dies kann ein Fehler in meiner Version von ksh sein). Daher verwende ich eine andere Strategie, um Nicht-Verzeichnisse auszusortieren.Zsh
Zum Schluss noch eine zsh-Version. Auch hier ist es wahrscheinlich die beste Option, die Vervollständigung ohne Berücksichtigung der Groß- und Kleinschreibung zuzulassen. Die folgende Einstellung greift auf Globbing ohne Berücksichtigung der Groß- und Kleinschreibung zurück, wenn keine Übereinstimmung mit der Groß- und Kleinschreibung vorliegt:
Entfernen Sie
''
diese Option , um alle Übereinstimmungen ohne Berücksichtigung der Groß- und Kleinschreibung anzuzeigen, auch wenn eine Übereinstimmung mit der Groß- und Kleinschreibung vorliegt. Sie können dies über die Menüoberfläche von einstellencompinstall
.quelle
inputrc
damit es funktioniert. So:echo "set completion-ignore-case on" >> ~/.inputrc
cd:cd:17: no such file or directory: videos
(Ich habe einVideos
emulate -L zsh
zuemulate -LR zsh
? (Übrigens habe ich gerade einen Fehler behoben, der eigentlich hätte seinemulate -L zsh
sollenemulate zsh
, sonst würde es Ihre Shell-Optionen durcheinander bringen.)