回答:
-
ファイル名の引数でstdin
or を使用するのは一般的な規則stdout
です。tar
同じ規則に従います。manページから:
-f, --file [HOSTNAME:]F
use archive file or device F (default "-", meaning stdin/stdout)
-
意味を確認する必要があります。Stdin / stdoutは、最も一般的な意味ですが、他にもあります。たとえば、一部のバージョンでenv
は、「空の環境から始める」ことを意味します。
もう1つの規則は、フラグの終わりとファイル名の始まりを示すために「-」を使用することです。その動作は、少なくともRedHat 4のgetopt(3)に組み込まれています。引数の終わりを示すために「-」を使用するRed Hatのマニュアルページは見つかりません。それらはすべて「-」を使用してそうしているようです。awkのマニュアルページには、「-」が含まれているため、古い「heirloom」UnixまたはSolarisコマンドのみが「-」を引数として使用している-ファイル名の区切り文字。
--
オプションの終わりを知らせるので、その後に来るものはすべてオペランドです。-
それはオプションではないので、それとその後に来るすべてはオペランドです。これは標準的な動作です。などの多くのコマンドでtar
は、オペランド-
は標準入力または標準出力を意味します。多くのシェルでset - -a
は、と同等set -- -a
であり、一部の古いBourneシェルset - -a
は唯一受け入れられる形式でしたが、これはset
組み込みの例外です。
--
オプションを引数から分離します。
tar xfz target.tar.gz
tar xfj target.tar.bz2