LoginSignup
34
32

More than 5 years have passed since last update.

Bashでssh接続時、接続先によってプロンプトの文字色/背景色を変える

Last updated at Posted at 2016-01-20

何をしたいのか?

ssh接続先が複数あるとき、
マシンAだと思っていたらマシンBに接続していて、間違ってコマンド実行してしまった!
などのエラーをふせぐために、プロンプトの見た目を変えたい。

結論

下記のようにシェルスクリプトを作成し、

ssh-change-prompt.sh
#!/bin/bash

if [[ "$@" == foo ]]; then
  ssh foo -t "export PS1='\[\e[32;40m\]\u@\h \W$\[\e[m\] '; bash --login"
elif [[ "$@" == bar ]]; then
  ssh bar -t "export PS1='\[\e[30;42m\]\u@\h \W$\[\e[m\] '; bash --login"
else
  ssh $@
fi

エイリアスを作成したシェルスクリプトに設定する。

alias ssh=/hoge/fuga/ssh-change-prompt.sh

設定後、シェルスクリプト内に設定した接続先へssh接続を行うと、
プロンプトの文字色や背景色が変更されている。

詳細

1,プロンプトとは

prompt.png
これ

ここで表示している内容は、PS1という環境変数で定義されている。
echo $PS1
で、内容を確認することができる。
prompt2.png

ここで、

特殊文字  意味
\u 現在のユーザのユーザ名
\h ホスト名のうち最初の `.' までの部分
\W 現在の作業ディレクトリのベース名

を意味している。
詳細は
https://linuxjm.osdn.jp/html/GNU_bash/man1/bash.1.html#lbCE
こちらを参考にした。

この環境変数PS1を書き換えることにより、
プロンプトを変更することができる。

2,ローカルでプロンプトを変える

環境変数PS1を書き換えることで、プロンプトを変更することができる。
ここでは、プロンプトの内容は変えず、文字色や背景色だけを変更する。

export PS1='\[\e[30;42m\]\u@\h \W$\[\e[m\]' 

上記のコマンドで、プロンプトの文字色、背景色を変えることができる。
prompt3.png

色指定時の構文などの詳細については、
http://www.m-bsys.com/linux/echo-color-1
こちらを参考にした。

3,ssh接続時、リモートマシンにコマンドを渡す

ssh foo -t "hogecommand'; bash --login"

hogecommandを実行した結果をログインシェルとして使い、それを
仮想端末で利用できるようにする。

4, ssh接続時、接続先によってプロンプトの文字色/背景色を変える

2,3 を組み合わせてシェルスクリプトを作る。

ssh-change-prompt.sh
#!/bin/bash

if [[ "$@" == foo ]]; then
  ssh foo -t "export PS1='\[\e[32;40m\]\u@\h \W$\[\e[m\] '; bash --login"
elif [[ "$@" == bar ]]; then
  ssh bar -t "export PS1='\[\e[30;42m\]\u@\h \W$\[\e[m\] '; bash --login"
else
  ssh $@
fi

接続先fooでは、文字色がGreenで背景がBlack
接続先barでは、文字色がBlackで背景がGreen
となるように設定する。

このシェルスクリプトへエイリアスを設定し、ssh接続先に実行することで、
接続先によってプロンプトの文字色/背景色を変えることができた。

補足

・リモートマシンの.bash_profileなどにPS1の設定を書いておけば、ローカルでシェルスクリプトを作成したり、エイリアスを設定しなくてもよい。今回この方法で行ったのは、リモートマシンの.bash_profileを変更したくなかったため。

34
32
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
34
32