区分/装饰命令行输入和输出(使用颜色或缩进)

区分/装饰命令行输入和输出(使用颜色或缩进)

在 CentOS bash 中(或者,如果其他 bash 中有通用方法,比如 Ubuntu,更好),我如何区分我输入的命令和命令的输出?

我问这个问题是因为当我使用一个在屏幕上输出很多的命令时,很难找到它从哪里开始。例如,我想用明亮的颜色装饰我的命令,用较暗的颜色装饰输出,或者将输出缩进 4。

这可能是这样的:

[root@westerngun ~]# ps aux | grep myname                             <- brighter
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx   <- darker
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

或者:

[root@westerngun ~]# ps aux | grep myname                          
    xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx  <- indented by 4
    xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
    xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
    xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

答案1

对于初学者来说,bashbash,无论它在哪里运行。唯一需要注意的是哪个版本。 例如,bash4 具有一些 3 中不具备的新功能。bash

PS1也就是说,您可以通过设置("Prompt String 1") 将一个命令与另一个命令区分开来相当轻松地为提示着色。例如,当我登录一台家用计算机时,我会看到以下内容:

提示示例

当滚动浏览终端历史记录时,我只需关闭提示中的青色文本即可知道一个命令何时结束而另一个命令何时开始。

作为参考,我的PS1如下:

\[\e[38;5;14m\]\u\[\e[38;5;8m\]@\[\e[38;5;6m\]\h\[\e[38;5;8m\]:\[\e[38;5;10m\]\w \e[31m${?##0}\n\[\e[$(((($?>0))*31))m\]\$\[\e[0m\]

这在字符串中显示了我的用户名、主机名和 CWD,我可以将其复制并粘贴到(例如)scp命令中,然后是上一个命令的退出代码(如果它不为零)。

相关内容