次のコマンドを検討してください。
ls /mydir/*.txt | xargs chown root
目的は、すべてのテキストファイルの所有者mydir
をroot に変更することです
問題は、その中に.txt
ファイルがない場合、mydir
xargsはパスが指定されていないというエラーを表示することです。これはエラーがスローされるため無害な例ですが、ここで使用する必要があるスクリプトのように、空白のパスが現在のディレクトリであると見なされる場合があります。そのため、そのコマンドを実行した/home/tom/
場合、結果がなく、そのls /mydir/*.txt
下のすべてのファイルの/home/tom/
所有者がルートに変更されます。
それで、どうすればxargsに空の結果を無視させることができますか?
git branch --merged | grep -v '^* ' | xargs git branch -d
、空の入力でも失敗します
ls
プログラムで使用するためにからの出力をパイプしないでください。mywiki.wooledge.org/ParsingLsを