別の「画面」に出力を表示し、完了すると正常に戻ります。

別の「画面」に出力を表示し、完了すると正常に戻ります。

less vim nanoなどを使用して同様の動作が必要です。

bashを使ってこれを達成できますか?

答え1

less端末エミュレータがそれをサポートしている場合は、、、vimなどで使用されるのと同じメカニズム、つまりtitermcapte機能(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'

ホーム画面に戻ります(そしてカーソルを元の位置に戻す必要があります)。

echotctcshには、次のことができるコマンドが組み込まれています。

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現在の答えのどれも私のコンピュータで動作していないようですが、私に合うようなコマンドを見つけました。

関連情報