如何使 bash 命令具有特定颜色

如何使 bash 命令具有特定颜色

我的 bash 提示符在一行上,颜色为绿色,文件路径为蓝色。当我键入命令时,它会出现在下一行。按 Enter 键后,输出将出现在下一行。然后有一个空行。

我真的希望该命令采用我选择的颜色(最好不是绿色或蓝色)或粗体,以将其与之前的行和之后的输出行区分开来。我不想更改输出颜色,因为它用于指示不同的内容,例如可执行文件和不同类型的链接。

在图像的示例中,我希望“ls -la var”具有不同的颜色。任何建议都将非常受欢迎。

在此输入图像描述

编辑: 根据 don_aman 的回答,我将这两行添加到我的 .bashrc 文件中:

PS1="\n\[\e]0;\u@\h: \w\a\]${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ \n\\[\\e[1;33m\\]"

PS0='\[\e[0m\]'

如果没有第二行,输出的某些行的颜色也与命令相同。

现在我的终端看起来像这样,这可以帮助我区分命令和输出: 在此输入图像描述

答案1

您可以通过更改提示本身来控制提示后面的任何文本的格式,该提示是在PS1Bash 中的变量中定义的。我不太了解终端,但控制序列中列出console_codes(4)适用于 XTerm,我猜这是您的终端的类型(检查TERM环境变量),请参阅该手册页以将任何所需的自定义添加到您的提示符中,更具体地说是序列ESC [ parameters m,它允许设置终端的显示属性。

要更改PS1,请在文件中搜索它~/.bashrc,然后附加您喜欢的任何序列。例如,在我的系统上PS1最初设置为以下值。

PS1="\\[\\e]0;\\u@\\h: \\w\\a\\]\${debian_chroot:+(\$debian_chroot)}\\[\\033[01;34m\\]\\u@\\h\\[\\033[00m\\]:\\[\\033[01;32m\\]\\w\\[\\033[00m\\]\\\$ "

如果我想让输入文本变为粗体和棕色,我必须将序列添加\[\e1;33m\]PS1;这里\[开始一系列非打印字符(检查bash(1)),并\]结束它,我使用前面提到的显示属性控制序列,使用参数1,设置粗体,和33,设置棕色前景,用分号分隔。最后,我将PS1作业更改.bashrc为:

PS1="\\[\\e]0;\\u@\\h: \\w\\a\\]\${debian_chroot:+(\$debian_chroot)}\\[\\033[01;34m\\]\\u@\\h\\[\\033[00m\\]:\\[\\033[01;32m\\]\\w\\[\\033[00m\\]\\\$ \\[\\e[1;33m\\]"

此外,您可能希望在执行命令之前重置显示属性,这可以使用变量来完成PS00之前显示的相同序列的参数将重置所有属性。

PS0='\[\e[0m\]'

相关内容