在 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
对于初学者来说,bash
是bash
,无论它在哪里运行。唯一需要注意的是哪个版本。 例如,bash
4 具有一些 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
命令中,然后是上一个命令的退出代码(如果它不为零)。