私のスクリプトはいくつかのテキストをエコーし、さらに処理します。 tputを使って画面を消去し、画面の最初の行を維持したいと思います。
例えば。
echo Started
seq 1000
tput cup 1 0 && tput ed
このように、Startedは画面に残り、他のすべては消去されますが、出力が小さい場合(例:seq 10)でのみ機能し、より長いスクロール出力では機能しません。
答え1
一部の端末ではスクロール領域を定義できます。
tput csr 1 "$(( ${LINES:-$(tput lines)} - 1 ))"
tput clear
echo Started
seq 1000
「開始」行が画面からスクロールしないように、2番目の行から最後の行までスクロール領域を設定します。それから:
tput cup 1 0 && tput ed
最後の行から2番目の行をもう一度消去します。
詳細については、terminfo(5) を参照してください。
バージョン608以降、非スクロールヘッダー行を指定するオプションless
もあります。--header=lines[,cols]
{
echo Started; seq 1000
} | less --header=1
復帰後も画面に残るタイトルを-X
含む出力オプションを追加できます。エスケープシーケンスのグラフィック再生を許可し、入力が画面に合う場合はページを付けないオプションもless
参照してください。-R
less
-F