web-dev-qa-db-ja.com

OS Xのターミナルにスペースを書き込むにはどうすればよいですか?

単語の間にスペースが入ったフォルダ名があります。 cdを使用してそのフォルダーに移動しようとしましたが、機能しませんでした。 OS Xのターミナルにスペースを書き込むにはどうすればよいですか?フォローしてみた

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
11

それが機能しない理由は、シェルが空白で引数を分割するため、cdを2つの引数OctoberFallで呼び出すと考えられるためです。次のように\で空白をエスケープします。

cd October\ Fall

別の方法は、このように一重引用符または二重引用符で囲むことです

cd 'October Fall'
cd "October Fall"

または、フォルダをターミナルにドラッグアンドドロップします。

でも、数文字をタイプして押してみませんか? Tab 自動補完のために?

33
phuclv

シェルは、指定したコマンドに渡す前に、引数に対して Word splitting を実行します。つまり、行(または場合によっては行)を取得し、デフォルトでスペース、タブ、改行でいくつかの単語に分割します。

LưuVĩnhPhúcが述べたように、バックスラッシュと単一引用符を使用して、Wordが単一の文字またはそれらの間のすべての文字をそれぞれ分割しないようにすることができます。二重引用符も機能します:

cd "October Fall"

この特定のケースでは、'"は同じように動作しますが、 differences があります。

'は、すべての特殊文字の解釈を無効にします(\も含む)。ただし、'を含めることはできません。 "はWordの分割とファイル名の展開のみを無効にします(ファイル名の展開はls *.mp3のようなもので、名前が.mp3で終わるすべてのファイルを一覧表示します。*はファイル名の展開をトリガーしますここに)。 "はいくつかの引数の展開を許可するため、たとえば、変数内にスペースを含むファイル名がある場合に役立ちます。

$ 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

'"は(デフォルトでは)Word自体を分割しないので、乱雑であるにもかかわらず、次のように機能することに注意してください。

cd "Oct"'ober F'"all"

これは、Octobers' $HOMEという名前のディレクトリなどがある場合に便利です。その中の''引用符のペアを1つ壊し、"引用符の内部では$HOMEがホームディレクトリに展開されます。ただし、これらの組み合わせ(および他の多くの組み合わせ)は安全に機能します。

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

他に心に留めておくべきことは、多くの最近のシェルはタブ補完を提供するということです。 BashとZsh(おそらくKshもテストしていません)では、ディレクトリ名の一部を完全な名前に展開でき、\sを使用して安全にエスケープできます。したがって、cd Octobers<tab>cd Octobers\'\ \$HOMEになります。複数の一致がある場合、タブを複数回押す必要がある場合があります。また、シェルではデフォルトでタブ補完が有効になっていない場合があります。シェルのドキュメントを確認してください。

11
8bittree

フォルダまたはファイルに「スペース」または特殊文字を含む「自動保存情報」のような名前が付けられている場合。

>> cd Autosave\ Information

「\」を使用して特殊文字を使用するか、指定した名前が文字列であることを端末に伝えることができます。

>> cd "Autosave Information"
0
Tanvir Hasan