Рассмотрим эту команду:
ls /mydir/*.txt | xargs chown root
Намерение состоит в том, чтобы изменить владельцев всех текстовых файлов в mydir
root
Проблема в том, что если нет .txt
файлов, mydir
то xargs выдает ошибку, сообщающую, что путь не указан. Это безвредный пример, потому что выдается ошибка, но в некоторых случаях, например, в сценарии, который мне нужно здесь использовать, предполагается, что в качестве текущего каталога используется пустой путь. Таким образом, если я запускаю эту команду с /home/tom/
тех пор, если нет результатов для ls /mydir/*.txt
всех файлов /home/tom/
, их владельцы меняются на root.
Так как же я могу заставить xargs игнорировать пустой результат?
git branch --merged | grep -v '^* ' | xargs git branch -d
, который также не срабатывает при пустом вводе
ls
для программного использования; см. mywiki.wooledge.org/ParsingLs