tar cvfまたはtar -cvf?


24

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

どちらもLinuxとMac OSで動作します。UNIXフレーバー間でより移植性の高い '-'なしのouを使用した推奨構文はありますか?



-f最後のオプションでなければならない理由は、引数を取り、その引数がオプションに触れて与えられる可能性があるためです。は、ファイルとを含むtar -cvfz dir.tar.gz Directoryという名前のアーカイブを作成することを意味します。zdir.tar.gzDirectory
-JoL

回答:


27

tarオプション構文が標準化されていなかった時代の古代コマンドの1つです。のすべての有用な呼び出しはtar、ファイル名を提供する前に操作を指定する必要があるため、ほとんどのtar実装では、最初の引数が-。で始まっていなくてもオプションとして解釈します。現在のほとんどの実装は、-;を受け入れます。私が知っている唯一の例外はMinixです。

POSIXおよびSingle Unixの古いバージョンには、操作指定子の前にtarnoを-指定したコマンドが含まれていました。シングルUnixのv2は、両方の伝統的なアーカイバを持っていたcpiotar、しかし、既存の実装があまりにも異なっていたので、非常にいくつかのフラグは、標準化することができ、その基準は、新しいコマンド、導入pax以来の唯一の標準アーカイバで、シングルUnixのV3を。あなたは、標準準拠、使用を希望しない場合はpax、多くのLinuxディストリビューションは、彼らの基本インストールに含めないことを注意してください、そして何がありますpaxのMinix。実際に移植性が必要な場合は、を使用してくださいtar cf filename.tar



1
また、Linuxディストリビューションにが含まれている場合、pax多くのバグが原因で避けるべき最悪の既知のpax実装(GNU pax)が付属していることに注意してください。
schily

また、psコマンドの動作は同じ-であり、オプションの省略が可能です。
perrorは

1
@perrorそれは間違っています。の多くのバージョンでpsは、を省略できません-。Linuxバージョンには、がある場合とない場合のオプションがあります-が、ほとんどの意味は異なります(BSDとSystem Vの互換性)。
ジル「SO-停止されて悪」

1
ほとんどの場合ps aux、私が使用するのは本当です...だから、私は(部分的に)間違っているかもしれません。ごめんなさい。
恐怖

13

私は恐竜かもしれませんが、「-cvf」の代わりに「cvf」を習慣的に使用する方がおそらく移植性が高いと思います。ほとんどのLinuxディストリビューションはGNU tarを使用していると思いますが、* BSDも使用する思いますが、オプションで '-'を使用しないように要求する古いSysV tarを使用する独自のUnixを見つけるでしょう。。

「-cvf」(または「-xf」など)は使用せず、最新のArch Linuxでも問題ありません。

補足として、Sun標準の「jar」コマンドオプションは、「-」の有無にかかわらず使用できると思います。


tarの情報ページ(オプションを指定する3つのスタイルについて非常に明確です)が、古いオプションは互換性のためにのみ保持され、古い対応のないオプションがたくさんあると言っても、私はあなたの答えに同意します。
デビッドコスタ

1
あなたは間違っています:AT&T UNIXのtarは-を持たないように書かれていますが、-を受け入れて、スキップします。tarを呼び出す唯一のポータブルな方法は、-なしで呼び出すことです。-なしで物を受け入れない "tar"実装を見つけた場合、これはtarではありません。
気味悪い

3

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

1つはですがdd、ddはIBMメインフレームプログラムDDR(Disk Dump and Restore)から派生しました。

1つはでar、もう1つはですtar。私の情報から、tarはarに似ていたいと思っていました。

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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.