Gibt es einen Bash-Platzhalter für den Verzeichniswechsel?

4

Wenn ich die Bash-Kommandozeile benutze, kann ich zum Beispiel mit ...

cd /volumes

Allerdings möchte ich gerne tippen ...

cd /vol*

aber das geht nicht. Gibt es eine Möglichkeit, mithilfe von Platzhaltern in Verzeichnissen zu navigieren?

John Livermore
quelle
1
Es funktioniert für mich
Emil Vikström
Willst du mehr darüber sagen, was du versuchst zu tun? Welches Verhalten erwarten Sie, wenn mehrere Verzeichnisse mit dem Namen übereinstimmen /vol*?
Adam Monsen
Was würden Sie erwarten, um cd /vol*zu tun?
Stakx
Abgesehen davon, dass Sie iTerm verwenden könnten, ist es eine viel bessere Alternative zum standardmäßigen osx-Terminal. iterm.sourceforge.net Ermöglicht das Ausfüllen von Registerkarten, und das obige Beispiel sollte problemlos funktionieren.
에이 바
@AvaGailliot bash ermöglicht die Vervollständigung von Registerkarten, unabhängig davon, welches Terminalprogramm Sie ausführen. Lesen Sie die Antwort von Gordon Davisson über die Konfiguration von bash, um Groß- und Kleinschreibung beim Verschieben und Vervollständigen von Tabulatoren zu ignorieren.
Doug Harris

Antworten:

6

Mac OS verwendet standardmäßig ein Dateisystem, bei dem die Groß- und Kleinschreibung nicht berücksichtigt wird. cd /volumesist äquivalent zu cd /Volumes, aber bash kann den vol*: try nicht globalisierencd /Vol*

William Pursell
quelle
4

Wie @William Pursell sagte, liegt dies daran, dass der Ordner / Volumes heißt, nicht / volume. Das OS X-Dateisystem unterscheidet nicht zwischen Groß- und Kleinschreibung, ignoriert also den Unterschied, aber bei Bash wird zwischen Groß- und Kleinschreibung unterschieden, und der Unterschied wird übergangen.

Sie können jedoch das Standardverhalten von bash ändern: shopt -s nocaseglobFügen Sie den Befehl zu Ihren Dateien ~ / .bashrc und ~ / .bash_profile hinzu, um das Dateimuster unabhängig von der Groß- und Kleinschreibung zu erweitern (dies ist in beiden Fällen erforderlich, sodass die Option in beiden Anmeldeshells festgelegt ist) und Unterschalen). Wenn Sie auch möchten, dass die Vervollständigung des Dateinamens trotz set completion-ignore-case onNichtübereinstimmung der Groß- / Kleinschreibung funktioniert, fügen bind "set completion-ignore-case on"Sie entweder Ihre ~ / .inputrc-Datei oder Ihre ~ / .bashrc- und ~ / .bash_profile-Dateien hinzu.

Gordon Davisson
quelle
0

Eingabe:

cd /vol*

funktioniert ganz gut . Auch wenn es /vol*sich um mehrere Verzeichnisse handelt, bashwird das erste verwendet und der Rest ignoriert. Was genau funktioniert bei dir nicht?

larsks
quelle
2
Natürlich würden Sie normalerweise nur cd /vol<TAB>die automatische Vervollständigung
Paul R
@larsks Ich erhalte -bash: cd: / vol *: Keine solche Datei oder kein solches Verzeichnis, wenn ich das eintippe. Ich verwende das Terminal unter Mac OS. CD / Volumes wechselt in dieses Verzeichnis ganz gut.
John Livermore
@PaulR - Unter Mac OS wird die Zeile für mich durch Drücken der Tabulatortaste nicht vollständig angezeigt. Ich habe das in der Vergangenheit jedoch mit Erfolg auf einer anderen Unix-Maschine verwendet.
John Livermore
@ John: Muss dann etwas komisches mit deinem Bash-Setup sein - es funktioniert für mich auf allen aktuellen / aktuellen Versionen von Mac OS X - Ich scheine mich daran zu erinnern, dass sehr frühe Versionen von Mac OS X einige Anpassungen benötigten, damit es funktioniert.
Paul R