Isso me parece uma oportunidade ideal para empregar alguns xargs
(ou 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
A vantagem de usar xargs
ou parallel
é que você pode simplesmente remover oecho
quando estiver pronto para executar o comando de verdade (possivelmente substituindo-o por sudo
, se necessário).
Você também pode usar as opções desses utilitários -p
/ --interactive
(o último é somente GNU) ou --dry-run
( parallel
apenas), para obter confirmação antes de executar cada um ou apenas para ver o que seria executado antes de executá-lo.
O método geral usado acima deve funcionar na maioria dos Unixes e não requer xargs
opções específicas do GNU . As aspas duplas fazer necessidade de ser "escapado" para que eles aparecem literalmente na saída. Note que a "cadeia de substituição," {}
, no xargs -I{}
pode ser qualquer coisa que você prefere, e -I
implica -L1
(executar um comando por linha de entrada ao invés de lotes-los).
GNU Parallel não requer a -I
opção ( {}
é a cadeia de substituição padrão), e dá-lhe a gratificação instantânea de correr muitos postos de trabalho em paralelo, mesmo se você não quer incomodar a aprender sobre qualquer de suas outras características .
Como uma observação lateral, nem tenho certeza se xfs_quota
a -c
opção deve ser usada assim, embora eu não tenha sistemas de arquivos XFS à mão para testar. Você pode nem ter precisado lidar com uma string citada em primeiro lugar (a menos que espere nomes de usuários com espaços em branco, o que eu acho que é possível), pois parece que você pode dar várias -c
opções na mesma linha de comando, de acordo com para a página de manual incluída em xfsprogs
4.5.algo.