ディレクトリのtarファイルを作成するには、tar
、compress
、verbose
オプションを指定したfile
コマンドを次のように入力します。
$ tar -cvf my.tar my_directory/
しかし、それは次のように行うこともできます:
$ tar cvf my.tar my_directory/
つまり、オプションの前にダッシュ(-)を付けません。なぜオプションリストにダッシュ(-)を渡すのですか?
UNIXアプリケーションでこれまで使用されてきたオプションには、いくつかの異なるパターンがあります。 tarのようないくつかの古いものは位置スキームを使用します:
コマンドオプション引数
たとえばtarは
tar * something * f "操作されるファイル" * "操作するファイルのパス" *
混乱を避けるための最初の試みでは、tarと、古いflags-argumentsスタイルを使用する他のいくつかのプログラムでは、フラグをダッシュで区切ることができましたが、ほとんどの古い人は単にそれを無視しました。
他のいくつかのコマンドには、フラグ、等号、パス名、引数、梨の木のパートリッジを使用するdd(1)のような、より複雑なコマンドライン構文があり、すべてワイルドバンドンです。
BSDおよびそれ以降のバージョンのunixでは、これは多かれ少なかれ「-」でマークされた単一文字のフラグに収束していましたが、これはいくつかの問題を引き起こし始めました:
--output
のような長いオプション。次に、Sunは余分な「-」は冗長であると判断し、単一の「-」を含む長い形式のフラグの使用を開始しました。
そして、それが現在の混乱の原因となったのです。
UNIXの標準的な方法でtarオプションを指定できますtar -c -f foo -v -B file1 file2 file3
ここで、オプションとパラメータ、またはコマンドラインの最後にあるファイル名を区別するためにダッシュが必要です。または、すべてのオプションを最初の引数にまとめることができます。その場合、ダッシュはオプションです。
次にps
があり、SysV-ishオプションを使用している場合はダッシュを使用し、BSD-ishオプションを使用している場合はダッシュを省略して、混乱を招きやすくしています。
そして、find
についてさえ話をさせません。
ダッシュは、オプションパラメータの名前と値を明確にするために使用されます。それはもっと標準的な慣習だと思います。