webentwicklung-frage-antwort-db.com.de

Wie kann ich unter OS X Speicherplatz in Terminal schreiben?

Ich habe einen Ordnernamen mit einem Leerzeichen zwischen den Wörtern. Ich benutze einen Befehl cd, den ich in einem Bedarfsordner verschieben kann. 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
10

Der Grund, warum es nicht funktioniert, ist, dass die Shell Argumente in Leerzeichen aufteilt und daher denkt, dass Sie cd mit den beiden Argumenten October und Fall aufrufen. Entfliehen Sie dem Whitespace mit \ wie folgt:

cd October\ Fall

Eine andere Möglichkeit besteht darin, es in einfache oder doppelte Anführungszeichen 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 und drückst Tab zur automatischen Vervollständigung?

29
phuclv

Die Shell führt eine Wortteilung für Argumente durch, bevor sie diese an den von Ihnen angegebenen Befehl übergibt. Dies bedeutet, dass die Zeile (oder in einigen Fällen auch die Zeilen) in mehrere Wörter aufgeteilt wird, standardmäßig an Leerzeichen, Tabulatoren und Zeilenumbrüchen.

Wie Lưu Vĩnh Phúc bereits erwähnt hat, können Backslashes und einfache Anführungszeichen verwendet werden, um das Aufteilen von Wörtern in einzelne Zeichen oder alles dazwischen zu verhindern. Doppelte Anführungszeichen funktionieren auch:

cd "October Fall"

In diesem speziellen Fall verhalten sich ' und " identisch, sie haben jedoch Unterschiede .

' deaktiviert alle Sonderzeicheninterpretationen (auch \), darf jedoch keinen ' enthalten. " deaktiviert nur die Wortteilung und Dateinamenerweiterung (Dateinamenerweiterung ist beispielsweise ls *.mp3, um alle Dateien aufzulisten, deren Name auf .mp3 endet. Der * löst hier die Dateinamenerweiterung aus). Da " einige Argumenterweiterungen zulässt, ist es nützlich, 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 " (standardmäßig) nicht dazu führen, dass Word sich selbst aufteilt. Daher funktioniert dies, obwohl es chaotisch ist, für Sie:

cd "Oct"'ober F'"all"

Dies ist nützlich, wenn Sie ein Verzeichnis mit dem Namen Octobers' $HOME haben. Der darin enthaltene ' unterbricht ein einzelnes Paar von '-Anführungszeichen, und in "-Anführungszeichen wird $HOME in Ihr Ausgangsverzeichnis erweitert. Aber jede dieser Kombinationen (und viele andere) werden sicher funktionieren:

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

Zu beachten ist außerdem, dass viele moderne Shells die 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 den vollständigen Namen erweitern, einschließlich der sicheren Eskapierung über \s. So wird cd Octobers<tab> zu cd Octobers\'\ \$HOME. Möglicherweise müssen Sie die Tabulatortaste mehrmals drücken, wenn mehrere Übereinstimmungen vorliegen. Möglicherweise ist in Ihrer Shell die Tabulatorvervollständigung nicht standardmäßig aktiviert. Überprüfen Sie die Dokumentation Ihrer Shell.

10
8bittree

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

>> cd Autosave\ Information

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

>> cd "Autosave Information"
0
Tanvir Hasan