web-dev-qa-db-ja.com

tar -cvfzコマンドを実行すると、「cvfz」の前にハイフンを省略しない限りエラーメッセージが表示されます

可能性のある複製:
前のエラーによる失敗で終了するSudo tar cvpzf

コマンドを実行するとき

tar -cvfz backup.tar.gz somedirectory

私は次のスターを取得します

tar: Exiting with failure status due to previous errors

ただし、-cvfzから先行するハイフンを省略すると、すべて正常に動作するようです。ハイフンがファイルのタール化を妨げている理由はわかっていますか?

5
user784637

tar cvfzが機能する理由がわかりません。manページのクイックスキャンと私の経験に基づいて、ハイフンが標準的な方法です。たぶんそれはBSD互換性のもの(psなど)です。

とにかく、構文が正しくありません。 -fは、圧縮するファイル名として次の引数を取ります。この場合、そのファイル名はzであり、これは予期したものではありません。出力のサンプルを次に示しますので、私が何を意味するかを確認できます。

$ tar -cvfz test.tar.gz scott
tar: test.tar.gz: Cannot stat: No such file or directory
scott/
scott/netx/
scott/netx/locks/
scott/netx/locks/netx_running
tar: Exiting with failure status due to previous errors

lsは、zというファイルを示します。 fileコマンドは、それが非圧縮tarアーカイブであることを明らかにします。 -z引数が渡されなかったため、圧縮されていません。エラーメッセージは、存在しないファイルtest.tar.gzをアーカイブに追加しようとしたことから発生しました。

オプションを並べ替えるだけで問題ありません。

tar -czvf test.tar.gz some/directory

常に-fを最後の引数にすれば、大丈夫です。ところで、引数を取る短いオプション(1文字のオプション)は通常、オプションと引数の間にスペースを必要としないことに注意してください。

編集:ところで、ハイフンなしのフォームがBSD互換性のものまたはそのようなものである場合、そのような環境でtarが呼び出される方法は異なる可能性があります、入力ファイルを指定するためにfフラグを必要としませんが、cpなどのように機能します。しかし、これはps(q.v.)との比較に基づく推測にすぎません。

12
Scott Severance