画面に表示したいいくつかのテキストを含むファイルがディスクにあります。次のことができます。
dialog --yesno "`cat FILE`" 10 100
FILE
ただし、サイズが大きくなるとシェルのコマンド長制限を超える可能性があり心配されます。これを行う他の方法はありますか?
ユーザーがスクロールできるようにファイルの内容を表示したいと思います。本物ロング)次に実行するアクションを選択します。 (「はい」ボタンと「いいえ」ボタンのラベルをもう少し意味のあるものに変更しました。)おそらく、このようにコマンドラインから6ページのテキストを送信しようとすると失敗します。
答え1
dialog
このマニュアルページを見ると、テキストをパラメータとして渡すことを避ける方法はないようです。データをパイプで接続したり、ファイルから直接読み取ったりする方法はないようです。ただし、パラメータサイズ制限を使用できますhead
。ほとんどのLinuxシステムでは、単一パラメータの最大サイズは32KiBなので、次のことができます。
dialog --max-input 32768 --yesno "$(head -c 32K FILE)" 10 100
単一パラメータの最大サイズが定義されており、インストールされている場合はカーネルヘッダMAX_ARG_STRLEN
にあります。/usr/include/linux/binfmts.h
通常、この値は1KiBPAGE_SIZE * 32
です(参照)。PAGE_SIZE
/usr/include/linux/a.out.h
もちろん、これらの値は完全に再構成できます。また、これはMAX_ARG_STRLEN
Linux専用で、Linux 2.6.23で導入されました。実際の制限の詳細については、次を参照してください。コマンドの単一パラメータの最大サイズを定義するものは何ですか?。
修正する
一体この--file
主張を実際に使うことができます。 (テストされていません)次のことができるようです。
{
echo -n \"
sed 's/"/\"/' FILE
echo -n \"
} | dialog --yesno --file '&1' 10 100
sed
ファイルに引用符がないことがわかっている場合は、引用符は必要ありません。または、必要なすべての内容(引用符など)をファイルに入れて、次の手順を--yesno
実行します。
dialog --file FILE