我使用彩色的 bash 提示符,如下所示:
blue=$(tput setaf 4)
reset=$(tput sgr0)
bold=$(tput bold)
export PS1='($?) \[$bold$blue\]\u@\h:\w\[$reset\]$(__git_ps1)> '
我通常在终端窗口(gnome-terminal)中工作,但有时在全屏控制台(CTRL++ )中工作。ALTF3
我的彩色提示在 GUI 终端中很好,但在全屏下很难阅读,因为颜色看起来不同。所以cyan=$(tput setaf 6)
当在控制台窗口中时,我想使用不同的颜色(例如)。为了使它工作,我需要弄清楚哪个模式我目前已进入并进行$PS1
相应设置。
我尝试了这个tty
命令。它给出
/dev/pts/0 # GUI terminal
/dev/tty3 # console
我还尝试检查 的值$TERM
。结果显示
xterm-256color # GUI terminal
linux # console
这两种方法对我来说都适用,但我的问题是:这是可靠区分控制台和终端的正确方法吗?或者还有更好的方法吗?如果这很重要的话,我在 17.10.1。
答案1
有多种方法可以确定这一点,其中三种著名的方法如下:
tty
- 打印连接到标准输入的终端的文件名:/dev/pts/10 /dev/tty1
此功能由 Sergiy Kolodyazhnyy 撰写,使用了
tty
。ps hotty $$
(短缺ps --no-header --format tty --pid $$
):pts/10 tty1
who who whom | awk '{ print $2 }'
who
(事实上两个任意论点,等于who -m
——这也符合双关语):pts/10 tty1
我怀疑 的值TERM
在不同的发行版甚至不同的版本之间会有所不同,但这tty
是一种稳定可靠的方法。我会像这样使用它:
if tty|grep -q tty; then
echo "That's a TTY."
else
echo "That's not a TTY."
fi
who
至少在似乎有问题gnome-terminal
,幸运的是有一个包装脚本来解决这个问题。
有用的网址: