4

无论如何修改 bash 配置文件脚本以始终在屏幕顶部显示彩色条。我需要始终在屏幕上显示彩色主机名、用户名和 IP 地址,但我不想超载 PS1,因为它会使提示占据默认控制台宽度的一半以上。

4

4 回答 4

4

不完美,但这向您展示了如何在屏幕的第一行修复部分提示:

PS1='\w \[\e[s\e[1;1H\e[42m\]\h \u ipaddress\[\e[0m\e[u\]\$ '

细分:

  • \e[s- 保存当前光标位置
  • \e[1;1H- 将光标移动到第 1 行第 1 列(从左上角开始编号
  • \e[u- 将光标恢复到之前保存的位置
  • \e42m- 使背景变绿
  • \e0m- 恢复默认的前景色/背景色
  • \[...\]- 包含各种非打印字符,以便bash正确计算提示的长度。

维基百科列出了其他转义码。此答案中缺少的两件事是如何将条形扩展到整个字符串以及如何设置正确的 IP 地址。

更新:我相信这涵盖了 ruckc 所做的更改:

PS1='\[\e[s\e[1;1H\e[42m\e[K\h \u ipaddress\e[0m\e[u\]\w \$ '
于 2013-09-12T20:22:51.887 回答
3

在你的 PS1 中添加一个 \n 怎么样,这样你总是使用一个全宽的新行?

于 2013-09-12T19:58:21.523 回答
0

如果您正在寻找不那么老套的东西(但可能有点矫枉过正),请考虑 byobu

https://en.wikipedia.org/wiki/Byobu_(软件)

于 2013-09-12T20:01:13.700 回答
0

或者,如果您使用的是 xterms,则可以改为设置 xterm 标题:

export PS1="\[\033]0;\u $(host $(hostname))\007\]\u@\h:\w\$ "

这将设置您的 xterm 标题,并将您的提示设置为包含 username@host:pwd。

我的 .bashrc 包含类似这样的内容,因此 PS1 是否正确设置取决于我们是否在 xterm 中:

if [[ -n "$TERM" ]] ; then
    if ( echo $TERM | $GREP -q xterm ) ; then
        export PS1="\[\033]0;\u@\h:\w\007\]\u@\h:\w\$ "
    else
        export PS1="\u@\h:\w\$ "
    fi
fi
于 2013-09-12T21:25:05.893 回答