xshell-如何用不同的颜色显示命令行和结果行?

xshell-如何用不同的颜色显示命令行和结果行?

谁能给我一些关于如何以不同颜色显示命令行和结果的说明。

目前,它们的颜色相同,因此难以阅读。我正在使用 XShell 5。

在此处输入图片描述

答案1

我不知道 XShell5 是什么,但在我的 Centos 服务器上,我将这一行添加到 .bashrc

export PS1='[\[\033[32m\]\u@\h\[\033[36m\] \W\[\033[00m\]]\$ '

保存文件后,输入:

. .bashrc

您应该看到绿色的命令提示符。您的命令不会有不同的颜色,但它可以让您轻松区分您输入命令的行和该命令的输出。

我希望它有帮助。

答案2

Bash 的解决方案:

export PS1='\[\e[31m\][\u@\h \W]\$ \[\e[32m\]'
#           ^^^^^^^^^^                        this part is responsible for red prompt
#                                  ^^^^^^^^^^ this part is responsible for green command echo
preexec_invoke_exec() { printf '\e[0m'; }
#                       ^^^^^^^^^^^^^^        this resets
trap 'preexec_invoke_exec' DEBUG

诀窍是PS1最终将文本颜色设置为绿色,因此您输入的任何命令都将是绿色。在您点击之后Enter但在运行命令之前,陷阱被激活。它会重置文本,您应该会得到正常的白色输出。

笔记:

  • 您可以了解更多颜色代码这里
  • \033并且\e互联网上各种例子都是一样的。
  • 在构建你的PS1记忆时,你需要\[\]指示不可打印的字符,否则诡异的 事物会发生。
  • 命令仍然可以以彩色打印(例如ls --color=always)。
  • 您不必PS1重新创建。此行将修改您的当前的 PS1所以命令是绿色的:

    PS1="$PS1"'\[\e[32m\]'
    
  • 您应该始终在开始时(重新)设置文本属性,就PS1好像陷阱从未发生过一样,因为它可能不会发生(例如,在Ctrl+之后L重新绘制提示而不会触发陷阱)。

  • 如果在 shell 正常等待您的命令时某个(后台)进程向您的终端写入数据,则其输出将被着色为命令。

相关内容