相关疑难解决方法(0)

如何正确自定义PS1?

我在我的 bashrc 中用这个自定义了我的 bash

export PS1="\e[0;36m\h\e[m \e[0;33m\w/\e[m \e[0;31m\n\$ ?\e[m  "
Run Code Online (Sandbox Code Playgroud)

所以我得到了这样的东西(带有颜色):

Ahuri ~/Public/ 
$ ?  
Run Code Online (Sandbox Code Playgroud)

但是我在使用长命令时遇到了问题。当我写一个比一行长的很长的命令时,它开始覆盖我的第一行

例子 :

Ahuri ~/Public/ 
$ ? ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Run Code Online (Sandbox Code Playgroud)

如果我继续添加“^”,我会得到:

Ahuri ~/Public/ 
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Run Code Online (Sandbox Code Playgroud)

我的“$?” 被覆盖,然后整行被覆盖。

bash prompt

6
推荐指数
1
解决办法
1056
查看次数

BASH - 自定义 PS1 来运行命令

我想修改我的 PS1 以每次运行一些命令。假设我想要它,如果最后执行的命令成功,它会在 PS1 的末尾添加一个绿色的微笑,否则微笑应该是红色的。
我将它提取到一个函数中:

function exit_smile {

    EXITSTATUS="$?"
    RED="\[\e[1;31m\]"
    GREEN="\[\e[32;1m\]"

    if [ "${EXITSTATUS}" -eq 0 ]
    then
       SMILE="${GREEN}:)"
    else
       SMILE="${RED}:("
    fi

    echo -n "$SMILE"
}
Run Code Online (Sandbox Code Playgroud)

然后在修改 PS1 变量时尝试使用`exit_smile`和,但在修改 PS1 或打印文字而不是颜色时它会执行一次。 例如\$(exit_smile)\[\e...\]

PROMPT="\u@\h \W"
PS1="${PROMPT} \$ \$(exit_smile) ${OFF}\n"
Run Code Online (Sandbox Code Playgroud)

给出username@hostname ~ $ \[\e[32;1m\]:)
我缺少什么?

colors bash prompt

5
推荐指数
1
解决办法
1162
查看次数

标签 统计

bash ×2

prompt ×2

colors ×1