画面バッファとダイアログボックス

画面バッファとダイアログボックス

私のスクリプトで別の画面バッファを使用するためにtputを使用しようとしています。以下は私が実行している小さなスクリプトです。

tput smcup
clear
dialog --yesno "Do you want to continue?" 0 0
rc=$?
clear
tput rmcup
if [ "${rc}" == "0" ]; then
  echo Yes
else
  echo No
fi

スクリプトの実行が完了すると、スクリプトを実行する前にプロンプ​​トが占める行数と同じ画面の空白部分(下の画像を参照)が表示されます。理想的にはtput、2番目の画面バッファに切り替える必要があり、実行後は最初の画面バッファに返す必要があります。 スクリプトは2番目の画面に切り替わりますが、不可欠なスペースを残して返されます。

ここに画像の説明を入力してください。

ベストアンサー1

dialog実践の問題だhttp://invisible-island.net/dialog/dialog.html

smcup起動時にそれ自体で+演算を実行しますが、初期化ルーチンが演算を実行してそれを取り消そうとするためだと思います。だから、あらかじめしておくとキャンセルになりますので何の効果もありません。rmcupncursessmcupdialogsmcuprmcup

回避策は、これを行わないように指示するオプションを追加して、端末がサポートしている--keep-tite場合はdialog他のアプリケーションと同様にsmcup起動およびrmcup終了することです。ncurses

あなたの意見によると、別の問題に直面しているようです。あなたが使用している端末は代替画面をサポートしていないため、何をしてもその代替画面は使用できません。存在しません。

ただし、できることは、Cygwin X Server の Putty や Cygwin Unix 端末などの代替画面を持つ他の端末を使用することです。または、リモートサーバーでX端末を実行してXサーバーに接続して表示します。または、端末内でGNUなどの代替画面をサポートする端末ベースの端末エミュレータを実行してくださいscreen

おすすめ記事