Ich habe einen Ordnernamen mit einem Leerzeichen zwischen den Wörtern. Ich habe versucht, cd
in diesen Ordner zu wechseln, aber es hat nicht funktioniert. Wie kann ich unter OS X Speicherplatz in Terminal schreiben? Ich habe versucht zu folgen
MacBook-Pro:TestDrop Alexsander$ cd October Fall
-bash: cd: October: No such file or directory
MacBook-Pro:TestDrop Alexsander$ cd OctoberFall
-bash: cd: OctoberFall: No such file or directory
MacBook-Pro:TestDrop Alexsander$ cd October/ Fall
-bash: cd: October/: No such file or directory
MacBook-Pro:TestDrop Alexsander$ cd October/Fall
-bash: cd: October/Fall: No such file or directory
MacBook-Pro:TestDrop Alexsander$ cd October-Fall
-bash: cd: October-Fall: No such file or directory
MacBook-Pro:TestDrop Alexsander$ cd October_Fall
macos
terminal
macbook-pro
Alexander Khitev
quelle
quelle
cd October<TAB>
.Antworten:
Der Grund, warum es nicht funktioniert, ist, dass die Shell Argumente auf Leerzeichen aufteilt und daher denkt, dass Sie
cd
mit den beiden ArgumentenOctober
und aufrufenFall
. Entkomme dem Leerzeichen folgendermaßen\
:Eine andere Möglichkeit besteht darin, es in einfache oder doppelte Anführungszeichen wie dieses zu setzen
Oder ziehen Sie den Ordner einfach per Drag & Drop in das Terminal.
Aber warum tippst du nicht einfach ein paar Zeichen ein und drückst auf, Tabum die automatische Vervollständigung zu erreichen?
quelle
Die Shell führt eine Wortaufteilung für Argumente durch, bevor sie an den von Ihnen angegebenen Befehl übergeben werden. Dies bedeutet, dass die Zeile (oder in einigen Fällen auch Zeilen) standardmäßig an Leerzeichen, Tabulatoren und Zeilenumbrüchen in mehrere Wörter aufgeteilt wird.
Wie Lưu Vĩnh Phúc erwähnte, können Backslashes und einfache Anführungszeichen verwendet werden, um zu verhindern, dass einzelne Zeichen oder alles zwischen ihnen in Wörter aufgeteilt werden. Doppelte Anführungszeichen funktionieren auch:
In diesem speziellen Fall
'
und"
verhalten sich identisch, aber sie haben Unterschiede .'
Deaktiviert alle Sonderzeicheninterpretationen (gerade\
), kann jedoch kein a enthalten'
."
Deaktiviert nur die Wortteilung und die Dateinamenerweiterung (bei der Dateinamenerweiterung werden beispielsweisels *.mp3
alle Dateien mit Namen aufgelistet, die auf enden.mp3
.*
Dies löst hier die Dateinamenerweiterung aus). Da"
einige Argumenterweiterungen zulässig sind, ist es hilfreich, wenn Sie beispielsweise einen Dateinamen mit einem Leerzeichen in einer Variablen haben:Beachten Sie, dass
'
und verursachen"
Sie (standardmäßig) keine Wortaufteilung selbst, sodass dies, obwohl es chaotisch ist, für Sie funktionieren würde:Dies ist nützlich, wenn Sie beispielsweise ein Verzeichnis mit dem Namen haben
Octobers' $HOME
. Das'
darin enthaltene einzelne Anführungszeichen'
und die darin enthaltenen"
Anführungszeichen$HOME
werden in Ihr Home-Verzeichnis erweitert. Aber jede dieser Kombinationen (und viele andere) funktioniert sicher:Zu beachten ist außerdem, dass viele moderne Shells eine Tab-Vervollständigung bieten. Sowohl Bash als auch Zsh (wahrscheinlich auch Ksh, aber ich habe es nicht getestet) können einen Teil des Namens eines Verzeichnisses auf seinen vollständigen Namen erweitern, einschließlich sicherer Flucht über
\
s. Socd Octobers<tab>
wirdcd Octobers\'\ \$HOME
. Möglicherweise müssen Sie mehrmals die Tabulatortaste drücken, wenn mehrere Übereinstimmungen vorliegen. In Ihrer Shell ist möglicherweise nicht standardmäßig die Tab-Vervollständigung aktiviert. Überprüfen Sie die Dokumentation Ihrer Shell.quelle
Wenn Ihr Ordner oder Ihre Datei den Namen "Autosave Information" hat, der "Leerzeichen" oder ein Sonderzeichen enthält.
Sie können Sonderzeichen mit Hilfe von "\" verwenden oder dem Terminal mitteilen, dass der von Ihnen angegebene Name ein String ist.
quelle