方法1、使用 -e 开启转义后用 \e 或 \033 输出 Esc 符号

语法:

echo -e "\e[样式;前景色代号;背景色代号m需要设置颜色的字符串\e[0m"
echo -e "\033[样式;前景色代号;背景色代号m需要置颜色的字符串\e[0m"

例子:

echo -e "\e[0;31m ALERT \e[0m"   #透明底红字(终端默认的背景色)
echo -e "\e[0;31;1m ALERT \e[0m" #透明底红字 + 高亮效果
echo -e "\e[47;31m ALERT \e[0m"  #白底红字

terminal_demo

方法2、直接使用 Ctrl+v,Esc 输入 Esc 符号、不使用转义,Esc的视觉效果为 ^[

示例:

echo "^[[0;31m ALERT ^[[0m" #注:“^[”是一个字符不是2个,输入方法为按Ctrl+v后再按Esc键

颜色代号:

颜色:0-黑,1-红、2-绿、3-黄、4-青、5-些、6-橙、7-灰白,+30表示前景色,+40表示背景色

样式:0-关闭,1-高亮,4-下划线,5-闪烁,7反白,8不可见

下文有脚本生成的颜色表

更多颜色搭配:

#/bin/bash
for STYLE in 0 1 2 3 4 5 6 7; do
	for FG in 30 31 32 33 34 35 36 37; do
		for BG in 40 41 42 43 44 45 46 47; do
			CTRL="\033[${STYLE};${FG};${BG}m"
			echo -en "${CTRL} "
			echo -n "${STYLE};${FG};${BG}"
			echo -en " \033[0m "
		done
		echo
	done
	echo
done
# Reset
echo -e "\033[0m"

执行结果见下图(颜色表):

用法:\e[?;??;??m需要设置颜色的文字\e[0m,“?;??;??”见下图:

terminal_demo_2

修改窗口标题

“[\u@\h \W]$”用来修改命令行提示符 prompt,如果想修改窗口标题可以使用:

\e]2;标题名称\a
\033]2;标题名称\007

“标题名称”也可以使用“[\u@\h \W]”

我的$PS1

# Git for prompt
# https://github.com/git/git/blob/35f6318d44379452d8d33e880d8df0267b4a0cd0/contrib/completion/git-prompt.sh
export GIT_PS1_HIDE_IF_PWD_IGNORED=1
export GIT_PS1_SHOWUNTRACKEDFILES=1
export GIT_PS1_SHOWDIRTYSTATE=1
export GIT_PS1_SHOWSTASHSTATE=1
export GIT_PS1_SHOWCOLORHINTS=1
export GIT_PS1_SHOWUPSTREAM="auto"
source ~/.bin/.git-prompt.sh

# 短路径
getShortURL() {
   URL=$PWD
   URL=${URL/#$HOME/\~}
   TITLE=$URL
   URL_LEN=${#URL}
   BASE_NAME=$(basename $PWD)
   BASE_NAME_LEN=${#BASE_NAME}
   MAX_TITLE_LEN=$(($BASE_NAME_LEN + 10))

   if [ $URL_LEN -gt $MAX_TITLE_LEN ]; then
     TITLE='...'${URL:0-$MAX_TITLE_LEN}
   fi

   echo $TITLE
   return 0
}

# Prompt
PS1=''
PS1=$PS1'\[\e]2;$(getShortURL)\a\]'
PS1=$PS1'\[\e[1;32m\]\u\[\e[0m\]:\[\e[1;34m\]\W\[\e[0m\]'
PS1=$PS1'\[\e[1;31m\]$(__git_ps1 " %s")\[\e[0m\]'
PS1=$PS1' \$ '

注意

所有非打印参数需要用“\[“和”\]”括起来,不然会占用字符位置,比如你显示的prompt是“[root@laptop ~] $”时,如果没有用“\[“和”\]”括起来,你会发现是可以退格往前删除字符的,比如会删除成“[root@lapt”,如果你输入了ls命令就会变成“[root@laptls”。

窗口标题要整个包起来,包括标题里边的内容也要包起来,因为标题整个都不占用 prompt 的字符数。

\[ 应该出现在不移动光标的字符序列(如颜色转义序列)之前。它使 bash 能够正确计算自动换行。

\] 应该出现在非打印字符序列之后。

所以最终的PS1要写成这样:

PS1='\[\e[1;32m\]\u\[\e[0m\]:\[\e[1;34m\]\W\[\e[0m\]'

不能是:

PS1='\e[1;32m\u\e[0m:\e[1;34m\W\e[0m'
  • 近期文章

    • laravel mysql Invalid datetime format: 1292 Incorrect datetime value
    • frp 配置示例
    • 让 ElemntUI 自定义组件支持表单验证
    • 一键切换副屏输入源
    • Vue3 集成 Mock.js
    • 提取自 element-ui 的 v-loading,适用 vue2/vue3
    • Vite 配置项收集 1+
    • brew nginx 的使用
    • yarn build.sh
    • 一条命令发布 vue 项目到 Linux 服务器
  • 归档

点击返回顶部
  1. 留言
  2. 联系方式

哆哆女性网头文字d第三部宝宝起名打棋牌室起店名合适女孩起名的古诗词姓朱起名八一中文起名网生辰八字网站精酿啤酒起名奶妈起名字沙西米姓黄起名字浙江卫视中国蓝教育起名寓意好的字门头起名称全集免费狂医废材妃公司起名哪些软件姓李的小孩起名字吗年属鼠人的男宝宝起名五行金多 起属什么的名字党建工作思路好听的房间名字重生贵公子源计划艾克邓姓起名男小孩子男孩起名字女孩起名打分测试中国十大起名大师排名斛珠夫人帝旭喜欢海市吗popmundo一寸照淀粉肠小王子日销售额涨超10倍罗斯否认插足凯特王妃婚姻不负春光新的一天从800个哈欠开始有个姐真把千机伞做出来了国产伟哥去年销售近13亿充个话费竟沦为间接洗钱工具重庆警方辟谣“男子杀人焚尸”男子给前妻转账 现任妻子起诉要回春分繁花正当时呼北高速交通事故已致14人死亡杨洋拄拐现身医院月嫂回应掌掴婴儿是在赶虫子男孩疑遭霸凌 家长讨说法被踢出群因自嘲式简历走红的教授更新简介网友建议重庆地铁不准乘客携带菜筐清明节放假3天调休1天郑州一火锅店爆改成麻辣烫店19岁小伙救下5人后溺亡 多方发声两大学生合买彩票中奖一人不认账张家界的山上“长”满了韩国人?单亲妈妈陷入热恋 14岁儿子报警#春分立蛋大挑战#青海通报栏杆断裂小学生跌落住进ICU代拍被何赛飞拿着魔杖追着打315晚会后胖东来又人满为患了当地回应沈阳致3死车祸车主疑毒驾武汉大学樱花即将进入盛花期张立群任西安交通大学校长为江西彩礼“减负”的“试婚人”网友洛杉矶偶遇贾玲倪萍分享减重40斤方法男孩8年未见母亲被告知被遗忘小米汽车超级工厂正式揭幕周杰伦一审败诉网易特朗普谈“凯特王妃P图照”考生莫言也上北大硕士复试名单了妈妈回应孩子在校撞护栏坠楼恒大被罚41.75亿到底怎么缴男子持台球杆殴打2名女店员被抓校方回应护栏损坏小学生课间坠楼外国人感慨凌晨的中国很安全火箭最近9战8胜1负王树国3次鞠躬告别西交大师生房客欠租失踪 房东直发愁萧美琴窜访捷克 外交部回应山西省委原副书记商黎光被逮捕阿根廷将发行1万与2万面值的纸币英国王室又一合照被质疑P图男子被猫抓伤后确诊“猫抓病”

哆哆女性网 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化