Bash,始终在屏幕顶部显示彩色条

时间:2013-09-12 19:56:07

标签: bash

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

4 个答案:

答案 0 :(得分: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可以正确计算提示的长度。

Wikipedia列出了其他转义码。这个答案中缺少的两件事是如何在字符串中一直扩展条以及如何设置正确的IP地址。

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

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

答案 1 :(得分:3)

如何在PS1中添加\ n,以便始终使用全宽的新行?

答案 2 :(得分:0)

如果你正在寻找一些不那么hacky(但也许是矫枉过正)的东西,请考虑byobu

https://en.wikipedia.org/wiki/Byobu_(software)

答案 3 :(得分:0)

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

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

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

我的.bashrc包含这样的内容,因此根据我们是否在xterm中正确设置PS1:

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