Ich habe es versucht cd "~/Library/Application Support/"
-bash: cd: ~/Library/Application Support/: No such file or directory
ebenfalls cd ~/Library/Application Support/
-bash: cd: ~/Library/Application Support/: No such file or directory
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
undbind '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 wiecd foo bar
bedeutet,cd
mit zwei Argumenten ausgeführt zu werden:foo
undbar
. Wenn Sie nur ein einzigesfoo 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 Ihrecd ~/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:
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
~/
!):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):
Sie können verwenden
shopt -s nocaseglob
, um die Groß- und Kleinschreibung zu ignorieren:Fertigstellung:
Wenn Sie Tabnach der Eingabe
cd ~/L
auf drücken , wird es wahrscheinlich auf erweitertcd ~/Library/
.Wenn Sie Tabnach der Eingabe erneut drücken
Ap
(Sie haben es jetztcd ~/Library/Ap
), wird es wahrscheinlich erweitertcd ~/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/
quelle
<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:
Die Tilde wird hier nicht zitiert, daher wird die Tilde-Erweiterung weiterhin ausgeführt.
Sie können Umgebungsvariablen innerhalb von Zeichenfolgen in doppelten Anführungszeichen erweitern. Dies ist im Grunde das, was die Tilde-Erweiterung macht
Sie können Sonderzeichen (z. B. Leerzeichen) auch durch einen Backslash ersetzen.
quelle
Alternativ können Sie einen Ordner auch einfach in das Terminal-Fenster ziehen. Der gesamte Datei- / Ordnerpfad wird beim Ziehen automatisch eingefügt.
quelle
Sie müssen den Raum in "
Application Support
" entkommenVersuchen
$ cd ~/Library/Application\ Support/
quelle
Wenn die normalen Methoden nicht funktionieren, versuchen Sie, Leerzeichen durch zu ersetzen
%20
.Dies funktionierte für mich beim Umgang mit SSH und anderen domänenartigen Befehlen wie
auto_smb
.quelle
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.
quelle