sshの終了/ログアウト後のターミナルの「リセット」色


21

リモートサーバーにSSH接続すると、端末の色が変わるのが好きです。私が使用してsettermこれを成し遂げるために、私のリモート〜/ .bashrcのファイルに。ただし、Iのexit場合、端末の色はローカルの色にリセットされません。

私は問題を解決しましたが、それが最善の解決策であるかどうかはわかりません。これが私が思いつくものです。

リモートサーバーの〜/ .bash_logoutに、以下を配置します。

echo -e "\033[0m"
/usr/bin/clear

好奇心から:誰もがより良い方法を知っていますか?(http://edoceo.com/liber/linux-bash-shellecho -e "\033[0m"から行を得ました)


2
tput代わりに色の変更に使用することをお勧めします。調べる。
ラム

どの色をどのように設定していますか?プロンプト(PS1)を意味しますか?
テルドン14年

回答:


37

より良い:
tput sgr0通常は同等ですecho -en "\e[0m"

違いは、端末タイプがANSI以外の場合、tputを使用すると適応することであり、適切に設定されていることです。

man 5 terminfo より多くのコードを使用します。

そこには「リセット」がありますので、tput reset動作するはずです。


$ echo -e "\ e [7m TEST \ e [0m"  
 TEST   
$ echo -e "$(tput rev)TEST $(tput sgr0)"  
 TEST   
$   

(テストプリントは背景/前景色を交換する必要があり、ここでは表示できません-「エミュレート」のみ)


これには別のオプションがありますが、オタクではありません。

util-linux(ubuntu)パッケージにはsetterm(シェルユーティリティ)が含まれています。

入力するsetterm --helpと、利用可能なオプションが表示されます。


の実際の出力 tput sgr0

$ tput sgr0 | od -t x1z
0000000 1b 28 42 1b 5b 6d                                >.(B.[m<
0000006

...端末の設定方法によって異なります。たとえば

$ set | grep TERM
TERM=xterm-256color

上記のため。


$ infocmp ansi
    ファイルからinfocmpを使用して再構築:/ lib / terminfo / a / ansi
ansi | ansi / pc-termは色と互換性があり、
    am、mc5i、mir、msgr、
    カラー#8、cols#80、it#8、lines#24、ncv#3、pairs#64、
    acsc = + \ 020 \、\ 021- \ 030. ^ Y0 \ 333` \ 004a \ 261f \ 370g \ 361h \ 260j \ 331k \ 277l \ 332m \ 300n \ 305o〜p \ 304q \ 304r \ 304s_t \ 303u \ 264v \ 301w \ 302x \ 263y \ 363z \ 362 {\ 343 | \ 330} \ 234〜\ 376、
    bel = ^ G、blink = \ E [5m、bold = \ E [1m、cbt = \ E [Z、clear = \ E [H \ E [J、
    cr = ^ M、cub = \ E [%p1%dD、cub1 = \ E [D、cud = \ E [%p1%dB、cud1 = \ E [B、
    cuf = \ E [%p1%dC、cuf1 = \ E [C、cup = \ E [%i%p1%d;%p2%dH、
    cuu = \ E [%p1%dA、cuu1 = \ E [A、dch = \ E [%p1%dP、dch1 = \ E [P、
    dl = \ E [%p1%dM、dl1 = \ E [M、ech = \ E [%p1%dX、ed = \ E [J、el = \ E [K、
    el1 = \ E [1K、home = \ E [H、hpa = \ E [%i%p1%dG、ht = \ E [I、hts = \ EH、
    ich = \ E [%p1%d @、il = \ E [%p1%dL、il1 = \ E [L、ind = ^ J、
    indn = \ E [%p1%dS、invis = \ E [8m、kbs = ^ H、kcbt = \ E [Z、kcub1 = \ E [D、
    kcud1 = \ E [B、kcuf1 = \ E [C、kcuu1 = \ E [A、khome = \ E [H、kich1 = \ E [L、
    mc4 = \ E [4i、mc5 = \ E [5i、nel = \ r \ E [S、op = \ E [39; 49m、
    rep =%p1%c \ E [%p2%{1}%-%db、rev = \ E [7m、rin = \ E [%p1%dT、
    rmacs = \ E [10m、rmpch = \ E [10m、rmso = \ E [m、rmul = \ E [m、
    s0ds = \ E(B、s1ds = \ E)B、s2ds = \ E * B、s3ds = \ E + B、
    setab = \ E [4%p1%dm、setaf = \ E [3%p1%dm、
    sgr = \ E [0; 10%?%p1%t; 7%;%?%p2%t; 4%;%?%p3%t; 7%;%?%p4%t; 5%;%? %p6%t; 1%;%?%p7%t; 8%;%?%p9%t; 11%; m、
    sgr0 = \ E [0; 10m、smacs = \ E [11m、smpch = \ E [11m、smso = \ E [7m、
    smul = \ E [4m、tbc = \ E [3g、u6 = \ E [%i%d;%dR、u7 = \ E [6n、
    u8 = \ E [?%[; 0123456789] c、u9 = \ E [c、vpa = \ E [%i%p1%dd、

SEE ALSO (man pages):
       tic(1) infocmp(1), captoinfo(1), infotocap(1), toe(1),  
       ncurses(3NCURSES), term(5).  terminfo(5).

詳細については、ここから始めてください。https://en.wikipedia.org/wiki/Terminfo
ncursesプログラマーズガイド-Google ブックス

注:ncursesは、termcap、terminfo、およびもちろんcursesのインターフェースを提供します。


echo -e "\e \033 \x1b " | od -t x1z-最も読みやすいのはどれですか?
ハヌ

tput sgr0とは異なるものを返します。\e[0mこれa=$(tput sgr0); set | grep ^a=を見て、結果を確認してください。また、同等のsetterm オプションは\e[0m何ですか?
SebMa

ANSIタイプの端末の\e[0m場合、等しいか等しいことに注意して\e[mください。端末がANSIでない場合、tput sgr0はまったく異なるものを提供する場合があります。実際に使用している端末は、terminfoデータベースで異なる設定がされている可能性があるため、ANSI端末でも確認できません。
ハヌ

TERM=ansi a=$(tput sgr0); set | grep ^a=結果はa=$'\E[0;10m'です。これは、異なる見えます\e[0m
SebMa

はい?「実際に使用している端末は、terminfoデータベースで異なる設定になっている可能性があるため、ANSI端末でも確認できません。」上記でわかるように、そのバリアントには\e(B\e[m違いがあります。
ハヌ

17

「リセット」コンソールコマンドを探していると思います


2
リセットの問題は、コンソールのすべてのコンテンツが消去されることであり、場合によってはそれが望んでいないことです。
ニグレシアス

3

リモートの.bash_logoutでこれを使用すると、より適切な場合があります。

tput init

すべての.bash_logoutでこれを一般的なグッドプラクティスとして(そしておそらく〜/ .profileでも)持っていると良いかもしれません。


2

必要な色をリモートアカウントの〜/ .bashrcに設定すると、ログイン時に有効になり、終了時にローカル設定に戻ります。


私もそう思いました。ただし、sshを終了しても元に戻りませんでした。たぶんそれは、.bashrcでsettermを使用していたためです(GNOME端末を使用)。.bashrcで配色を設定する別の方法を使用していますか?
dgo.a

GNOMEを使用している場合、Linuxを実行していると想定しています。私はUbuntuを使用していますが、プロセスはディストリビューション全体でかなり似ていると推測しています。ファイルをバックアップしてからテキストエディターで開き、PS1 =という行からコンテンツを編集できます。情報はnovell.com/coolsolutions/tools/17142.htmlで見つけることができます。これは、.bashrcファイルについて知りたいことよりも多くを伝えます。
イッツチャック

1
ええ、いいえ。端末の設定は、端末で実行していることに基づいていません。彼らは(異形化!)あなたがローカル、リモート、スワヒリ語などで働いているかどうかは気にしません。シンプルなステートマシンです。コマンドを使用して何かに変更したので...コマンドを使用して別のものに変更する必要があります。.bash_logoutソリューションは、sshコマンドをラップするエイリアス/関数を作成する場合を除き、最良の方法です。Blech。より簡単に、PS1プロンプト出力の一部(設定が何であれ)を作成します。マシンにログインすると、マシンが変更されてログアウトされ、古いプロンプトが復元されます。
lornix
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.