プロが教えるわが家の防犯対策術!

tar -C dirIN -c `ls dirIN` | tar -x -C dirOUT
tar -C dirIN -c -f - `ls dirIN` | tar -x -C dirOUT -f -

上の二つのコマンドは、動作が同じになるのでしょうか?
違う(=何か考慮しておかなければならない)ことがあれば教えてください。

A 回答 (2件)

> 上の二つのコマンドは、動作が同じになるのでしょうか?



GNU tarでは「-f」のデフォルトは「-」なので同じになります。

日本語マニュアルには「-f」のデフォルトが「/dev/rmt0」 と書かれていますが、
これは間違いです。LANG=Cを設定して英語マニュアルを見れば正しい記述があり
ますし、何よりソースコード上「-」となっています。

> 違う(=何か考慮しておかなければならない)ことがあれば教えてください。

GNU tar の「-f」のデフォルトはコンパイル時に変更することができます。(※)

※configure 時にDEFAULT_ARCHIVE 環境変数を設定しておけば、それがデフォル
 トになります。設定していない、または空文字列の場合は「-」になります。

また、GNU tar 以外のtar (他のUnixシステムに標準で付属するtar )では
「/dev/rmt0」 がデフォルトになっているかもしれません。

なので、互換性を高めるためにも明示的に「-f」を指定することを強くお勧めし
ます。

もっとも、互換性を高めるなら以下のいずれかの表現とスべき・・・

( cd dirIN && tar cf - `ls` ) | ( cd dirOUT && tar xf - )
( cd dirIN && ls | xargs tar cf - ) | ( cd dirOUT && tar xf - )
    • good
    • 0
この回答へのお礼

レスありがとうございます。

ここまでの説明がもらえるとは、思ってもいませんでした。
感謝です。
勉強になります。精進します。

お礼日時:2012/04/06 09:03

同じになりません。


man tar
で引数の意味を調べてみてください。
特に -f 。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!