tar -xvfz foo.tar.gz
はエラーを返しますtar: z: Cannot open: No such file or directory
これは完全に理解できます。f
スイッチはファイル名を想定しているため、最後にする必要があります。
ただし、ハイフンを省略tar xvfz foot.tar.gz
は機能し、ファイルを解凍および解凍します。
私はこれをOS X 10.8とUbuntu 12.04でテストしました。
何かアイデアはありますか?
[編集して追加]
私はいつもtar -zxvf foo.tar.gz
。ただし、この質問は this xkcd が原因で発生し、誰かがtar xvfz
は機能します。
tarには3種類の構文があります( this に従って):
古いオプション構文では、すべての文字が「tar」の後に続き、すべてスペースなしの単一のまとまりに該当する必要があります。オプションの束の後、それらの文字に対する引数が同じ順序に従う限り、文字の順序は実際には重要ではありません。
この古いtarオプションの記述方法は、経験豊富なユーザーでも驚きます。たとえば、次の2つのコマンド:
# tar cfz archive.tar.gz file
# tar -cfz archive.tar.gz file
かなり違います。最初の例では、オプション「f」の値として「archive.tar.gz」を使用し、オプション「z」を認識しています。ただし、2番目の例では、オプション「f」の値として「z」を使用しています。これはおそらく意図したものではありません。
古いオプションは、古いバージョンのtarとの互換性のために残されています。
「-」を使用したコマンドは、次と同等です。
tar -czf archive.tar.gz file
tar -cf archive.tar.gz -z file
tar cf archive.tar.gz -z file
これが、「-」なしではなく「-」なしで例が機能する理由です