Bagi saya ini merupakan peluang ideal untuk mempekerjakan Anda xargs
(atau 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
Keuntungan menggunakan xargs
atau parallel
adalah Anda dapat menghapus perintahecho
saat Anda siap menjalankan perintah nyata (mungkin menggantinya dengan sudo
, jika perlu).
Anda juga dapat menggunakan opsi utilitas -p
/ --interactive
(yang terakhir ini hanya untuk GNU) atau --dry-run
( parallel
hanya), untuk mendapatkan konfirmasi sebelum menjalankan masing-masing, atau hanya untuk melihat apa yang akan berjalan, sebelum Anda menjalankannya.
Metode umum yang digunakan di atas harus berfungsi pada sebagian besar Unix, dan tidak memerlukan xargs
opsi khusus GNU . Kutipan ganda memang perlu "diloloskan" sehingga muncul secara harfiah di output. Perhatikan bahwa "string pengganti," {}
, di xargs -I{}
dapat berupa apa pun yang Anda inginkan, dan -I
menyiratkan -L1
(jalankan satu perintah per baris input daripada mengelompokkannya).
GNU Paralel tidak memerlukan -I
option ( {}
adalah string pengganti default), dan memberi Anda bonus instan menjalankan banyak pekerjaan secara paralel, bahkan jika Anda tidak ingin repot-repot belajar tentang apa saja dari yang lain fitur .
Sebagai catatan, aku bahkan tidak yakin apakah xfs_quota
's -c
opsi seharusnya digunakan seperti ini, meskipun saya tidak memiliki XFS filesystem berguna untuk tes. Anda mungkin tidak perlu berurusan dengan string yang dikutip di tempat pertama (kecuali jika Anda mengharapkan nama pengguna dengan spasi putih di dalamnya, yang saya kira mungkin), karena sepertinya Anda dapat memberikan beberapa -c
opsi pada baris perintah yang sama, menurut ke halaman manual disertakan dengan xfsprogs
4.5.something.