我的 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
您可以通过更改提示本身来控制提示后面的任何文本的格式,该提示是在PS1
Bash 中的变量中定义的。我不太了解终端,但控制序列中列出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\\]"
此外,您可能希望在执行命令之前重置显示属性,这可以使用变量来完成PS0
。0
之前显示的相同序列的参数将重置所有属性。
PS0='\[\e[0m\]'