在Bash中定制炫酷的命令提示符
Posted veli
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在Bash中定制炫酷的命令提示符相关的知识,希望对你有一定的参考价值。
如果你使用的是Linux桌面(例如:Fedora或者Ubuntu)的话,在Terminal上使用Bash通常是必须地,但是默认的Bash提示符都很普通。本文将提供简单的Bash脚本(通过定制PS1)定制炫酷的命令提示符(注: 绝非奇技淫巧)。
- 脚本代码 - foo.bashrc
1 COLOR_GRAY=\'\\[\\033[1;30m\\]\' 2 COLOR_RED=\'\\[\\033[1;31m\\]\' 3 COLOR_GREEN=\'\\[\\033[1;32m\\]\' 4 COLOR_YELLOW=\'\\[\\033[1;33m\\]\' 5 COLOR_BLUE=\'\\[\\033[1;34m\\]\' 6 COLOR_MAGENTA=\'\\[\\033[1;35m\\]\' 7 COLOR_CYAN=\'\\[\\033[1;36m\\]\' 8 COLOR_WHITE=\'\\[\\033[1;37m\\]\' 9 COLOR_NONE=\'\\[\\033[m\\]\' 10 11 PS1_USER="${COLOR_MAGENTA}\\u${COLOR_NONE}" 12 PS1_HOST="${COLOR_CYAN}\\h${COLOR_NONE}" 13 PS1_PWD="${COLOR_YELLOW}\\w${COLOR_NONE}" 14 15 export PS1="${PS1_USER}@${PS1_HOST}:${PS1_PWD}\\\\\\$ "
- 效果图
- 说明
01 - 将foo.bashrc添加到你的.bashrc文件中就可以使用炫酷的PS1了,当然,你也可以根据你的偏好自己设定PS1。
02 - 在颜色定制文本(例如: COLOR_GRAY=\'\\[\\033[1;30m\\]\')中,开始的\\[和结尾的\\]是必须的,否则当输入的命令很长的时候,就会回车但不换行,于是覆盖了行首的有颜色的字符串。例如:
P.S. 上面的诡异问题曾经困扰我了很多年,直到我偶然发现了\\[和\\]的特殊作用。 我们期望的是另起一行,正确的输出行为应该是这样子滴,
但是,通过Bash编程在Terminal上输出彩色的字符串,是不能添加\\[和\\]的。 例如:
function print { printf -- "$*\\n"; } function _isatty { typeset -l isatty=${ISATTY:-"auto"} [[ $isatty == "yes" ]] && return 0 # yes [[ $isatty == "no" ]] && return 1 # no [[ -t 1 && -t 2 ]] && return 0 || return 1 # auto } function str2gray { _isatty && print "\\033[1;30m$@\\033[m" || print "$@"; } function str2red { _isatty && print "\\033[1;31m$@\\033[m" || print "$@"; } function str2green { _isatty && print "\\033[1;32m$@\\033[m" || print "$@"; } function str2yellow { _isatty && print "\\033[1;33m$@\\033[m" || print "$@"; } function str2blue { _isatty && print "\\033[1;34m$@\\033[m" || print "$@"; } function str2magenta { _isatty && print "\\033[1;35m$@\\033[m" || print "$@"; } function str2cyan { _isatty && print "\\033[1;36m$@\\033[m" || print "$@"; } function str2white { _isatty && print "\\033[1;37m$@\\033[m" || print "$@"; }
完整代码文件libstr.sh请戳这里。
Don\'t believe what your eyes are telling you. All they show is limitation. Look with your understanding. | 不要相信眼睛告诉你的。眼睛展现的内容是有限的。用你的悟性来观察。
以上是关于在Bash中定制炫酷的命令提示符的主要内容,如果未能解决你的问题,请参考以下文章