Это выглядит как идеальная возможность нанять вас xargs
(или GNU Parallel ):
getent passwd \
| awk -F: '$3>=1000 && $1!="nfsnobody" {print $1}' \
| xargs -I{} \
echo xfs_quota -x -c \"limit bsoft=5g bhard=6g {}\" /home
# output:
# xfs_quota -x -c "limit bsoft=5g bhard=6g userone" /home
# xfs_quota -x -c "limit bsoft=5g bhard=6g usertwo" /home
Преимущество использования xargs
или parallel
заключается в том, что вы можете просто удалить,echo
когда будете готовы запустить команду по-настоящему (возможно, заменив ее sudo
, если необходимо).
Вы также можете использовать опции -p
/ --interactive
(последние только для GNU) или --dry-run
( parallel
только) этих утилит , чтобы получить подтверждение перед запуском каждого или просто посмотреть, что будет запущено, прежде чем запускать его.
Общий метод, использованный выше, должен работать в большинстве Unix-систем и не требует специфических для GNU xargs
опций. Двойные кавычки делают необходимость быть «убежали» , так что они появляются буквально на выходе. Обратите внимание , что «строка замены» {}
, в xargs -I{}
может быть все , что угодно, и -I
предполагает -L1
(запустить одну команду за входной линии , а не дозированием их).
GNU Parallel не требует -I
опции ( {}
это замена строки по умолчанию), и дает вам мгновенный бонус работает много рабочих мест , параллельно, даже если вы не хотите заморачиваться узнать о какой - либо из его других особенностей .
В качестве примечания, я даже не уверен , что xfs_quota
«S -c
опция должна быть использована , как это, хотя у меня нет XFS не файловые системы удобно проверить. Вам, возможно, даже не понадобилось иметь дело с строкой в кавычках (если вы не ожидаете, что имена пользователей с пробелами в них, что я думаю, возможно), так как похоже, что вы можете задать несколько -c
параметров в одной командной строке, в зависимости от на страницу xfsprogs
руководства, включенную с 4.5.