내 현재 프롬프트는 다음과 같이 색상이 지정되고 편집됩니다.
#!/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