免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 3683 | 回复: 14
打印 上一主题 下一主题

请教个问题,PS1中设置颜色 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-04-29 10:21 |只看该作者 |倒序浏览
设置git 的命令行提示颜色。
最下面那里
\$(git_promting)
不起作用,怎么回事
换成$(git_promting)能行,但是要在打开term 时就在git 目录。
那个\是什么作用?不用\的话,bash 只在每次打开时运行一次$()里面的东西,比如cd 进某目录就不会有作用了;如果用\,就是实时更新的,这样cd 进目录会更新。 但是函数的返回直接显示出来了。没有变成颜色信息,直接显示字符串了
\$(git_promting) 是这效果:
van-hr@ ~/tst/gittst1 \[\033[0;43m\]master$
$(git_promting) 是这种:
van-hr@ ~/tst/gittst1 master$

BGK='\[\033[0;40m\]'
BGR='\[\033[0;41m\]'
BGG='\[\033[0;42m\]'
BGY='\[\033[0;43m\]'
BGB='\[\033[0;44m\]'
BGM='\[\033[0;45m\]'
BGC='\[\033[0;46m\]'
BGW="\[\033[0;47m\]"
NONE='\[\033[0m\]'

# white while no modified, else yellow
git_promting ()
{
    GIT_BRANCH_COLOR=$(git branch 2>/dev/null| grep "*"| cut -d " " -f 2)
    if [ ! -z "$GIT_BRANCH_COLOR" ]; then
    if git diff --quiet 2>/dev/null; then
        GIT_BRANCH_COLOR="${BGW}${GIT_BRANCH_COLOR}"
    else
            GIT_BRANCH_COLOR="${BGY}${GIT_BRANCH_COLOR}"
    fi
    fi
    echo "$GIT_BRANCH_COLOR"
}


export PS1="${BGB}\u@ \
${BGC}\w \
\$(git_promting)\
\$ ${NONE}"

论坛徽章:
5
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:50:282015年亚洲杯之朝鲜
日期:2015-03-13 22:47:33IT运维版块每日发帖之星
日期:2016-01-09 06:20:00IT运维版块每周发帖之星
日期:2016-03-07 16:27:44
2 [报告]
发表于 2010-04-29 10:26 |只看该作者
参考终端控制字符。

论坛徽章:
0
3 [报告]
发表于 2010-04-29 10:32 |只看该作者
参考终端控制字符。
blackold 发表于 2010-04-29 10:26



    我参考过了,没参考出什么,能说一下吗

论坛徽章:
0
4 [报告]
发表于 2010-04-29 10:43 |只看该作者
参考终端控制字符。
blackold 发表于 2010-04-29 10:26



    如果有一个自定义的变量需要实时更新,比如像cd 之后,\w 实时更新。我意思是我自己定义的变量,而不是\w 这个bash 提供的变量

论坛徽章:
5
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:50:282015年亚洲杯之朝鲜
日期:2015-03-13 22:47:33IT运维版块每日发帖之星
日期:2016-01-09 06:20:00IT运维版块每周发帖之星
日期:2016-03-07 16:27:44
5 [报告]
发表于 2010-04-29 10:49 |只看该作者
本帖最后由 blackold 于 2010-04-29 11:18 编辑

回复 4# vivian2086


    git是啥?我没用过。
    你是想设置bash的PROMPT?

论坛徽章:
0
6 [报告]
发表于 2010-04-29 10:52 |只看该作者
回复  vivian2086


    git是啥?我没用过。
    你是想设置bash的PROMT?
blackold 发表于 2010-04-29 10:49



    对。git 版本控制系统,可能你熟悉svn 什么的。知道怎么设置吗?怎么实时更新?

论坛徽章:
5
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:50:282015年亚洲杯之朝鲜
日期:2015-03-13 22:47:33IT运维版块每日发帖之星
日期:2016-01-09 06:20:00IT运维版块每周发帖之星
日期:2016-03-07 16:27:44
7 [报告]
发表于 2010-04-29 10:59 |只看该作者
回复 6# vivian2086


    你是说git有交互模式,你想设置此模式下的提示符?
   svn没有交互模式吧。

论坛徽章:
0
8 [报告]
发表于 2010-04-29 11:12 |只看该作者
回复  vivian2086


    你是说git有交互模式,你想设置此模式下的提示符?
   svn没有交互模式吧。
blackold 发表于 2010-04-29 10:59



    无关具体的git 或者svn 吧。比如我显示时间到promting string上,每秒更新呢? 或者我cd 到某目录,提示符实时显示当前目录下子目录数量?不能实现吗?

论坛徽章:
5
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:50:282015年亚洲杯之朝鲜
日期:2015-03-13 22:47:33IT运维版块每日发帖之星
日期:2016-01-09 06:20:00IT运维版块每周发帖之星
日期:2016-03-07 16:27:44
9 [报告]
发表于 2010-04-29 11:17 |只看该作者
本帖最后由 blackold 于 2010-04-29 11:18 编辑

回复 8# vivian2086


    明白了,你想设置的是shell的PROMPT.

论坛徽章:
5
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:50:282015年亚洲杯之朝鲜
日期:2015-03-13 22:47:33IT运维版块每日发帖之星
日期:2016-01-09 06:20:00IT运维版块每周发帖之星
日期:2016-03-07 16:27:44
10 [报告]
发表于 2010-04-29 11:28 |只看该作者
参考shell man来设置。
$ echo "$PS1"
\[\e]0;\w\a\]\n\[\e[32m\]\u@\h \[\e[33m\]\d \A \w\[\e[0m\]\n\$

Username@hostname Thu Apr 29 11:27 ~/tmp
$
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP