ログインしたユーザーに基づいて画面のハードステータス色を変更するにはどうすればよいですか?


8

しばらく.screenrcファイルを編集/作成していませんが、これは私が現在使用しているものです:

# Turn off the screen startup message
startup_message off

# Define format of bottom navigation/status/date/etc. line
hardstatus alwayslastline "%{yk}[ %H ] %-Lw%50>%{gk}(%{-}%n-%t%{gk})%{-}%+Lw%< %=%{yk}[ %c %d.%m.%Y ]"

# Increase scrollback buffer to 30000 lines
defscrollback 30000

正直に言って、hardstatus行のすべてが何を表しているのか覚えていませんが、ログインしているユーザーに基づいてホスト名の色を変更する方法を知りたいのですが、これは可能ですか?現在、どのユーザーでもログインしていると、ホスト名は黄色になります。でもルートなら赤にしたいです。これは私の.bashrcファイルで変更できるものですか?これを.bashrcに入れて、新しい画面ウィンドウ名を、接続しているサーバーのホスト名に変更します。

# Set screen window title
case "$TERM" in
screen)
  PROMPT_COMMAND='echo -ne "\033k$HOSTNAME\033\\"'
  ;;
esac

助けてくれてありがとう!

編集

これを.bashrcファイルに追加しようとしましたが、ANSIコードが画面のハードステータスのホスト名の前に配置されています。

case "$TERM" in
screen)
  if (( $UID == 0 )); then
    PROMPT_COMMAND='echo -ne "\033k$FRED$HOSTNAME$RS\033\\"'
  else
    PROMPT_COMMAND='echo -ne "\033k$HOSTNAME\033\\"'
  fi
  ;;
esac

編集2

実際のANSIカラーコード(ex:)\[\033[31m\]と画面エスケープコード(ex:)%krをmyの上記のステートメントに追加しました.bashrcが、どちらも機能しませんでした。

編集3

これをプロンプトコマンドラインとして使用すると、PS1の前にホスト名が赤で表示されます。

PROMPT_COMMAND='echo -ne "\033[31m$HOSTNAME\033\\"'

次のプロンプトを使用すると、ウィンドウ名がホスト名に変わります(YES!)。しかし、色はデフォルトのままです(NO!):

PROMPT_COMMAND='echo -ne "\033[31m\033k$HOSTNAME\033\\"'

私はまた、スクリーンカラーエスケープ(%kr)で\033[31m(そして[31m)を置き換えてみましたが、それも機能しませんでした。


特定のユーザーがシステムにログオンしているかどうかのように、ログインしているユーザーに基づいて色を付けたいですか?
slm

はい。rootとしてサーバーにログインすると、サーバーのホスト名が赤くなるようにしたい。たとえば、私の.bashrcファイルには、rootとしてログインしたときにPS1をすべて赤いテキストに変更する行があります。この動作を画面のホスト名でエミュレートしたいと思います。
EGr 2013年

回答:


1

このU&L Q&Aをご覧ください。

具体的には、この答えはhttps://unix.stackexchange.com/a/16433/7453です。

一般的な考え方はscreenrc、色付きの2つの異なるファイルを保持$USERし、bashrcファイル内のに基づいてSCREENRC、特定のユーザー用の環境変数を環境変数にポイントすることです。


見てみます。これに関する唯一の質問は、両方の.screenrcファイルが同時に機能するかどうかです。たとえば、自分で画面を開いて、sudo -sその画面セッション内の別のマシンでrootにすると、他の画面ウィンドウは黄色のままで、rootになったばかりのウィンドウの名前(ホスト名)が赤に変わりますか?
EGr 2013年

それが可能かどうかはわかりませんが、それは可能かもしれませんが、それでも通常とは少し異なります。つまり、同じ画面セッション内にいる場合は、同じを使用して実行されます.screenrc。2つの個別の画面インスタンスを使用すると、2つの個別の構成を使用するだけで簡単に実行できます。
njsg 2013年

それが私が想定したものであり、解決策が見つかった場合(または他の誰かが解決策を持っている場合)は引き続きスレッドを検索して更新します。助けてくれてありがとう!
EGr 2013年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.