Next: Safe File Name Handling, Up: Multiple Files
ファイル名には,引用符,バックスラッシュ,空白文字,そして改行でさえ含
めることが可能なので,処理のデフォルトモードでxargs
を使用しなが
らそれを処理することは安全ではありません.しかし,ほとんどのファイル名
は空白を含まないので,この問題は滅多に発生しません.安全なファイル名だ
と知っているファイルを検索している場合のみ,それについて悩む必要はあり
ません.
応用する際は,名前に特殊文字を含んでいるため,xargs
ファイルをう
まく処理できない場合も多く,失われるデータもあります.この問題の重要性
は,データの重要性に依存し,それを訂正するためにはできるだけ速く,失っ
たものに気づくかに依存します.しかし,ここに,空白で分離した名前の使用
で引き起こされる究極の例があります.以下のコマンドが,毎日cron
で
実行される場合,あらゆるユーザは任意のファイルを削除することが可能です.
find / -name '#*' -atime +7 -print | xargs rm
例えば,以下のようなことが可能でしょう.
eg$ echo > '# vmunix'
/を現在のディレクトリとして,xargs
を実行してしまった場合,
そして,cron
は/vmunixを削除するでしょう.
他のファイルを削除するために,例えば/u/joeuser/.planは,以下のよ うにすることで可能でしょう.
eg$ mkdir '# ' eg$ cd '# ' eg$ mkdir u u/joeuser u/joeuser/.plan' ' eg$ echo > u/joeuser/.plan' /#foo' eg$ cd .. eg$ find . -name '#*' -print | xargs echo ./# ./# /u/joeuser/.plan /#foo