たとえば、という名前のフォルダーを作成したい場合-a
、どのコマンドがトリックを実行しますか?
、、を試しましたmkdir '-a'
がmkdir \-a
、どちらも機能しませんでした。私はUbuntuを使用しています。
たとえば、という名前のフォルダーを作成したい場合-a
、どのコマンドがトリックを実行しますか?
、、を試しましたmkdir '-a'
がmkdir \-a
、どちらも機能しませんでした。私はUbuntuを使用しています。
回答:
次のようにコマンドを呼び出します。
mkdir -- -a
これ--
は、オプションがその後で終了することを意味するため、-a
のオプションとしてではなく、文字どおりに解釈されますmkdir
。この構文は、だけでなくmkdir
、echo
およびを除くPOSIX準拠のユーティリティにもありtest
ます。仕様から:
引数-は、オプションの終わりを示す区切り文字として受け入れられるべきです。次の引数は、「-」文字で始まる場合でもオペランドとして扱われる必要があります。-引数をオプションまたはオペランドとして使用しないでください。
使用して--
次を呼び出すこともできますループ内でファイルを移動する際に安全装置を使用すると、ファイル名に対処し、彼らはコマンドを壊さないようにしたい、ほぼすべての行動、例えばのために推奨されるようにと呼ばれるファイルという、-i
「ISN t(in?)オプションとして正しく解析されます:
mv -- "$f" new-"$f"
cc -o -myfile -Wall -myfile.c
ほんの少し工夫された例として考えてください。その塩に値するエディタは、-myfile.c
あなたがそれを要求した場合、名前の付いたファイルに保存できるはずですが、Cコンパイラはおそらくそのようなオプションのリストを与えられたときにあなたが望むことをしないでしょう。
cc
上記のMichaelが-o
出力ファイルを指定するオプションを持つコマンドのように、入力または出力ファイル名を設定するオプションを必要とするコマンドの場合。
for f in ./*; do...
のではなくfor f in *; do...
合理的なプログラムで動作する最も簡単な方法は、の前に相対パス名を使用することです-
。たとえば、現在の作業ディレクトリでmkdir ./-a
呼び出されるディレクトリを作成します-a
。
この「トリック」を使用する最も一般的な例は、ダッシュで始まるファイルを削除する場合ですrm ./-a
。
./
は、プレフィックスを付けることは常に良い考え-rf
ですrm *
。というファイルを作成してからを呼び出したと想像してください。
--
すべてのコマンドで理解されているわけではなく、ほんの少数です)
--
はバッシュだと思ったので、すべてのプログラムで動作するはずです。
「slhck」からの答えに加えて、時には機能する別のトリックがあります。
"'-a'"
またはのような2組の(異なる)qoutes内に問題のファイル名を入れます'"-a"'
。
これが機能するかどうかはプログラムによって異なりますが、プログラムがPOSIX --
機能をサポートしていない場合は最後の手段です。
POSIX方式は100%信頼性があるため常に推奨されます。
--
また、オプション処理を終了するために使用すると、ファイル名の後にオプションが不要であると想定されますが、常にそうであるとは限りません。
'-a'
or というファイルが作成されます"-a"