我尝试将csh提示符设置为某个特定命令的原始输出,我知道如何对简单输出进行设置;例如:
set prompt=`echo propmt%|sed "s/pm/mp/"`
...导致以下提示:
prompt%
但是我想要的提示符更复杂。首先,它有多行。我知道如何直接做到这一点(即不通过命令的输出):
set prompt="This is a line\nThis is another\nAnd this is the last% "
...结果是:
This is a line
This is another
And this is the last%
但如果我尝试通过命令执行相同的操作:
set prompt=`echo "This is a line\
This is another\
And this is the last% "`
......提示就变成了:
This
......甚至没有This is a line
;只有This
。
最重要的是,我想使用的特定命令不仅会输出多行,还会输出一堆其他字符,我认为csh
和/或set
会以我不希望的方式解释这些字符。
cowsay -f ghostbusters "BOOOOOOOOOOOOOOOOOOOOOOOOO \
? \
? You are using CEEEEEE SHELLLLLLLLLLLLLLLLL\
? \
? Be my guest, but you have no one to blame but\
? YOURSELLLLLLLLLLLLLLLLLLLLLLF"; echo; echo "% "
......输出:
_________________________________________
/ BOOOOOOOOOOOOOOOOOOOOOOOOO \
| |
| You are using CEEEEEE |
| SHELLLLLLLLLLLLLLLLL |
| |
| Be my guest, but you have no one to |
\ blame but YOURSELLLLLLLLLLLLLLLLLLLLLLF /
-----------------------------------------
\
\
\ __---__
_- /--______
__--( / \ )XXXXXXXXXXX\v.
.-XXX( O O )XXXXXXXXXXXXXXX-
/XXX( U ) XXXXXXX\
/XXXXX( )--_ XXXXXXXXXXX\
/XXXXX/ ( O ) XXXXXX \XXXXX\
XXXXX/ / XXXXXX \__ \XXXXX
XXXXXX__/ XXXXXX \__---->
---___ XXX__/ XXXXXX \__ /
\- --__/ ___/\ XXXXXX / ___--/=
\-\ ___/ XXXXXX '--- XXXXXX
\-\/XXX\ XXXXXX /XXXXX
\XXXXXXXXX \ /XXXXX/
\XXXXXX > _/XXXXX/
\XXXXX--__/ __-- XXXX/
-XXXXXXXX--------------- XXXXXX-
\XXXXXXXXXXXXXXXXXXXXXXXXXX/
""VXXXXXXXXXXXXXXXXXXV""
%
这就是我想要的csh提示符。在这一点上,我觉得有义务指出我不是在开玩笑。
我想我可以忘记运行命令来生成它,而只是手动将其转换为一个单行字符串,并为set prompt
正确转义,但是:
1.这似乎是一种痛苦;
1.我希望能够快速方便地将提示更改为类似但不同的内容。
因此,我希望有某种方法告诉set prompt
"只使用 (任意命令) 的原始输出;不要把它解释为特殊字符或其他什么"。有什么方法吗?或者其他建议来完成我想要的?谢谢。
1条答案
按热度按时间kmbjn2e31#
也许使用别名
precmd
更好:从csh(1):
或者您可以将其设置为不同的文件以避免所有反斜杠: