Saya mencoba memasukkan perintah dengan argumen SANGAT besar (berukuran 1 MB), tetapi tertulis "Daftar argumen terlalu panjang." Bagaimana saya bisa memasukkan argumen itu?
OS:Linux Ubuntu
Jawaban yang Diterima:
Tidak ada cara untuk meneruskan argumen antara executable jika lebih besar dari ARG_MAX
kernel batas.
Jika Anda memiliki daftar argumen yang terlalu panjang, memecahnya menjadi bagian-bagian yang lebih kecil dapat dilakukan mis. dengan xargs
. Ini menjalankan perintah sebanyak yang diperlukan, memberikan argumen sebanyak yang sesuai.
Sintaksnya adalah xargs command <file
. Jika Anda menghilangkan command
, ini menampilkan argumennya, seperti echo
.
Sebagai demo,
xargs -n 4 </etc/motd
akan mencetak empat token pertama pada satu baris (permohonan pertama), empat berikutnya melalui yang lain, dll. (The -n
argumen menetapkan jumlah maksimum argumen, jadi ini tidak menggunakan ARG_MAX
batas sama sekali.)
Jika perintah yang ingin Anda jalankan memiliki efek samping yang tidak diinginkan, ini mungkin tidak akan berhasil. Misalnya, jika command
akan menimpa ./a.out
yang sudah ada sebelumnya file, Anda jelas akan ditinggalkan dengan hasil dari proses terakhir setelah selesai.
Jika Anda dapat mengonfigurasi atau memodifikasi command
jadi ia membaca file, atau input standar, alih-alih argumen baris perintah, yang akan mengatasi pembatasan. File atau aliran bisa lebih besar dari ARG_MAX
, dan sering kali.