私はLinuxを学んでいます。 tarballを作成するときにパラメーターの順序が重要であるように見えるのを見て、私は驚きました。
tar -cfvz casual.tar.gz snapback.txt bucket.txt
エラーを出します:
tar: casual.tar.gz: Cannot stat: No such file or directory
tar: Exiting with failure status due to previous errors
しかし、私がこのようなコマンドを発行した場合:
tar -cvzf casual.tar.gz snapback.txt bucket.txt
tarballはエラーなしで作成されます
この例でパラメータの順序が重要である理由、またはその理由を知るためにその情報をどこで見つけることができるのか、誰かが私に説明できますか?必要なパラメーターcとfを最初に配置し、その後に他のパラメーターを配置するというロジックでエラーを受け取った最初の例と同じように、それを試しました。
Linuxを完全に吸収したいと思います。これには、このようなことが発生する理由の理解も含まれます。前もって感謝します!
順序が重要かどうかは、オプションをマイナスで始めるかどうかによって異なります
$ tar -cfvz casual.tar.gz snapback.txt bucket.txt
tar: casual.tar.gz: Cannot stat: No such file or directory
tar: Exiting with failure status due to previous errors
$ tar cfvz casual.tar.gz snapback.txt bucket.txt
snapback.txt
bucket.txt
この異常な動作は man page に記載されています
Options to GNU tar can be given in three different styles.
In traditional style
...
Any command line words that remain after all options has
been processed are treated as non-optional arguments: file or archive
member names.
...
tar cfv a.tar /etc
...
In UNIX or short-option style, each option letter is prefixed with a
single dash, as in other command line utilities. If an option takes
argument, the argument follows it, either as a separate command line
Word, or immediately following the option.
...
tar -cvf a.tar /etc
...
In GNU or long-option style, each option begins with two dashes and
has a meaningful name
...
tar --create --file a.tar --verbose /etc
tar
(「テープアーカイブ」の略)は、現在の規則が決定する前に存在していたため、互換性のためにさまざまなモードを保持しています。
「Linuxを吸収する」ために、いくつかの最初のレッスンをお勧めします。
tar
、ps
のように、最初にマイナスがあるかどうかによって動作が異なります)xargs -ifoo
はxargs -i foo
とは異なります)通常のスタイルで必要な動作を得るには、出力ファイル名をf
または-f
の直後に配置します。
$ tar -cvzf casual.tar.gz snapback.txt bucket.txt
snapback.txt
bucket.txt
または:
$ tar -c -f casual.tar.gz -z -v snapback.txt bucket.txt
または、あまり一般的ではないが読みやすいGNU長いスタイルを使用することもできます。
$ tar --create --verbose -gzip --file casual.tar.gz snapback.txt bucket.txt
Tarのmanページで-f
オプションをチェックすると、次のようになります。
-f, --file ARCHIVE use archive file or device ARCHIVE
つまり、-f
オプションに続く次のWordがファイルの名前になります。あなたの例では、-f
の後に、ファイル名として使用されるvz
という文字が続きます。
その後、すべての引数を入力として解析し、vz
と呼ばれるファイルに圧縮します。圧縮しようとすると、tar
は、圧縮するcasual.tar.gz
という名前のファイルがないことに気づき、エラーが発生します。
したがって、-f
の後には、作成するファイルの名前を常に付ける必要があります。