xargsは、すべての引数を一度に渡すわけではないようです。マニュアルのxargsexecutes the command (default is /bin/echo) one or more times
によると、この理由は、xargsが渡された引数をグループに切り刻み、グループごとにコマンドに渡すためだと聞きました。これが正しければ、このグループサイズがどのように決定されるかを誰かが知っていますか?ありがとう
8622 次
1 に答える
22
引数を使用し--show-limits
ます。システムの既存の制限が一覧表示されます。
$ xargs --show-limits
Your environment variables take up 4108 bytes
POSIX upper limit on argument length (this system): 2090996
POSIX smallest allowable upper limit on argument length (all systems): 4096
Maximum length of command we could actually use: 2086888
Size of command buffer we are actually using: 131072
グループのサイズは、渡される各引数の長さと上記の制限によって異なります。
参考のために、xargs
マニュアルページから:
POSIX標準では、実装でexec関数への引数のサイズを制限できます。この制限は、環境のサイズを含めて4096バイトまで低くなる可能性があります。スクリプトを移植可能にするために、スクリプトはより大きな値に依存してはなりません。ただし、実際の制限がこれほど小さい実装はありません。--show-limitsオプションを使用して、現在のシステムで有効な実際の制限を検出できます。
于 2011-04-24T17:51:30.427 に答える