次のような色付きのbashプロンプトを使用します。
blue=$(tput setaf 4)
reset=$(tput sgr0)
bold=$(tput bold)
export PS1='($?) \[$bold$blue\]\u@\h:\w\[$reset\]$(__git_ps1)> '
私は通常、ターミナルウィンドウ(gnome-terminal)で作業しますが、フルスクリーンコンソール(CTRL+ALT+F3)。
色付きのプロンプトはGUIターミナルでは問題ありませんが、色が異なって見えるため、全画面で読みにくくなっています。そのため、コンソールウィンドウでは別の色(cyan=$(tput setaf 6)
など)を使用したいと思います。これが機能するためには、どのmodeにいるかを把握し、それに応じて$PS1
を設定する必要があります。
tty
コマンドを試しました。それは与えます
/dev/pts/0 # GUI terminal
/dev/tty3 # console
$TERM
の値も調べてみました。それは与えます
xterm-256color # GUI terminal
linux # console
両方とも私のために働くでしょうが、私の質問は次のとおりです:それはコンソールと端末を確実に区別する正しい方法ですか、それとももっと良い方法がありますか?それは重要です。
これを判断する方法はいくつかありますが、3つの有名な存在です。
tty
-標準入力に接続された端末のファイル名を出力します:
/dev/pts/10
/dev/tty1
この関数 Sergiy Kolodyazhnyyによって書かれたtty
を使用します。
ps hotty $$
(ps --no-header --format tty --pid $$
の略):
pts/10
tty1
who who whom | awk '{ print $2 }'
(実際にはwho
は、 2つの任意の引数 で、who -m
と同じです。これはしゃれにも一致します):
pts/10
tty1
TERM
の値はディストリビューションとリリース間で異なると思われますが、tty
は安定した信頼できる方法です。私はそれを次のように使用します:
if tty|grep -q tty; then
echo "That's a TTY."
else
echo "That's not a TTY."
fi
少なくともgnome-terminal
のwho
には問題があるようです。幸い、この問題を回避するための ラッパースクリプト があります。
便利なリンク: