这与其说是一个美观的提示符,不如说是一个“概念验证”:动态更改提示符中的颜色。 在此示例中,主机名的颜色会根据负载而变化(作为警告)。
#!/bin/bash # "hostloadcolour" - 17 October 98, by Giles # # The idea here is to change the colour of the host name in the prompt, # depending on a threshold load value. # THRESHOLD_LOAD is the value of the one minute load (multiplied # by one hundred) at which you want # the prompt to change from COLOUR_LOW to COLOUR_HIGH THRESHOLD_LOAD=200 COLOUR_LOW='1;34' # light blue COLOUR_HIGH='1;31' # light red function prompt_command { ONE=$(uptime | sed -e "s/.*load average: \(.*\...\), \(.*\...\), \(.*\...\)/\1/" -e "s/ //g") # Apparently, "scale" in bc doesn't apply to multiplication, but does # apply to division. ONEHUNDRED=$(echo -e "scale=0 \n $ONE/0.01 \nquit \n" | bc) if [ $ONEHUNDRED -gt $THRESHOLD_LOAD ] then HOST_COLOUR=$COLOUR_HIGH # Light Red else HOST_COLOUR=$COLOUR_LOW # Light Blue fi } function hostloadcolour { PROMPT_COMMAND=prompt_command PS1="[$(date +%H%M)][\u@\[\033[\$(echo -n \$HOST_COLOUR)m\]\h\[\033[0m\]:\w]$ " } |
使用您喜欢的编辑器,将其保存到名为“hostloadcolour”的文件中。 如果您安装了 Bashprompt 包,这将作为一个主题工作。 如果没有,请键入source hostloadcolour然后hostloadcolour。 无论哪种方式,“prompt_command”都会成为您环境中的一个函数。 如果您检查代码,您会注意到颜色($COLOUR_HIGH 和 $COLOUR_LOW)仅使用部分颜色代码设置,即“1;34”而不是“\[\033[1;34m\]”,而我更喜欢后者。 我一直无法让它与完整的代码一起工作。 如果您能做到这一点,请告诉我。