tar cvfz dir.tar.gz Directory/
のように、オプションに「-」なしでtarを使用する方法を学びましたが、最近は少し異なるtar -czvf
構文に遭遇しました(この場合、「f」は最後のオプションであると思います)。
どちらもLinuxとMac OSで動作します。 '-'なしのouを使用した推奨構文はありますか?
tar
は、オプションの構文が標準化されていなかった時代の古いコマンドの1つです。 tar
のすべての有用な呼び出しでは、ファイル名を指定する前に操作を指定する必要があるため、ほとんどのtar
実装は、最初の引数が-
で始まっていなくても、オプションとして解釈します。現在のほとんどの実装は-
を受け入れます。私が知っている唯一の例外は Minix です。
古いバージョンのPOSIXおよびシングルUnixでは、操作指定子の前に-
のないtar
コマンドが含まれていました。単一のUnix v2には、従来のアーカイバ cpio
と tar
の両方がありましたが、既存の実装があまりに異なるため、標準化できるフラグはほとんどないため、標準は新しいコマンド pax
を導入しました。これは Single Unix v 以降、唯一の標準アーカイバです。標準準拠が必要な場合はpax
を使用しますが、多くのLinuxディストリビューションではベースインストールに含まれておらず、_ Minix にはpax
がないことに注意してください。実際に移植性が必要な場合は、tar cf filename.tar
を使用してください。
私は恐竜かもしれませんが、-cvf
の代わりにcvf
を日常的に使用する方がおそらく移植性が高いと思います。ほとんどのLinuxディストリビューションはGNU tarを使用していると思います。* BSDも使用すると思いますが、以前使用されていた古いSysV tarをまだ使用している独自のUnixが見つかるでしょう必須オプションで-
を使用しないでください。
私は-cvf
(または-xf
など)を使用しておらず、Edge Arch Linuxの最新版でさえ問題ありません。
補足として、Sun標準のjar
コマンドオプションを-
の有無にかかわらず使用できると思います。
現在のオプション標準に準拠していないプログラムは、UNIXにはほとんどありません。
1つはdd
ですが、ddはIBMメインフレームプログラムDDR
(ディスクダンプと復元)から派生しました。
1つはar
で、もう1つはtar
です。私の情報によると、tarはarに類似したいものでした。
すべてのtar実装は-なしで機能し、有用な実装では-を必要としません。したがって、移植可能なスクリプトを作成する場合は、SUSv2標準を確認し、SUSv2と互換性のあるコマンドラインのみを使用してください。