사용자에 따라 프롬프트의 색 구성표를 어떻게 변경할 수 있나요?

사용자에 따라 프롬프트의 색 구성표를 어떻게 변경할 수 있나요?

내 현재 프롬프트는 다음과 같이 색상이 지정되고 편집됩니다.

#!/bin/bash

# GIT Prompt help
if tput setaf 1 &> /dev/null; then
    tput sgr0; # reset colors
    bold=$(tput bold);
    reset=$(tput sgr0);
    txtund=$(tput sgr 0 1);
    black=$(tput setaf 0);
    blue=$(tput setaf 33);
    cyan=$(tput setaf 37);
    green=$(tput setaf 64);
    orange=$(tput setaf 166);
    purple=$(tput setaf 125);
    red=$(tput setaf 124);
    violet=$(tput setaf 61);
    white=$(tput setaf 15);
    yellow=$(tput setaf 136);
else
    bold='';
    reset="\e[0m";
    black="\e[1;30m";
    blue="\e[1;34m";
    cyan="\e[1;36m";
    green="\e[1;32m";
    orange="\e[1;33m";
    purple="\e[1;35m";
    red="\e[1;31m";
    violet="\e[1;35m";
    white="\e[1;37m";
    yellow="\e[1;33m";
fi;
ORIG=$PS1
HOST=$HOSTNAME
PS1="\[${txtund}${green}\]${HOST}\[\[${reset}\]";
PS1+="\$(prompt_git \"\[${white}\] on \[${violet}\]\")";
PS1+="\[${reset}\]";
PS1+="\[ at - ${orange}\W\]";
PS1+="\[${reset}\]";
PS1+="\[ - \u \]";
PS1+="\n\$ ";

PS1+="[ - \u ]" 행에 현재 사용자가 표시된다는 것을 알고 있습니다. 그런데 뿌리라면 그 부분이 빨간색이었으면 좋겠어요. 다른 모든 사용자의 기본 색상은 회색이어야 합니다. 현재 사용자에 따라 해당 섹션의 색상을 변경할 수 있는 방법이 있습니까? 아니면 변수를 선언하고 IF 문을 사용하여 해당 섹션이나 수정된 ​​섹션을 빨간색으로 삽입해야 합니까?

내 예상 출력은 모든 일반 사용자에 대해 회색으로 명명된 사용자입니다. 뿌리는 빨간색이어야합니다. BASH 입니다.

답변1

사용자가 루트인지 확인하고 PS1을 설정하는 방법에는 여러 가지가 있습니다.

  • Username, use $USER, $(whoami)( .NB 의 출력 $(whoami). 슈퍼유저는 다른 이름으로 불릴 수도 있지만 일반적으로 .NB 라고 합니다 root.
  • 사용자의 ID, $EUID또는 사용 $UID(참조여기정보를 얻기 위해).사용자 ID0은 항상 슈퍼유저입니다.

예를 들어 이 줄을 다음으로 바꿀 수 있습니다 PS1+="\[ - \u \]".

if [ $EUID -eq 0 ]; then
    PS1+="\[ - ${red}\u \]";
else
    PS1+="\[ - \u \]";
fi

이 줄에서 다른 맞춤 변수를 설정할 수도 있습니다.

PS1+="\[ - \u  ${usercolor}\]"

그리고 조건문을 사용하세요만약 전에색상을 다음과 같이 변경합니다.

if [ $EUID -eq 0 ]; then
    usercolor="\e[1;31m";
fi

관련 정보