我目前在.bash_profile中的内容是
export PS1="\w ↪ Bob♔ Home > "
我希望做的是像
export PS1="\w ↪ Bob♔ Home > " | lolcat
其中用于提示的普通字符串通过管道输入到lolcat命令中,其结果用于PS1。我该怎么做才能完成这项任务?
更新1:
使PS1随机彩虹色的任何其他方式也是可接受的选择。
最终更新
原来的问题没有答案,所以我选择了chw21的答案,因为这是真正的答案'原来的问题。
由于我无法使用lolcat,因此我在.bash_profile中使用了以下代码
randomNumberGen() { while :; do ran=$RANDOM; ((ran < 32760)) && echo $(((ran%7)+1)) && break; done }
numberRandom=$(randomNumberGen)
red=$(tput setaf 9)
orange=$(tput setaf 208)
yellow=$(tput setaf 11)
green=$(tput setaf 10)
blue=$(tput setaf 33)
indigo=$(tput setaf 12)
violet=$(tput setaf 55)
resetColor=$(tput sgr0)
if [ $numberRandom -eq 1 ]; then listVar=($red $orange $yellow $green $blue $indigo $violet);elif [ $numberRandom -eq 2 ]; then listVar=($orange $yellow $green $blue $indigo $violet $red);elif [ $numberRandom -eq 3 ]; then listVar=($yellow $green $blue $indigo $violet $red $orange);elif [ $numberRandom -eq 4 ]; then listVar=($green $blue $indigo $violet $red $orange $yellow);elif [ $numberRandom -eq 5 ]; then listVar=($blue $indigo $violet $red $orange $yellow $green);elif [ $numberRandom -eq 6 ]; then listVar=($indigo $violet $red $orange $yellow $green $blue);elif [ $numberRandom -eq 7 ]; then listVar=($violet $red $orange $yellow $green $blue $indigo);else echo "WHAT HAVE YOU DONE";fi
export PS1="\w \[${listVar[0]}\]↪ S\[$resetColor\]\[${listVar[1]}\]am\[$resetColor\]\[${listVar[2]}\]pl\[$resetColor\]\[${listVar[3]}\]e♔\[$resetColor\] \[${listVar[4]}\]Ho\[$resetColor\]\[${listVar[5]}\]me\[$resetColor\] \[${listVar[6]}\]> \[$resetColor\]"
export PROMPT_COMMAND='numberRandom=$(randomNumberGen);if [ $numberRandom -eq 1 ]; then listVar=($red $orange $yellow $green $blue $indigo $violet);elif [ $numberRandom -eq 2 ]; then listVar=($orange $yellow $green $blue $indigo $violet $red);elif [ $numberRandom -eq 3 ]; then listVar=($yellow $green $blue $indigo $violet $red $orange);elif [ $numberRandom -eq 4 ]; then listVar=($green $blue $indigo $violet $red $orange $yellow);elif [ $numberRandom -eq 5 ]; then listVar=($blue $indigo $violet $red $orange $yellow $green);elif [ $numberRandom -eq 6 ]; then listVar=($indigo $violet $red $orange $yellow $green $blue);elif [ $numberRandom -eq 7 ]; then listVar=($violet $red $orange $yellow $green $blue $indigo);else echo "WHAT HAVE YOU DONE";fi;export PS1='\''\w \[${listVar[0]}\]↪ S\[$resetColor\]\[${listVar[1]}\]am\[$resetColor\]\[${listVar[2]}\]pl\[$resetColor\]\[${listVar[3]}\]e♔\[$resetColor\] \[${listVar[4]}\]Ho\[$resetColor\]\[${listVar[5]}\]me\[$resetColor\] \[${listVar[6]}\]> \[$resetColor\]'\'''
代码说明:
首先,当执行randomNumberGen函数时,在1到7(包括)之间选择随机整数。其结果是numberRandom的值。
然后,使用tput将彩虹(ROYGBIV)的颜色分别设置为相应的颜色。
对于可能的七种情况,有一个列表,其中包含ROYGBIV的订购。
创建列表后,PS1会使用列表项作为颜色添加颜色。
注意:虽然这确实有用,但我不喜欢它的样子。因此,我可能会有七个列表,每个列表对应彩虹的每种颜色,并且七个列表中每个列表的项目都是浅色到深色的颜色。
答案 0 :(得分:0)
考虑将此作为评论,因为它没有回答具体问题,但它太长了。
从根本上说,您可以在PS1
:
PS1="\$(ls -m) $ "
然而,lolcat
似乎有自己的字母着色方法,这是不相容的。我试过的时候
PS1="\$(echo \"\w ↪ Bob♔ Home > \" | lolcat)"
没有颜色。当我试图强迫lolcat时,就像这样:
PS1="\$(echo \"\w ↪ Bob♔ Home > \" | lolcat -f)"
结果很糟糕。