オプションフラグをtarに渡すために追加のダッシュ(-)を使用するのはなぜですか?

オプションフラグをtarに渡すために追加のダッシュ(-)を使用するのはなぜですか?

ディレクトリ用のtarファイルを作成するには、オプションと一緒にコマンドを入力できますtarcompressverbosefile

$ tar -cvf my.tar my_directory/

ただし、次のこともできます。

 $ tar cvf my.tar my_directory/

つまり、オプションの前にダッシュ(-)はありません。オプションリストにダッシュ(-)を渡すのはなぜですか?

答え1

UNIXアプリケーションは、歴史的にいくつかの異なるオプションモードを使用してきました。次のような古いものアスファルト、位置スキームの使用:

コマンドオプションパラメータ

たとえば、tar

タール*もの*f「作業ファイル」*「作業するファイルパス」*

混乱を避けるために、まずアスファルトそして、古いフラグ引数スタイルを使用する他のいくつかのプログラムでは、フラグをダッシュ​​で区切ることができますが、ほとんどの高齢者はそれを無視します。

他のコマンドには、次のようなより複雑なコマンドライン構文があります。仕事(1)梨のフラグ、等号、パス名、パラメータ、子鳥を使用しますが、すべて奇妙です。

BSD 以降の Unix では、「-」で示される単一文字フラグに収束しますが、これによりいくつかの問題が発生し始めます。

  • これらの兆候は覚えにくいかもしれません。
  • 時々「-」を含む名前を使用したい場合があります。
  • 特に、GNUツールを使用すると、可能なフラグの数が制限され始めます。したがって、GNUツールには--output

その後、Sunは追加の「-」が重複していると判断し、単一の「-」を持つ長いスタイルフラグを使用し始めました。

だからこそめちゃくちゃになりました。

答え2

標準のUNIX方式でtarオプションを提供できますtar -c -f foo -v -B file1 file2 file3。ここでコマンドラインの末尾にある引数やファイル名とオプションを区別するにはダッシュが必要です。あるいは、最初の引数にすべてのオプションを入れることもできます。この場合、ダッシュはオプションです。

psその後、SysV-ish オプションを使用する場合はダッシュがあり、BSD-ish オプションを使用する場合はダッシュを省略して状況をさらに混乱させます。

私たちはそれについて話しませんfind

答え3

ダッシュは、オプションのパラメータ名と値を明確にするために使用されます。私はこれが標準的なコンベンションに近いと思います。

答え4

前にマイナス記号/ダッシュ(-)を使用すると、オプションの正確な順序を維持する必要があります。マイナス記号がないと、オプションの順序が変更されることがあります。

たとえば、

# tar -xvf yourfile.tar
# tar vxf yourfile.tar

関連情報