端末のリセット


1

ターミナルではShell、メニュー、そこにリセット用の2つのオプションは次のとおりHard ResetReset。前者は画面をクリアします。後者は、厄介なエスケープシーケンスの後に修正するだけです。

それが表示されHard Reset、bashの組み込みに相当しますresetReset(ソフトバージョン)と同等のものは何ですか?stty sane

(SSH接続が切断された後、画面をクリアせずに端末をリセットしたいのですが、メニューオプションは機能しますが、自動にしたいです。)


これはstty saneとまったく同じではありません。小さな実験で表示できます。shを実行して、シェルがttyを正常な値にリセットしないようにします。エコーをオフにするには、stty -echoを実行します。stty saneを実行すると、エコーが戻ります。その後、再びstty -echoを実行し、ターミナルをソフトリセットします。まだエコーはありません。また、stty saneとターミナルのリセット異なることに影響するはずです。sttyは、オペレーティングシステムの端末へのインターフェイスを制御しますが、端末のリセットは端末自体に影響します(実際の端末の時代には、ハードウェアの別の部分でした)。
トゥールポールソン

回答:


1

おそらく、使用されているかどうかに関係なく、stty sane端末およびTERMタイプ(rs1およびilk、を参照terminfo(5))によって異なるさまざまなリセット文字列もあります。バイトは。たとえば、Terminal.appwith TERM=xtermは、リセットエスケープシーケンスとは異なりますTERM=xterm-256color

% infocmp | grep rs'[123]'
    rmul=\E[24m, rs1=\Ec, rs2=\E[!p\E[?3;4l\E[4l\E>, sc=\E7,
% echo $TERM
xterm
% TERM=xterm-256color infocmp | grep rs'[123]'
    rmso=\E[27m, rmul=\E[24m, rs1=\Ec\E]104\007,
    rs2=\E[!p\E[?3;4l\E[4l\E>, sc=\E7,

自動クリーンアップでは、ラップするシェル関数でssh十分な場合があります。次のコードは、シェルの終了コード(プログラムによって実際に返される16ビットの終了ステータスワードとは異なります)を保持しようと努力し、さまざまなものをリセットします。これで十分かどうかは、リモートエンドが何をしているか、どのようにクリーンアップするかによって異なります。

function ssh() {
   local ret
   command ssh "$@"
   ret=$?
   stty sane
   # (optional) reset string, see terminfo(5)
   tput rs1
   # (optional) clear junk linux likes to spam terminal title bar with
   printf "\033]2;\007"
   return $ret
}

端末をリセットする他のメソッド

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.