tar cvf または tar -cvf?

tar cvf または tar -cvf?

オプションとして「-」なしでtarを使用する方法を学びましたが、tar cvfz dir.tar.gz Directory/最近少し異なる構文を見つけましたtar -czvf(この場合、「f」は最後のオプションであることに違いありません)。

どちらもLinuxとMac OSで動作します。 Unixスタイルでより移植性の高い推奨構文( '-'を含めるか除く)はありますか?

答え1

tarオプション構文がまだ標準化されていない時代の古代のコマンドの1つです。すべての便利な呼び出しはファイル名が指定される前にアクションを指定する必要があるため、ほとんどの実装tarではtarで始まらない場合でも、最初の引数をオプションとして解釈します--~であるミニクス

以前のバージョンのPOSIXおよびSingle Unixには、ジョブ指定子の前に来ないコマンドが含まれていますtar-単一のUnix v2には既存のアーカイバがあります。cpioそしてtarしかし、既存の実装があまりにも異なるため、標準化できるフラグがほとんどないので、標準では次のような新しいコマンドを導入しました。pax、以来唯一の標準アーカイバーです。シングルUnix v3。規格に準拠するには、それを使用してくださいpax。ただし、多くのLinuxディストリビューションはデフォルトのインストールに含まれておらずpaxミニクス。実際に移植性が欲しいならtar cf filename.tar

答え2

恐竜かもしれませんが、cvfむしろ愛用するほうが携帯性が良いと思います-cvf。ほとんどのLinuxディストリビューションはGNU tarを使用し、* BSDも同じだと思います。しかし、独自のUnixはまだ以前のSysV tarを使用していることに気付くでしょう。必要-オプションにはaを使用しないでください。

-cvf私は(または何も)使用しておらず、-xf最も進化したArch Linuxでも問題はありませんでした。

ところで、私の考えでは、jarSunの標準コマンドオプションを-

答え3

UNIX では、現在オプション標準に準拠していないプログラムはほとんどありません。

1つはですが、ddddはIBMメインフレームプログラムDDR(ディスクダンプと回復)から派生しました。

一つはar、もう一つはですtar。私の情報によると、tarはarに似ていると予想されます。

すべての tar 実装は - なしで動作し、有用な実装には - は必要ありません。したがって、移植可能なスクリプトを作成するには、SUSv2標準を確認し、SUSv2準拠のコマンドラインのみを使用してください。

関連情報