这里是我的PS1变量:PS1换行的颜色问题
PS1='\u:\W$(__git_ps1 "\e[32m\][%s]\e[0m\]")$ '
的拿起我的Git分支伟大的作品,但它有包装的时候颜色是活跃线的不幸的副作用,所以它们在使用长命令时重叠。
任何有PS1魔法技能的人都可以帮我解决这个问题吗?
这里是我的PS1变量:PS1换行的颜色问题
PS1='\u:\W$(__git_ps1 "\e[32m\][%s]\e[0m\]")$ '
的拿起我的Git分支伟大的作品,但它有包装的时候颜色是活跃线的不幸的副作用,所以它们在使用长命令时重叠。
任何有PS1魔法技能的人都可以帮我解决这个问题吗?
明白了,需要正确地逃避颜色。
修复:
PS1='\u:\W$(__git_ps1 "\[\e[32m\][%s]\[\e[0m\]")$ '
我建议在猛砸颜色下面的方法,它使代码更可读和很多困难你千万不能错过逃生或两个。
放在你的〜/ .bashrc
BLACK=$(tput setaf 0)
RED=$(tput setaf 1)
GREEN=$(tput setaf 2)
LIME_YELLOW=$(tput setaf 190)
YELLOW=$(tput setaf 3)
POWDER_BLUE=$(tput setaf 153)
BLUE=$(tput setaf 4)
MAGENTA=$(tput setaf 5)
CYAN=$(tput setaf 6)
WHITE=$(tput setaf 7)
BRIGHT=$(tput bold)
NORMAL=$(tput sgr0)
BLINK=$(tput blink)
REVERSE=$(tput smso)
UNDERLINE=$(tput smul)
样本PS1以下(或真的什么是打印在屏幕上)将是:
PS1="\[${WHITE}\](\[${YELLOW}\]\[email protected]\h\[${WHITE}\])\[${NORMAL}\]$ "
你只需把\ [\ ]周围的颜色词。
如果你有一个256色的终端,你可以与其他数值试验,以“tput的setaf”一路攀升至255
这些是我经常使用的颜色功能......写了他们多年之前已经习惯了他们,他们是我的脚本的常规部分。只需将此代码块粘贴到您的.bashrc文件中,开始一个新的会话,然后设置好!
我使用这些丰富多彩/时尚printf的替代品:
## ∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞ ##
## ∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞ [ Aesthir's Color Functions ] ∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞ ##
## ∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞ ##
Normal() { printf '\e[m'"$*"; } ; Tblack() { printf '\e[0;30m'"$*"'\e[m'; }
TNormal() { printf '\e[m'"$*"; } ; Tred() { printf '\e[0;31m'"$*"'\e[m'; }
Bold() { printf '\e[1m'"$*"'\e[m'; } ; Tgreen() { printf '\e[0;32m'"$*"'\e[m'; }
TBold() { printf '\e[1m'"$*"'\e[m'; } ; Tbrown() { printf '\e[0;33m'"$*"'\e[m'; }
Underline() { printf '\e[4m'"$*"'\e[m'; } ; Tyellow() { printf '\e[0;33m'"$*"'\e[m'; }
TUnderline() { printf '\e[4m'"$*"'\e[m'; } ; Tblue() { printf '\e[0;34m'"$*"'\e[m'; }
Flash() { printf '\e[5m'"$*"'\e[m'; } ; Tmagenta() { printf '\e[0;35m'"$*"'\e[m'; }
TFlash() { printf '\e[5m'"$*"'\e[m'; } ; Tpurple() { printf '\e[0;35m'"$*"'\e[m'; }
Invert() { printf '\e[7m'"$*"'\e[m'; } ; Taqua() { printf '\e[0;36m'"$*"'\e[m'; }
TInvert() { printf '\e[7m'"$*"'\e[m'; } ; Tcyan() { printf '\e[0;36m'"$*"'\e[m'; }
Invisible() { printf '\e[8m'"$*"'\e[m'; } ; Tgrey() { printf '\e[0;37m'"$*"'\e[m'; }
TInvisible() { printf '\e[8m'"$*"'\e[m'; } ; Twhite() { printf '\e[0;37m'"$*"'\e[m'; }
## ∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞ Bold Color Text ∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞ ## ∞∞∞∞∞∞∞∞∞∞∞∞ Underlined Color Text ∞∞∞∞∞∞∞∞∞∞∞∞∞ ##
TblackB() { printf '\e[1;30m'"$*"'\e[m'; } ; TblackU() { printf '\e[4;30m'"$*"'\e[m'; }
TgreyB() { printf '\e[1;30m'"$*"'\e[m'; } ; TredU() { printf '\e[4;31m'"$*"'\e[m'; }
TredB() { printf '\e[1;31m'"$*"'\e[m'; } ; TgreenU() { printf '\e[4;32m'"$*"'\e[m'; }
TgreenB() { printf '\e[1;32m'"$*"'\e[m'; } ; TbrownU() { printf '\e[4;33m'"$*"'\e[m'; }
TbrownB() { printf '\e[1;33m'"$*"'\e[m'; } ; TyellowU() { printf '\e[4;33m'"$*"'\e[m'; }
TyellowB() { printf '\e[1;33m'"$*"'\e[m'; } ; TblueU() { printf '\e[4;34m'"$*"'\e[m'; }
TblueB() { printf '\e[1;34m'"$*"'\e[m'; } ; TmagentaU() { printf '\e[4;35m'"$*"'\e[m'; }
TmagentaB() { printf '\e[1;35m'"$*"'\e[m'; } ; TpurpleU() { printf '\e[4;35m'"$*"'\e[m'; }
TpurpleB() { printf '\e[1;35m'"$*"'\e[m'; } ; TaquaU() { printf '\e[4;36m'"$*"'\e[m'; }
TaquaB() { printf '\e[1;36m'"$*"'\e[m'; } ; TcyanU() { printf '\e[4;36m'"$*"'\e[m'; }
TcyanB() { printf '\e[1;36m'"$*"'\e[m'; } ; TgreyU() { printf '\e[4;37m'"$*"'\e[m'; }
TwhiteB() { printf '\e[1;37m'"$*"'\e[m'; } ; TwhiteU() { printf '\e[4;37m'"$*"'\e[m'; }
## ∞∞∞∞∞∞∞∞∞∞∞∞∞ Flashing Color Text ∞∞∞∞∞∞∞∞∞∞∞∞∞∞ ## ∞∞∞∞∞∞∞∞∞∞∞∞∞ Inverted Color Text ∞∞∞∞∞∞∞∞∞∞∞∞∞∞ ##
TblackF() { printf '\e[5;30m'"$*"'\e[m'; } ; TblackI() { printf '\e[7;40m'"$*"'\e[m'; }
TredF() { printf '\e[5;31m'"$*"'\e[m'; } ; TredI() { printf '\e[7;41m'"$*"'\e[m'; }
TgreenF() { printf '\e[5;32m'"$*"'\e[m'; } ; TgreenI() { printf '\e[7;42m'"$*"'\e[m'; }
TbrownF() { printf '\e[5;33m'"$*"'\e[m'; } ; TbrownI() { printf '\e[7;43m'"$*"'\e[m'; }
TyellowF() { printf '\e[5;33m'"$*"'\e[m'; } ; TyellowI() { printf '\e[7;43m'"$*"'\e[m'; }
TblueF() { printf '\e[5;34m'"$*"'\e[m'; } ; TblueI() { printf '\e[7;44m'"$*"'\e[m'; }
TmagentaF() { printf '\e[5;35m'"$*"'\e[m'; } ; TmagentaI() { printf '\e[7;45m'"$*"'\e[m'; }
TpurpleF() { printf '\e[5;35m'"$*"'\e[m'; } ; TpurpleI() { printf '\e[7;45m'"$*"'\e[m'; }
TaquaF() { printf '\e[5;36m'"$*"'\e[m'; } ; TaquaI() { printf '\e[7;46m'"$*"'\e[m'; }
TcyanF() { printf '\e[5;36m'"$*"'\e[m'; } ; TcyanI() { printf '\e[7;46m'"$*"'\e[m'; }
TgreyF() { printf '\e[5;37m'"$*"'\e[m'; } ; TgreyI() { printf '\e[7;47m'"$*"'\e[m'; }
TwhiteF() { printf '\e[5;37m'"$*"'\e[m'; } ; TwhiteI() { printf '\e[7;47m'"$*"'\e[m'; }
## ∞∞∞∞∞∞∞∞∞∞∞∞∞ Invisible Color Text ∞∞∞∞∞∞∞∞∞∞∞∞∞ ## ∞∞∞∞∞∞∞∞ Plain Text on Color Background ∞∞∞∞∞∞∞∞ ##
TblackV() { printf '\e[8;30m'"$*"'\e[m'; } ; Bblack() { printf '\e[m'"$*"'\e[m'; }
TredV() { printf '\e[8;31m'"$*"'\e[m'; } ; Bred() { printf '\e[0;41m'"$*"'\e[m'; }
TgreenV() { printf '\e[8;32m'"$*"'\e[m'; } ; Bgreen() { printf '\e[0;42m'"$*"'\e[m'; }
TbrownV() { printf '\e[8;33m'"$*"'\e[m'; } ; Bbrown() { printf '\e[0;43m'"$*"'\e[m'; }
TyellowV() { printf '\e[8;33m'"$*"'\e[m'; } ; Byellow() { printf '\e[0;43m'"$*"'\e[m'; }
TblueV() { printf '\e[8;34m'"$*"'\e[m'; } ; Bblue() { printf '\e[0;44m'"$*"'\e[m'; }
TmagentaV() { printf '\e[8;35m'"$*"'\e[m'; } ; Bmagenta() { printf '\e[0;45m'"$*"'\e[m'; }
TpurpleV() { printf '\e[8;35m'"$*"'\e[m'; } ; Bpurple() { printf '\e[0;45m'"$*"'\e[m'; }
TaquaV() { printf '\e[8;36m'"$*"'\e[m'; } ; Baqua() { printf '\e[0;46m'"$*"'\e[m'; }
TcyanV() { printf '\e[8;36m'"$*"'\e[m'; } ; Bcyan() { printf '\e[0;46m'"$*"'\e[m'; }
TgreyV() { printf '\e[8;37m'"$*"'\e[m'; } ; Bgrey() { printf '\e[0;47m'"$*"'\e[m'; }
TwhiteV() { printf '\e[8;37m'"$*"'\e[m'; } ; Bwhite() { printf '\e[0;47m'"$*"'\e[m'; }
## ∞∞∞∞∞∞∞∞∞ Bold Text on Color Background ∞∞∞∞∞∞∞∞ ## ∞∞∞∞∞∞ Underlined Text on Color Background ∞∞∞∞∞ ##
BblackB() { printf '\e[1;40m'"$*"'\e[m'; } ; BblackU() { printf '\e[4;40m'"$*"'\e[m'; }
BredB() { printf '\e[1;41m'"$*"'\e[m'; } ; BredU() { printf '\e[4;41m'"$*"'\e[m'; }
BgreenB() { printf '\e[1;42m'"$*"'\e[m'; } ; BgreenU() { printf '\e[4;42m'"$*"'\e[m'; }
BbrownB() { printf '\e[1;43m'"$*"'\e[m'; } ; BbrownU() { printf '\e[4;43m'"$*"'\e[m'; }
ByellowB() { printf '\e[1;43m'"$*"'\e[m'; } ; ByellowU() { printf '\e[4;43m'"$*"'\e[m'; }
BblueB() { printf '\e[1;44m'"$*"'\e[m'; } ; BblueU() { printf '\e[4;44m'"$*"'\e[m'; }
BmagentaB() { printf '\e[1;45m'"$*"'\e[m'; } ; BmagentaU() { printf '\e[4;45m'"$*"'\e[m'; }
BpurpleB() { printf '\e[1;45m'"$*"'\e[m'; } ; BpurpleU() { printf '\e[4;45m'"$*"'\e[m'; }
BaquaB() { printf '\e[1;46m'"$*"'\e[m'; } ; BaquaU() { printf '\e[4;46m'"$*"'\e[m'; }
BcyanB() { printf '\e[1;46m'"$*"'\e[m'; } ; BcyanU() { printf '\e[4;46m'"$*"'\e[m'; }
BgreyB() { printf '\e[1;47m'"$*"'\e[m'; } ; BgreyU() { printf '\e[4;47m'"$*"'\e[m'; }
BwhiteB() { printf '\e[1;47m'"$*"'\e[m'; } ; BwhiteU() { printf '\e[4;47m'"$*"'\e[m'; }
## ∞∞∞∞∞∞∞ Flashing Text on Color Background ∞∞∞∞∞∞ ## ∞∞∞∞∞∞∞ Inverted Text on Color Background ∞∞∞∞∞∞ ##
BblackF() { printf '\e[5;40m'"$*"'\e[m'; } ; BblackI() { printf '\e[7;30m'"$*"'\e[m'; }
BredF() { printf '\e[5;41m'"$*"'\e[m'; } ; BredI() { printf '\e[7;31m'"$*"'\e[m'; }
BgreenF() { printf '\e[5;42m'"$*"'\e[m'; } ; BgreenI() { printf '\e[7;32m'"$*"'\e[m'; }
BbrownF() { printf '\e[5;43m'"$*"'\e[m'; } ; BbrownI() { printf '\e[7;33m'"$*"'\e[m'; }
ByellowF() { printf '\e[5;43m'"$*"'\e[m'; } ; ByellowI() { printf '\e[7;33m'"$*"'\e[m'; }
BblueF() { printf '\e[5;44m'"$*"'\e[m'; } ; BblueI() { printf '\e[7;34m'"$*"'\e[m'; }
BmagentaF() { printf '\e[5;45m'"$*"'\e[m'; } ; BmagentaI() { printf '\e[7;35m'"$*"'\e[m'; }
BpurpleF() { printf '\e[5;45m'"$*"'\e[m'; } ; BpurpleI() { printf '\e[7;35m'"$*"'\e[m'; }
BaquaF() { printf '\e[5;46m'"$*"'\e[m'; } ; BaquaI() { printf '\e[7;36m'"$*"'\e[m'; }
BcyanF() { printf '\e[5;46m'"$*"'\e[m'; } ; BcyanI() { printf '\e[7;36m'"$*"'\e[m'; }
BgreyF() { printf '\e[5;47m'"$*"'\e[m'; } ; BgreyI() { printf '\e[7;37m'"$*"'\e[m'; }
BwhiteF() { printf '\e[5;47m'"$*"'\e[m'; } ; BwhiteI() { printf '\e[7;37m'"$*"'\e[m'; }
## ∞∞∞∞∞∞ Invisible Text on Color Background ∞∞∞∞∞∞ ## ∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞ Color Code Notes ∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞ ##
BblackV() { printf '\e[8;40m'"$*"'\e[m'; } ## Unless I missed something or made a mistake, I ##
BredV() { printf '\e[8;41m'"$*"'\e[m'; } ## calculate a total of 7681 different color codes, ##
BgreenV() { printf '\e[8;42m'"$*"'\e[m'; } ## none of which produce a duplicate result. ##
BbrownV() { printf '\e[8;43m'"$*"'\e[m'; } ## These will be fine for now. ##
ByellowV() { printf '\e[8;43m'"$*"'\e[m'; }
BblueV() { printf '\e[8;44m'"$*"'\e[m'; }
BmagentaV() { printf '\e[8;45m'"$*"'\e[m'; }
BpurpleV() { printf '\e[8;45m'"$*"'\e[m'; }
BaquaV() { printf '\e[8;46m'"$*"'\e[m'; }
BcyanV() { printf '\e[8;46m'"$*"'\e[m'; }
BgreyV() { printf '\e[8;47m'"$*"'\e[m'; }
BwhiteV() { printf '\e[8;47m'"$*"'\e[m'; }
## ∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞ ##
``
牢记想要一个%
百分号或\
反斜杠时,唯一的事情,你需要将它们里面翻倍:
喜欢:printf "$(Tblue "%%s")\n" 'hi'
而不是Tblue "%s\n" 'hi'
或printf "$(Tblue "%s" 'hi')\n"
由于这些用printf,你可以做的东西,如:
printf "hi $(Tred there) man $(BaquaI "%c" '!') $(Bold 'This \\t is %%s') %s\n" "$(BgreenB 'super')" "$(Bblue mega Colorful)"
或回声:
echo "hi $(Tred there) man $(BaquaI "%c" '!') $(Bold 'This \\t is %s' "$(BblackB 'super')") $(Bblue mega Colorful)"
一个更有用的例子:
printf "\t%s Volume \"%s\" is not connected.\n" "$(TwhiteB [)$(TredB Error)$(TwhiteB \]:)" "$(Tbrown $Volume)"
或与其它命令:
eval "echo 'This is OSX' | sed 's:OSX:$(Invert [)$(TaquaF OSX)$(Invert ]):'"
或者多一点斯旺克的东西:
find . -exec stat -f "Name: $(Tbrown %%N)%t%t$(Tpurple "->")%tPermissions: $(Tgreen %%Sp)" {} \;
发挥你的想象力!随意使用这些...我唯一要求的是,如果有人在那里输入更多,混合/匹配它们(比如TcyanBgreenUI),或者制作自己的名字......请将它们发布给我和让我知道这个帖子?或通过电子邮件发送给我[email protected]。我懒得输入全部的可能性。
享受!
- Aesthir
谢谢,这让我很快乐! – Viktiglemma 2011-04-07 08:31:41
对于那些懒得做差异的人来说,为了让bash能够正确地将打印字符计数到行的开头,终端转义符应该被'\ [``\]`包围“。 http://manpages.ubuntu.com/manpages/precise/en/man1/bash.1.html#contenttoc26 – alberge 2013-06-27 00:31:57
Aupajo,我有一个类似的问题,使用生成的PS1。我不知道有什么不能正确逃脱。有什么建议么?我的命令是:`export PS1 =“\ [\ e [0; 40m \] \ h:\ W \ u \ 033 [0; 32m \ $(parse_git_branch)\ [\ e [0m \] $”` – karl 2013-08-13 17:42:16