是否可以在 bashrc 中为用户输入设置颜色?

是否可以在 bashrc 中为用户输入设置颜色?

请注意,我只希望用户的输入具有特定的颜色(用户用键盘输入的单词),而不是实际命令的输出。

我试过:

export PS1="$ \033[38;5;154m"

我知道应该用关闭,\033[m但我不知道如何插入它输入已发送到标准输入。

export PS1="$ \033[38;5;154m$PS1\033[m"

这也不起作用。

我想要这个的原因是为了能够轻松区分输入命令和其输出。提前致谢。

答案1

Bash 无法为所有用户输入添加颜色。UNIX 是全双工的,显示的所有数据都来自 unix 计算机,而不是来自本地终端仿真器/键盘,因此终端仿真器(xterm?)无法真正分辨出差异,并且 bash 仅控制它所做的事情,而不是每个程序所做的事情。

我使用不同颜色的提示。

e=$'\e'
COLORblue="$e[0;34m"
COLORred="$e[0;31m"
COLORreset="$e[0m"
PC="$COLORblue"
if [[ "$EUID" -eq 0 ]]; then PC="$COLORred"; fi
PS1="\[$PC\]#===> \@ %\j / \u @ \h : \w/\n#===> \\\$ \[$COLORreset\]"

# Print when exit status is not 0 -- I like this too... shown in red
export PROMPT_COMMAND="x0=\$?;if ((\$x0 > 0)); then echo '${COLORred}# exit status = '\$x0' -- From PROMPT_COMMAND$COLORreset'; fi"

也许检查
https://stackoverflow.com/questions/6841143/how-to-set-font-color-for-stdout-and-stderr

答案2

我整天都在研究这个问题和其他一些 bash/terminal 问题,我想如果我能提供任何远程帮助,我会找到任何相关问题并回答它们——所以下面的 .bashrc 将把终端输入命令染成绿色,输出将是标准的白色。背景仍然是黑色。

# ~/.bashrc: executed by bash(1) for non-login shells.

# Created by EDH automated script to set up terminal colors
# Ref: http://linux.die.net/man/1/echo
# Ref: https://www.kirsle.net/wizards/ps1.html#help
# Ref: https://wiki.archlinux.org/index.php/Color_Bash_Prompt
# Ref: http://linux.die.net/man/1/bash

# Note: reload settings w/o relogin; source ~/.bashrc

# for terminal line coloring
export PS1="\[$(tput sgr0)\]\[$(tput setaf 1)\]\u \[$(tput setaf 6)\]\w \[$(tput setaf 1)\]\\$ \[$(tput setaf 2)\]"
none="$(tput sgr0)"
trap 'echo -ne "${none}"' DEBUG

# ls dir coloring
export LS_OPTIONS='--color=auto'
eval "`dircolors`"
alias ls='ls $LS_OPTIONS'
alias ll='ls $LS_OPTIONS -l'
alias l='ls $LS_OPTIONS -lA'

我尝试将找到它们的来源包含在内!希望这会有所帮助,即使这是一个较旧的线程。

答案3

我不思考您可以为输入命令及其输出设置不同的颜色。无论如何,您肯定不能通过设置变量来实现这一点PS1。这PS1是提示符,即在您输入的任何内容左侧显示的文本。例如:

在此处输入图片描述

.Xdefaults你可以通过修改and/or文件来更改终端的默认颜色.Xresources。看看这里这里这里了解更多信息。

相关内容