ログインしたユーザーに応じて画面のハード状態の色を変更するには?

ログインしたユーザーに応じて画面のハード状態の色を変更するには?

.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行のすべてが何を表すのか覚えていませんが、ログインしているユーザーに基づいてホスト名の色を変更する方法を理解しようとしています。可能ですか?これで、任意のユーザーとしてログインするときにホスト名は黄色ですが、rootの場合は赤が必要です。 .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

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

編集3

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

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

次のプロンプトを使用すると、ウィンドウ名はホスト名に変更されますが(はい!)、色はデフォルト値のままです(いいえ!)。

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

\033[31mまた、を画面の色のエスケープ(%kr)に置き換えようとしましたが、やはり[31m機能しませんでした。

ベストアンサー1

U&L Q&Aをチェックしてください。

特にこの答えはhttps://unix.stackexchange.com/a/16433/7453

一般的なアイデアは、2つの異なるscreenrcカラーファイルを維持し、ファイル$USERの色に基づいてbashrc環境変数がSCREENRC特定のユーザーの環境変数を指すことです。

おすすめ記事