マルチカラー端末





この出版物では、Linuxシステム管理者(だけでなく)の日常生活を飾るいくつかのトリックについてお話します。 これらはすべて、bashシェルのPS1変数に関連付けられています。 PS1変数は、新しいコマンドを入力するためのプロンプトがどのように見えるかを定義します。 また、各ユーザーは、たとえば〜/ .bashrcファイル(bashの起動時に実行され、構成に含めるために使用される)で、必要に応じて再定義できます。



開始するには、シンプルなオプション、私のお気に入りのコマンドライン形式を検討してください。



PS1='\tj\j \u@\h:\w\n\$ '
      
      





結果は次のようになります。

 17:42:46 j0 olleg@petrel:~ $
      
      





これはPS1変数の通常の使用方法ですが、これで開始していなければ、話は不完全です。 通常、PS1変数では、特殊文字シーケンスがコマンドを入力するためのプロンプトの形式を決定します。 これらのシーケンスの詳細なリストは、この例のbashドキュメントにあります。





それ以上、あなたは何を望んでいるように思えます...しかし、それからもっと面白くなるでしょう。 実際には、特別な制御文字を使用して、表示されるテキストの色、カーソルの色を設定し、Gnome2などのグラフィック端末のタイトルバーを再定義することもできます。 そして、私の意見では、異なるサーバーで実行されている端末が色で分けられていると非常に便利です。 私にとって、各サーバーには色が関連付けられており、この色で各サーバーにコマンドラインとカーソルをペイントします。



.bashrcは2つのファイルに分かれています。.bashrc自体にはすべてのサーバーの共通コードが含まれ、.bash_localにはこのサーバーに固有のコマンドライン設定が含まれます。 .bash_local特別なディレクティブを使用して.bashrcに埋め込みます。 .bash_localから始めましょう。 この記事の文脈では、このサーバーの色を定義する2行があります。



 # .bash_local # change cursor and prompt color cursor_color='#0087FF' prompt_color='33'
      
      





色コードを変数に入れるだけです。 しかし、お気づきのように、カーソルとコマンドラインのテキストの色を設定する方法は異なります。 なんらかの理由で、それはとても歴史的なものになりました。 どのコードによってどの色がエンコードされるかを理解するために、適切な画像があります。



画像



中央はカーソルの色の色指定、下はテキストの色指定です。 ご覧のとおり、テキストとカーソルに海の波の色を使用しています。 なぜなら petrelサーバーの名前(「petrel」)。次に、この色に関連付けます。



さて、.bashrc、私はそれを完全に示していませんが、トピックに関連するものだけを示しています:



 # .bashrc # local stuff [[ -f ~/.bash_local ]] && . ~/.bash_local
      
      





ここで、.bash_localのコードを共有ファイルに貼り付けます。 したがって、前述のサーバー色の変数が決定されます。



 # set to red root_cursor_color='#FF0000' root_prompt_color='196'
      
      





さらに2つの変数を純粋な赤色で定義します。これは、特権ユーザー(root)の端末をマークするために使用されます。



 #my favorite PS1 case "$TERM" in xterm*|rxvt*) PS1='\[\e[38;5;'$prompt_color'm\]\tj\j \u@\h:\w\n' [[ $UID == 0 ]] && { prompt_color=$root_prompt_color;cursor_color=$root_cursor_color; } PS1="$PS1"'\[\e[m\e]12;'$cursor_color'\a\e[38;5;'$prompt_color'm\]\$ \[\e[m\]' ;; *) PS1='\tj\j \u@\h:\w\n\$ ' ;; esac
      
      





ここでは、使用されている端末が確認されます。 不明またはサポートされていない色については、記事の冒頭で説明したように、無色のプロンプト(PS1 = '\ tj \ j \ u @ \ h:\ w \ n \ $')が使用されます。 しかし、たとえば、ターミナル名がxtermまたはrxvtで始まる場合、Gnomeターミナルはこのように自分自身を配置し、色から始めます。 最初の行-テキストの色-サーバーの色を設定し、コマンド入力プロンプトの最初の行を表示します。 サーバーの色で常にペイントされます。 2行目-非特権ユーザーまたは特権ユーザー(root)のどちらで作業しているかを確認します。 ルートの場合-色を赤に再定義します。 3行目-招待の2行目を形成し、ターミナルのカーソルの色を決定します。 つまり そこでは、ユーザーが普通であれば、$とスペースで区切られたカーソルのどちらかがサーバーの色で表示されます。 ルートの場合は、赤い#とスペースで区切られた赤いカーソルのいずれか。



 # If this is an xterm set the title to user@host:dir case "$TERM" in xterm*|rxvt*) PS1="\[\e]0;${debian_chroot:+($debian_chroot)}\u@\h: \w\a\]$PS1" ;; *) ;; esac
      
      





正直なところ、これはDebianのオリジナルの.bashrcから1対1でコピーされています。 このコードは、ウィンドウのタイトルバーを変更し、そこにユーザー、サーバー、およびホームディレクトリに関する情報を配置することを知っています。 しかし、私はこのコードを思いついていなかったので、コメントしません。



結果として、出版物の冒頭の写真のようにする必要があります。



All Articles