设置 PS1:
PS1='$(exit_code=$?; [[ $exit_code -eq 0 ]] || printf %s $(tput setaf 1) $exit_code $(tput sgr0) " ")$ '
Run Code Online (Sandbox Code Playgroud)
此时,提示如下:
$
Run Code Online (Sandbox Code Playgroud)现在通过运行触发退出代码输出:
false
Run Code Online (Sandbox Code Playgroud)
现在提示在行的开头包含红色的退出代码:
1 $
Run Code Online (Sandbox Code Playgroud)输入“假”。现在提示只包含搜索:
(reverse-i-search)`false': false
Run Code Online (Sandbox Code Playgroud)生成的终端历史记录现在包含以下内容:
1 $ch)`false': false
Run Code Online (Sandbox Code Playgroud)
预期输出:
1 $ false
Run Code Online (Sandbox Code Playgroud)
也就是说,历史搜索输出似乎与提示混合并隐藏了运行的实际命令。
我尝试使用PROMPT_COMMAND
以下方法解决此问题:
set_exit_code() {
exit_code=$?
[[ $exit_code -eq 0 ]] || printf %s $(tput setaf 1) $exit_code $(tput sgr0) " "
}
set_bash_prompt() …
Run Code Online (Sandbox Code Playgroud) 我想通过不同的颜色轻松地将我的命令与 shell 的其余输出区分开来。但是我在自定义 bash shell 方面没有太多经验,所以我不知道如何重置颜色(之后)我的输入。
我当前的 PS1 变量如下所示:
export PS1="$red\u$green\$(__git_ps1) $turk\w
$white$ "
# '\$(__git_ps1)' git status prompt (generates a space before it even if empty)
Run Code Online (Sandbox Code Playgroud)
所以我的输入是白色的。但即使命令的输出也是白色的,因为它没有被重置。此外,如果命令本身对其输出进行颜色编码,那么它本身会重置颜色,从而导致白色和灰色的一些难看的混合。
那么如何在输入命令后重置颜色?