Wie kann ich unter OS X Speicherplatz in Terminal schreiben?

11

Ich habe einen Ordnernamen mit einem Leerzeichen zwischen den Wörtern. Ich habe versucht, cdin 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
Alexander Khitev
quelle
Vielleicht mit Tabulatortaste
durchschleifen
cd October<TAB>.
Bakuriu

Antworten:

33

Der Grund, warum es nicht funktioniert, ist, dass die Shell Argumente auf Leerzeichen aufteilt und daher denkt, dass Sie cdmit den beiden Argumenten Octoberund aufrufen Fall. Entkomme dem Leerzeichen folgendermaßen \:

cd October\ Fall

Eine andere Möglichkeit besteht darin, es in einfache oder doppelte Anführungszeichen wie dieses zu setzen

cd 'October Fall'
cd "October Fall"

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?

phuclv
quelle
3
Sie sollten Backslash verwenden, nicht Slash
Phuclv
Ja, ich habe dich verstanden. Ich könnte es schaffen.
Alexander Khitev
11

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:

cd "October Fall"

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 beispielsweise ls *.mp3alle 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:

$ filename=October\ Fall
$ #               ^-- Still need a backslash or quoting to prevent word 
$ #                   splitting here, but the backslash/quotes will not be stored
$ cd $filename
bash: cd: October: No such file or directory
$ cd '$filename'
bash: cd: $filename: No such file or directory
$ cd "$filename"
$ pwd
/path/to/October Fall

Beachten Sie, dass 'und verursachen "Sie (standardmäßig) keine Wortaufteilung selbst, sodass dies, obwohl es chaotisch ist, für Sie funktionieren würde:

cd "Oct"'ober F'"all"

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 $HOMEwerden in Ihr Home-Verzeichnis erweitert. Aber jede dieser Kombinationen (und viele andere) funktioniert sicher:

cd Octobers\'\ \$HOME
cd "Octobers' "'$HOME'
cd "Octobers' "\$HOME
cd "Octobers' \$HOME"

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. So cd Octobers<tab>wird cd 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.

8bittree
quelle
1
TMI aber immer noch gut zu wissen. +1
Josiah
@Josiah Es ist nicht zu viel Information zu erklären, warum der Fragesteller das Ergebnis erhält, das er zusätzlich zu dem gewünschten Ergebnis erhält.
Blacklight Shining
0

Wenn Ihr Ordner oder Ihre Datei den Namen "Autosave Information" hat, der "Leerzeichen" oder ein Sonderzeichen enthält.

>> cd Autosave\ Information

Sie können Sonderzeichen mit Hilfe von "\" verwenden oder dem Terminal mitteilen, dass der von Ihnen angegebene Name ein String ist.

>> cd "Autosave Information"
Tanvir Hasan
quelle