Yuki猫のおうち

気ままに自由に日々を生きるエンジニアのブログ

tarのオプションの順番の話

tarコマンドのオプションについて、面白い挙動をすることが分かったのでメモしておく。

-(ハイフン)の有無で大違い

$tar cfj hoge.tar.gz hoge

$tar -cjf hoge.tar.gz hoge

これはとおる。

が、下のコマンドを実行すると失敗して、jというファイルが生成されてしまう。

$tar -cfj hoge.tar.gz hoge

f:id:yukineko4you:20150702110317p:plain

オプションに順番なんてあるのか...?

と思って調べてみたら、どうやらtarコマンドに限ってはあるらしい。

tarコマンドでオプションの並びが違うことで影響はありますか? - ZDNet Japan

-(ハイフン)をつけた場合に限って、fオプションのすぐ後ろにファイルを指定しないといけないようだ。

つまり、 $tar -cfj hoge.tar.gz hoge

hoge ファイルを hoge.tar.gz にアーカイブして圧縮」じゃなくて「 hoge.tar.gz と hoge を j にアーカイブ」するコマンドと誤認されてしまうというわけだ。

これはオプションに-(ハイフン)をつけた場合のみの挙動らしいので、普段-(ハイフン)なしでtarコマンドを使用している僕は気づかなかったよ...