Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash 如何将提示字符串(PS1)导入命令并使文本结果为PS1?_Bash_Macos_Terminal_.bash Profile_Ps1 - Fatal编程技术网

Bash 如何将提示字符串(PS1)导入命令并使文本结果为PS1?

Bash 如何将提示字符串(PS1)导入命令并使文本结果为PS1?,bash,macos,terminal,.bash-profile,ps1,Bash,Macos,Terminal,.bash Profile,Ps1,我目前在.bash_配置文件中的内容是 export PS1="\w ↪ Bob♔ Home > " 我想做的是 export PS1="\w ↪ Bob♔ Home > " | lolcat 其中,用于提示的普通字符串通过管道传输到lolcat命令,其结果用于PS1。我该如何着手完成这项任务 更新1: 任何其他使PS1随机呈现彩虹色的方法也是可以接受的选择 最终更新 原始问题没有答案,因此我选择了chw21的答案,因为它是原始问题的真实“答案” 因为我不能使用lolcat,所以

我目前在.bash_配置文件中的内容是

export PS1="\w ↪ Bob♔ Home > "
我想做的是

export PS1="\w ↪ Bob♔ Home > " | lolcat
其中,用于提示的普通字符串通过管道传输到lolcat命令,其结果用于PS1。我该如何着手完成这项任务

更新1:

任何其他使PS1随机呈现彩虹色的方法也是可以接受的选择

最终更新

原始问题没有答案,因此我选择了chw21的答案,因为它是原始问题的真实“答案”

因为我不能使用lolcat,所以我在.bash_配置文件中使用了以下代码

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(){while:;do-ran=$RANDOM;((ran<32760))&&echo$((ran%7)+1))&&break;done}
numberRandom=$(randomNumberGen)
红色=$(tput setaf 9)
橙色=$(tput setaf 208)
黄色=$(tput setaf 11)
绿色=$(tput setaf 10)
蓝色=$(tput setaf 33)
靛蓝=$(tput setaf 12)
紫罗兰色=$(tput setaf 55)
重置颜色=$(tput sgr0)
如果[$numberRandom-等式1];然后listVar=($red$orange$yellow$green$blue$indigo$violet);elif[$numberRandom-等式2];然后listVar=($橙色$黄色$绿色$蓝色$靛蓝$紫色$红色);elif[$numberRandom-等式3];然后listVar=($黄色$绿色$蓝色$靛蓝$紫色$红色$橙色);elif[$numberRandom-等式4];然后listVar=($绿色$蓝色$靛蓝$紫色$红色$橙色$黄色);elif[$numberRandom-等式5];然后listVar=($蓝色$靛蓝$紫色$红色$橙色$黄色$绿色);elif[$numberRandom-等式6];然后listVar=($indigo$紫色$红色$橙色$黄色$绿色$蓝色);elif[$numberRandom-等式7];然后listVar=($紫色$红色$橙色$黄色$绿色$蓝色$靛蓝);否则回声“你做了什么”;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\]
导出提示符\u命令='numberRandom=$(randomNumberGen);如果[$numberRandom-等式1];然后listVar=($red$orange$yellow$green$blue$indigo$violet);elif[$numberRandom-等式2];然后listVar=($橙色$黄色$绿色$蓝色$靛蓝$紫色$红色);elif[$numberRandom-等式3];然后listVar=($黄色$绿色$蓝色$靛蓝$紫色$红色$橙色);elif[$numberRandom-等式4];然后listVar=($绿色$蓝色$靛蓝$紫色$红色$橙色$黄色);elif[$numberRandom-等式5];然后listVar=($蓝色$靛蓝$紫色$红色$橙色$黄色$绿色);elif[$numberRandom-等式6];然后listVar=($indigo$紫色$红色$橙色$黄色$绿色$蓝色);elif[$numberRandom-等式7];然后listVar=($紫色$红色$橙色$黄色$绿色$蓝色$靛蓝);否则回声“你做了什么”;fi;导出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)的颜色分别设置为相应的颜色

对于七种可能的情况,有一个罗伊格比排序列表

创建列表后,PS1将使用列表项作为颜色添加颜色


注意:虽然这确实有效,但我不喜欢它的外观。因此,我可能会有七个列表,彩虹的每种颜色对应一个列表,并且七个列表中的每一个项目都是颜色从浅到深的光谱。

考虑将此作为一个注释,因为它没有回答特定的问题,但太长了

基本上,您可以在
PS1
中包含程序的输出:

PS1="\$(ls -m) $ "
然而,
lolcat
似乎有自己的字母着色方法,这是不兼容的。当我试着

PS1="\$(echo \"\w ↪ Bob♔ Home > \" | lolcat)"
没有颜色。当我试图强迫lolcat时,就像这样:

PS1="\$(echo \"\w ↪ Bob♔ Home > \" | lolcat -f)"

结果是一团糟。

考虑将此作为评论,因为它没有回答具体问题,但太长了

基本上,您可以在
PS1
中包含程序的输出:

PS1="\$(ls -m) $ "
然而,
lolcat
似乎有自己的字母着色方法,这是不兼容的。当我试着

PS1="\$(echo \"\w ↪ Bob♔ Home > \" | lolcat)"
没有颜色。当我试图强迫lolcat时,就像这样:

PS1="\$(echo \"\w ↪ Bob♔ Home > \" | lolcat -f)"

结果是一团糟。

有没有其他方法可以让我的PS1随机涂成彩虹色?有没有其他方法可以让我的PS1随机涂成彩虹色?您可以手动设置文本的颜色。设置颜色数组很烦人。我不擅长bash,但这对我很有用。您可以手动设置文本的颜色。设置颜色数组很烦人。我不擅长bash,但这对我很有用。