GNU/Linux >> Linux の 問題 >  >> Linux

Linux コマンドラインの文字制限

解決策 1:

シェル/OS に課される制限は、通常、10 万または 20 万文字です。

getconf ARG_MAX コマンドの最大入力制限を示します。 Debian システムでは、現在これで端末を開いていますが、131072 が返されます これは 128*1024 です .制限は環境変数によって削減され、私の記憶が正しければ、これらはシェルによって同じ構造に渡されますが、ほとんどの場合、数百文字しか取り除かれません。この値の近似値を見つけるには、env | wc -c を実行します - これは、このマシンのこのログインで現時点で 325 文字であることを示唆しています。

スクリプトはこの完全な長さを許可する可能性がありますが、他のユーティリティが意図的に、または設計上の問題によって独自の制限を課す可能性は低くありません。また、長いコマンド ラインの個々の引数の長さ、および/またはファイルへのパスの長さに人為的な制限がある場合もあります。

解決策 2:

ARG_MAX は確かにコマンド ラインと環境の合計サイズを制限しますが、追加の制限に直面しています:1 つの引数は MAX_ARG_STRLEN より長くしてはなりません (残念ながら 131072 にハードコードされています)。

https://unix.stackexchange.com/questions/120642/what-defines-the-maximum-size-for-a-command-single-argument を参照

解決策 3:

最長の可変長は何ですか?これを理解するには、perl の "x" を使用して非常に長い変数名を作成します:

 VAR=`perl -e 'print "a"x131071'` ; bash a.sh $VAR

私のシステムでは 131071 が動作します:

変数は 131072 に出力されますが、大きすぎます:

VAR=`perl -e 'print "a"x131072'` ; bash a.sh $VAR
bash: /bin/bash: Argument list too long

Linux
  1. Linuxmvコマンド

  2. Linuxduコマンド

  3. Linuxipコマンド

  1. Linuxコマンドラインで牛を飼う

  2. Linuxコマンドラインにアクセスしてください

  3. コマンドラインを使用してLinuxを再起動する方法

  1. Linuxコマンドラインの歴史をマスターするための15の例

  2. Linux でユーザー コマンドを制限する方法

  3. Linux:コマンドラインから日付を設定