tarコマンドで特定のオプションの順序が重要なのはなぜですか?

tarコマンドで特定のオプションの順序が重要なのはなぜですか?

拡張子を持つアーカイブをtar作成するコマンドを使用しようとしています。.tar

私が試した後、一連のコマンドを見てください。

$ ls
abc.jpg  hello.jpg  xjf.jpg
$ tar -cfv test.tar *.jpg
tar: test.tar: Cannot stat: No such file or directory
tar: Exiting with failure status due to previous errors
$ ls
abc.jpg  hello.jpg  v  xjf.jpg
$ rm v
$ ls
abc.jpg  hello.jpg  xjf.jpg
$ tar -cvf test.tar *.jpg
abc.jpg
hello.jpg
xjf.jpg
$ ls
abc.jpg  hello.jpg  test.tar  xjf.jpg

なぜオプションの順序によって異なる応答を提供するのですか?それvs.Bashスクリプトで学んだ内容に-cfvよるcvf
、オプションの順序は重要ではありません。

ベストアンサー1

@jcbermuが言ったように、ほとんどのプログラムとほとんどの状況では、コマンドラインフラグの順序は重要ではありません。ただし、一部のフラグには値が必要です。特にtarの-fフラグは次のとおりです。

  -f, --file ARCHIVE
       use archive file or device ARCHIVE

したがって、生成するtarファイルの名前になる値をtar期待します。-fたとえば、.jpg名前付きアーカイブにすべてのファイルを追加するには、foo.tar次のようにします。

tar -f foo.tar *jpg

あなたが実行していること

tar -cfv test.tar *.jpg

tar「ファイルと-cv-fvtest.tar.jpg

tar -cvf test.tar *.jpg一方、実行すると、そのアーカイブのtest.tar名前とファイルのリストが表示されます。*jpg

おすすめ記事