The Inarticulate

← Back to Pinboard

TAGS
  • #bash
  • #docker
  • #ksh
  • #linux
  • #opensource
  • #popen
  • #python
  • #shell
  • #ubuntu
  • #vim
  • #vpn
YEARS
2026 2016 2013 2009 2007 2006
PROJECTS
ydiff view diff side by side
Gcal Exporter Export google calendar events
ipfw.net_ IP Lookup & Firewall Checker
@ymattw

请让 Bash PS1 有用

Nov 16, 2007

有些“高级”工程师、资深 Unix 用户,他们使用 bash 的时候就是一个默认的类似 bash-3.2 $ 的提示符,然后干活的过程中不停的 pwd,pwd,现在我涵养好一些了,不会在旁边看着想楱他两拳了。还有人不用 $ 做提示符,偏用 >,好像他就是个黑客,然后干活的时候敲 whoami(还不是更短的 id)看自己到底是 root 还是普通用户。没错,PS1 是个很个性的东西,但是总得要让自己干活更有效率一点吧?

提示符,起不到提示作用还叫什么提示符?

我的提示符需求:

  • 提示符应该能在一大堆命令输出中容易辨认。用粗体文字显示提示符比用带颜色的好,恰到好处,不喧宾夺主。
  • 应当提示有后台进程。经常在 vim 的时候 ^Z 临时敲命令,完了再 fg 回去。但是经常忘记文件已经在编辑,会再次 vim 打开它,造成一些麻烦。用反显的颜色提示有后台进程不错。 bash 的 PS1 有个 \j 可以输出后台进程的个数,但是我讨厌它输出 0。
  • 经常要复制当前路径、写命令过程,因此提示当前全路径是必须的,另外在这个变态 NFS 网络里面,经常会有很长的路径,$ 提示符有可能跑到屏幕最右边去,命令只好折行了,费眼神。于是让上一行末尾是个表示续行的反斜线,让 $ 和命令始终在新行开始,复制命令过程给别人也方便。

我的配置是这样的:

function job_color {
    [[ -n $(jobs) ]] && echo -e "\e[7m"
}

export PS1='\e[1m\h: \w $(job_color)\e[0m\n\$ '

PS1

请 man bash,看 PROMPTING 一节。

#bash #shell