less
vim
nano
などを使用して同様の動作が必要です。
bashを使ってこれを達成できますか?
答え1
less
端末エミュレータがそれをサポートしている場合は、、、vim
などで使用されるのと同じメカニズム、つまりti
termcapte
機能(smcup
およびrmcup
最新のterminfo)を使用してこれを実行できます。彼らはそれぞれメイン画面からセカンダリ画面に切り替えてから戻ります。
システムにこのコマンドがある場合は、次のものをtput
使用できます。
tput smcup # switch to secondary screen
...
tput rmcup # switch back to primary screen
それ以外のxterm
場合は、他のほとんどの端末エミュレータでは次のようになります。
printf '\e[7\e[?47h'
次のようにセカンダリ画面に切り替える必要があります。
printf '\e[2J\e[?47l\e8'
ホーム画面に戻ります(そしてカーソルを元の位置に戻す必要があります)。
echotc
tcshには、次のことができるコマンドが組み込まれています。
tcsh -c 'echotc ti'
...
tcsh -c 'echotc te'
echotc
(またはtcshを使用している場合は直接)。
答え2
これを「代替画面」といいます。ティーああ血 Googleをクリックこの機能がどれほど好きかを教えてください。) 一部の端末は2つの画面バッファをサポートしています。 1つはフルスクリーンアプリケーションで使用され、もう1つはラインベースのアプリケーションで使用されます。 Bashはそれらについて何も知りません。コマンドが単に出力を端末に送信する場合は、端末制御シーケンスを使用してセカンダリ画面に切り替えたり戻したりできます(このコマンドは次の記事で説明されています)。xtermctlseqs)。
printf '\e[?47h'; mycommand; printf '\e[?47l'
代替画面にはスクロールバック機能がないため、最後の出力画面のみが表示されます。これが問題である場合は、簡単な措置を講じてください。
mycommand | less
画面バッファは2つだけです。もっと欲しい場合は、適切なスクリーンマルチプレクサを使用してください。画面またはマルチプレクサ。
答え3
Bashは画面について何も知りません(実際の画面を見なくても実行できます)。ただし、標準出力と標準エラーをすべてのファイルまたはパイプにリダイレクトできます。
答え4
screen
現在の答えのどれも私のコンピュータで動作していないようですが、私に合うようなコマンドを見つけました。