Esto me parece una oportunidad ideal para emplear algunos xargs
(o GNU Paralelo ):
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
La ventaja de usar xargs
o parallel
es que simplemente puede eliminar elecho
cuando esté listo para ejecutar el comando de verdad (posiblemente reemplazándolo con sudo
, si es necesario).
También puede usar las opciones de estas utilidades -p
/ --interactive
(esta última es solo GNU) o --dry-run
( parallel
solo), para obtener confirmación antes de ejecutar cada una, o simplemente para ver qué se ejecutaría, antes de ejecutarla.
El método general utilizado anteriormente debería funcionar en la mayoría de los Unix, y no requiere xargs
opciones específicas de GNU . Las comillas dobles hacen necesidad de ser "escaparon" de modo que aparezcan literalmente en la salida. Tenga en cuenta que la "cadena de reemplazo" {}
, en xargs -I{}
puede ser cualquier cosa que prefiera, y-I
implica-L1
(ejecutar un comando por línea de entrada en lugar de procesamiento por lotes para arriba).
Paralelo GNU no requiere la -I
opción ( {}
es la cadena de sustitución por defecto), y le da el bono instantáneo de funcionamiento de muchos puestos de trabajo en paralelo, incluso si usted no quiere molestarse en aprender acerca de cualquier de sus otras características .
Como nota al margen, ni siquiera estoy seguro de si xfs_quota
's -c
se supone posibilidad de ser usada como este, aunque no tengo ni sistemas de archivos XFS útil para la prueba. Es posible que ni siquiera haya necesitado lidiar con una cadena entre comillas en primer lugar (a menos que espere nombres de usuario con espacios en blanco, lo que supongo que es posible), ya que parece que puede dar múltiples-c
opciones en la misma línea de comando, de acuerdo con a la página de manual incluida con xfsprogs
4.5.algo.