如何根据用户更改提示的配色方案?

我喜欢乌龟

我当前的提示已按以下方式进行了着色和编辑-

#!/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。

威尔夫

您可以通过多种方式检查用户是否为root用户(然后设置PS1):

  • 用户名称,使用$USER$(whoami)$(whoami)超级用户.NB的输出可以称为其他名称,但通常称为root
  • 用户的ID,使用$EUID$UID有关详细信息,请参见此处)。UID 0始终是超级用户。

因此,例如,您可以将行替换为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

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章