tl; dr:特殊文字を引用するには、バックスラッシュでエスケープする\
か、二重" "
引用符または単一引用符で囲みます' '
。Tab ↹完了は適切な引用を処理します。
あなたが求めているのは引用です:
引用は、シェルに対して特定の文字または単語の特別な意味を削除するために使用されます。(…)3つの引用メカニズムがあります: エスケープ文字、一重引用符、二重引用符。
[からの引用man bash
]
エスケープ文字で引用 \
引用符で囲まれていないバックスラッシュ(\
)はエスケープ文字です。を除き、次の文字のリテラル値を保持します<newline>
。
そのため、特殊文字を使用してディレクトリまたはファイルを入力するには、次のように後者をエスケープします\
。例:
cd space\ dir # change into directory called “space dir”
cat space\ file # print the content of file “space file”
echo content > \\ # print “content” into file “\”
cat \( # print the content of file “(”
ls -l \? # list file “?”
bash
のProgrammable Completion(別名Tab ↹Completion)は、エスケープ文字で特殊文字を自動的にエスケープします\
。
二重引用符で引用する " "
二重引用符で文字を囲むことを除いて、全ての文字のリテラル値を保持し$
、`
、\
、および、履歴展開が有効になっている場合、!
。
そのため、特殊文字を使用してディレクトリまたはファイルを入力するには、ファイル名またはパスの少なくとも後者または大部分を二重引用符でエスケープします。例:
cd space" "dir # change into directory called “space dir”
cd spac"e di"r # equally
cd "space dir" # equally
cat "space file" # print the content of file “space file”
cat "(" # print the content of file “(”
ls -l "?" # list file “?”
として$
、`
および!
二重引用符内でその特別な意味を維持するために、パラメーター拡張、コマンド置換、算術拡張、および履歴拡張が二重引用符で実行されます。
単一引用符で引用する ' '
文字を一重引用符で囲むと、引用符内の各文字のリテラル値が保持されます。バックスラッシュが先行する場合でも、単一引用符は単一引用符の間に出現しない場合があります。
そのため、特殊文字を使用してディレクトリまたはファイルを入力するには、ファイル名またはパスの少なくとも後者または大部分を二重引用符でエスケープします。例:
cd space' 'dir # change into directory called “space dir”
cd spac'e di'r # equal
cd 'space dir' # equal
cat 'space file' # print the content of file “space file”
cat '(' # print the content of file “(”
ls -l '?' # list file “?”
echo content > '\' # print “content” into file “\”
あなたには引用の詳細を見つけることができますman bash
/ QUOTINGに、wiki.bash-hackers.orgと上tldp.org。