Рассмотрим эту команду:
ls /mydir/*.txt | xargs chown root
Намерение состоит в том, чтобы изменить владельцев всех текстовых файлов в mydirroot
Проблема в том, что если нет .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