Antworten:
Sie können die Verwendung TabSchlüssel nach den ersten paar Zeichen drücken (dies wird dann „füllen“ den Rest des Ordners für Sie Typ zB cd ~/L
Tabfüllt cd ~/Library/
dann geben , Ap
Tabund es wird für Sie in den Rest füllen.
Wenn zwischen Wörtern ein Leerzeichen steht und Sie die oben genannten Methoden nicht verwenden möchten, setzen Sie einen \
(Backslash) vor das Leerzeichen, z cd ~/Library/Application\ Support
.
shopt -s nocaseglob
und bind 'set completion-ignore-case on'
machen bash weniger empfindlich zu Fall.
Das Kernproblem hierbei ist, wie die Shell ( Bash ) das Zitieren durchführt und wie sich dies auf die Tilde-Erweiterung und die Aufteilung in „Wörter“ (Argumente für das ausgeführte Programm) auswirkt.
Bash behandelt die führende Tilde nur dann, wenn sie nicht in Anführungszeichen gesetzt ist. Darüber hinaus darf der folgende Schrägstrich nicht zitiert werden.
Gleichzeitig parst bash Befehlszeilen in "Wörter", die auf nicht in Anführungszeichen gesetzten Leerzeichen basieren. Der cd
Befehl erfordert normalerweise genau ein Argument (das Zielverzeichnis). Eine Befehlszeile wie cd foo bar
bedeutet, cd
mit zwei Argumenten ausgeführt zu werden: foo
und bar
. Wenn Sie nur ein einziges foo bar
Argument senden möchten, müssen Sie das Leerzeichen angeben:
(z. B.) cd foo\ bar
(siehe Beispiel weiter unten).
In Ihrer speziellen Situation müssen Sie die Tilde und den folgenden Schrägstrich nicht in Anführungszeichen setzen, während Sie das Leerzeichen im Verzeichnisnamen angeben. Ihre cd "~/Library/Application Support/"
Testversion zitiert am Ende zu viel (die Tilde und ihr Schrägstrich), während Ihre cd ~/Library/Application Support/
Testversion zu wenig zitiert (das Leerzeichen im Verzeichnisnamen wird nicht angegeben).
Die gebräuchlichste Lösung ist die Verwendung von Escape-Zeichen, um nur das Leerzeichen zu zitieren:
cd ~/Library/Application\ Support
Sie können auch einfache oder doppelte Anführungszeichen verwenden, um entweder nur das Leerzeichen oder das Leerzeichen und einige andere Teile dieses Arguments (aber nicht das ~/
!):
cd ~/Library/Application' 'Support
cd ~/Library/Application" "Support
cd ~/Library/App'lication 'Support
cd ~/Library/Application" Supp"ort
cd ~/'Library/Application 'Support
cd ~/"Library/Application "Support
Diese Arten von Anführungszeichen haben unterschiedliche Bedeutungen, sind jedoch in diesen Beispielen identisch. Einfache Anführungszeichen schützen wörtliche Zeichenfolgen, während doppelte Anführungszeichen verschiedene Erweiterungen und Ersetzungen in der angegebenen Region ermöglichen.
Oft können Sie einfach die Shell die Arbeit für Sie erledigen lassen.
Globbing (Platzhalter):
cd ~/L*/Ap*
Sie können verwenden shopt -s nocaseglob
, um die Groß- und Kleinschreibung zu ignorieren:
cd ~/l*/ap*
Fertigstellung:
Wenn Sie Tabnach der Eingabe cd ~/L
auf drücken , wird es wahrscheinlich auf erweitert cd ~/Library/
.
Wenn Sie Tabnach der Eingabe erneut drücken Ap
(Sie haben es jetzt cd ~/Library/Ap
), wird es wahrscheinlich erweitert cd ~/Library/Application\ Support/
(die Shell fügte automatisch den entstehenden Backslash ein).
Sie können verwenden bind 'set completion-ignore-case on'
, um die Groß- und Kleinschreibung der Vervollständigung zu ignorieren:
cd ~/l
Tab→ cd ~/Library/
; ap
Tab→cd ~/Library/Application\ Support/
<kbd></kbd>
HTML-Tag (eines von mehreren HTML-Tags, die in SE markdown unterstützt werden ).
Wenn Sie einen Pfad in doppelte Anführungszeichen setzen, wird die Tilde-Erweiterung gestoppt. Es gibt also einige Möglichkeiten, dies zu tun:
cd ~/"My Code"
cd ~/'My Code'
Die Tilde wird hier nicht zitiert, daher wird die Tilde-Erweiterung weiterhin ausgeführt.
cd "$HOME/My Code"
Sie können Umgebungsvariablen innerhalb von Zeichenfolgen in doppelten Anführungszeichen erweitern. Dies ist im Grunde das, was die Tilde-Erweiterung macht
cd ~/My\ Code
Sie können Sonderzeichen (z. B. Leerzeichen) auch durch einen Backslash ersetzen.
Sie können dies für verteilte Ordner / Dateien versuchen, indem Sie: Wenn die Datei oder der Ordnername 1) Dateiname.Erweiterung enthält, sollte der Befehl cd ~ / Datei \ Name.Erweiterung / (oder) cd ~ / "Dateiname.Erweiterung" / lauten.