Làm cách nào tôi có thể thay đổi màu hardstatus của màn hình dựa trên người dùng đã đăng nhập?


8

Tôi đã không chỉnh sửa / tạo tệp .screenrc trong một thời gian, nhưng đây là những gì tôi hiện đang sử dụng:

# 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

Tôi thực sự không nhớ mọi thứ trong dòng hardstatus của mình là gì, nhưng tôi muốn tìm hiểu làm thế nào tôi có thể thay đổi màu tên máy chủ dựa trên người dùng đã đăng nhập. Điều này có khả thi không? Ngay bây giờ, tên máy chủ có màu vàng khi tôi đăng nhập dưới bất kỳ người dùng nào; nhưng tôi muốn nó có màu đỏ nếu tôi root. Đây có phải là thứ có thể thay đổi trong tệp .bashrc của tôi không? Tôi có cái này trong .bashrc để thay đổi tên cửa sổ màn hình mới thành tên máy chủ của máy chủ mà tôi đã kết nối với:

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

Cảm ơn vì bất kì sự giúp đỡ!

BIÊN TẬP

Tôi đã thử thêm tệp này vào tệp .bashrc của mình, nhưng nó chỉ đặt mã ANSI ở phía trước tên máy chủ trong màn hình cứng của tôi:

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

CHỈNH SỬA 2

Tôi cũng đã thêm mã màu ANSI thực tế (ví dụ \[\033[31m\]:) và mã thoát màn hình (ví dụ %kr:) vào câu lệnh trên trong tôi .bashrc, nhưng không hoạt động.

EDIT 3

Nếu tôi sử dụng điều này làm dòng lệnh nhắc nhở, tên máy chủ sẽ xuất hiện màu đỏ phía trước PS1 của tôi:

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

Nếu tôi sử dụng lời nhắc sau, tên cửa sổ sẽ thay đổi thành tên máy chủ (CÓ!); nhưng màu vẫn là mặc định (KHÔNG!):

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

Tôi cũng đã thử thay thế \033[31m(và chỉ [31m) bằng lối thoát màu màn hình (% kr), nhưng điều đó cũng không hoạt động.


Bạn muốn tô màu nó dựa trên người dùng mà bạn đã đăng nhập kể từ khi một người dùng nào đó đăng nhập vào hệ thống?
slm

Đúng. Tôi muốn làm cho nó để tên máy chủ của máy chủ chuyển sang màu đỏ khi tôi đăng nhập vào máy chủ đó với quyền root. Ví dụ: trong tệp .bashrc của tôi, tôi có một dòng thay đổi PS1 của tôi thành tất cả văn bản màu đỏ khi tôi đăng nhập bằng root. Tôi muốn mô phỏng hành vi này với tên máy chủ trong màn hình.
EGr

Câu trả lời:


1

Hãy xem Q & A này.

Cụ thể câu trả lời này, https://unix.stackexchange.com/a/16433/7453 .

Ý tưởng chung là bạn duy trì 2 screenrctệp khác nhau với màu sắc và dựa trên tệp $USERtrong bashrctệp của bạn, bạn trỏ biến môi trường SCREENRCtới một tệp cho một người dùng nhất định.


Tôi sẽ xem qua một chút. Câu hỏi duy nhất tôi có liên quan đến vấn đề này là liệu cả hai .screenrctập tin có hoạt động cùng một lúc không? Ví dụ: nếu tôi mở màn hình như chính mình sau đó sudo -sđể root trên một máy khác trong phiên màn hình đó, các cửa sổ màn hình khác của tôi có giữ màu vàng không và tên (tên máy chủ) của cửa sổ tôi vừa chuyển sang màu đỏ?
EGr

Tôi không biết nếu điều đó là có thể, có thể là như vậy, nhưng nó vẫn hơi khác thường, ý tôi là, nếu bạn ở trong cùng một phiên màn hình, nó sẽ chạy bằng cách sử dụng tương tự .screenrc. Với hai phiên bản màn hình riêng biệt, thật đơn giản để thực hiện, chỉ cần hai cấu hình riêng biệt.
13 lúc 14:30

Đó là những gì tôi giả định, tôi sẽ tiếp tục tìm kiếm và cập nhật chuỗi nếu tôi tìm thấy giải pháp (hoặc nếu người khác có). Cảm ơn đã giúp đỡ!
EGr
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.