如何更改 Linux 终端提示符以匹配 ParrotOS

如何更改 Linux 终端提示符以匹配 ParrotOS

我知道可以使用更改终端提示符PS1="prefix",并且我知道如何永久设置它,这不是问题。我只是想知道,如何将其设置为在 Parrot OS 中的样子?

特别是我如何使它成为多线以及如何创建漂亮的箭头?

在此输入图像描述

答案1

shell 提示符重现:

使用类似 ParrotOS 的提示符的 Shell

创建一个文件 ~/.bash_prompt (或任何您喜欢的名称)并将此代码粘贴到其中

# Define some basic colors using tput (8-bit color: 256 colors)
red="\[$(tput setaf 160)\]"
bright_red="\[$(tput setaf 196)\]"
light_purple="\[$(tput setaf 60)\]"
orange="\[$(tput setaf 172)\]"
blue="\[$(tput setaf 21)\]"
light_blue="\[$(tput setaf 80)\]"
bold="\[$(tput bold)\]"
reset="\[$(tput sgr0)\]"

# Define basic colors to be used in prompt
## The color for username (light_blue, for root user: bright_red)
username_color="${reset}${bold}${light_blue}\$([[ \${EUID} == 0 ]] && echo \"${bright_red}\")";
## Color of @ and ✗ symbols (orange)
at_color=$reset$bold$orange
## Color of host/pc-name (blue)
host_color=$reset$bold$blue
## Color of current working directory (light_purple)
directory_color=$reset$light_purple
## Color for other characters (like the arrow)
etc_color=$reset$red
# If last operation did not succeded, add [✗]- to the prompt
on_error="\$([[ \$? != 0 ]] && echo \"${etc_color}[${at_color}✗${etc_color}]─\")"
# The last symbol in prompt ($, for root user: #)
symbol="${reset}${bold}${bright_red}$(if [[ ${EUID} == 0 ]]; then echo '#'; else echo '$'; fi)"


# Setup the prompt/prefix for linux terminal
PS1="${etc_color}┌─${on_error}[";
PS1+="${username_color}\u"; # \u=Username
PS1+="${at_color}@";
PS1+="${host_color}\h" #\h=Host
PS1+="${etc_color}]-[";
PS1+="${directory_color}\w"; # \w=Working directory
PS1+="${etc_color}]\n└──╼ "; # \n=New Line
PS1+="${symbol}${reset}";

export PS1

注释应充分描述代码功能。
如果您想自动使用此提示,请将以下代码添加到您的 ~/.bashrc 文件中

# Use custom bash prompt (will execute .bash_prompt script)
if [ -f ~/.bash_prompt ]; then
  . ~/.bash_prompt
fi

答案2

这是我的代码(不完全相同)。

  • 要进行换行,有一个\n
  • 有趣的箭头是 unicode 字符(从网络查找粘贴)
  • 颜色代码必须在\[和之间\],告诉 bash 它们的宽度为零(这样它就可以做它的事情,比如转到行首。这一切都是用航位推算
  • \033[01;32m像颜色代码这样的代码。

    if [ "$color_prompt" = yes ]; then
      PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '
    else
        PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '
    fi
    _PS1="$PS1"
    PS1='$(echo $title|sed -r -e "s/^(\S+)\$/[\1]/")'"${_PS1}\n#↳ "
    

答案3

我写这篇文章可能有点晚了……但对于任何认为它有用的人来说,我已经.bashrc从 ParrotOS 粘贴了整个文件这里

这是您感兴趣的部分:

if [ "$color_prompt" = yes ]; then
    PS1="\[\033[0;31m\]\342\224\214\342\224\200\$([[ \$? != 0 ]] && echo \"[\[\033[0;31m\]\342\234\227\[\033[0;37m\]]\342\224\200\")[$(if [[ ${EUID} == 0 ]]; then echo '\[\033[01;31m\]root\[\033[01;33m\]@\[\033[01;96m\]\h'; else echo '\[\033[0;39m\]\u\[\033[01;33m\]@\[\033[01;96m\]\h'; fi)\[\033[0;31m\]]\342\224\200[\[\033[0;32m\]\w\[\033[0;31m\]]\n\[\033[0;31m\]\342\224\224\342\224\200\342\224\200\342\225\274 \[\033[0m\]\[\e[01;33m\]\\$\[\e[0m\]"
else
    PS1='┌──[\u@\h]─[\w]\n└──╼ \$ '
fi

答案4

通过 env 从 Parrot OS 获取 PS1 变量,将其复制到文件并在其他 Linux 上使用。

所以它可能是这样的:

echo "PS1=\"$PS1\"" > setPS1

并在其他 Linux 中使用该文件作为脚本。您可能需要导出该变量。设置它~/.bashrc会很容易。

相关内容