オプションとして「-」なしで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でも問題はありませんでした。
ところで、私の考えでは、jar
Sunの標準コマンドオプションを-
。
答え3
UNIX では、現在オプション標準に準拠していないプログラムはほとんどありません。
1つはですが、dd
ddはIBMメインフレームプログラムDDR
(ディスクダンプと回復)から派生しました。
一つはar
、もう一つはですtar
。私の情報によると、tarはarに似ていると予想されます。
すべての tar 実装は - なしで動作し、有用な実装には - は必要ありません。したがって、移植可能なスクリプトを作成するには、SUSv2標準を確認し、SUSv2準拠のコマンドラインのみを使用してください。