[英]Set csh prompt to raw output of a command with multiple lines and special characters?
我正在尝试将我的 csh 提示设置为特定命令的原始 output。 我知道如何为简单的输出做到这一点; 例如:
set prompt=`echo propmt%|sed "s/pm/mp/"`
...导致提示:
prompt%
但是我想要的提示更复杂。 首先,它有多条线。 我知道如何直接执行此操作(即不通过命令的 output):
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
。
最重要的是,我想使用的特定命令将 output 不仅是多行,而且还有一堆我认为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
正确转义,但是:
所以,我希望有一些方法来告诉set prompt
“只需使用(任意命令)的原始 output;不要将其中任何一个解释为特殊字符或其他任何字符”。 有办法吗? 或者任何其他建议来完成我想要的? 谢谢。
也许最好为此使用precmd
别名:
alias precmd 'cowsay -f ghostbusters << EOF \
line 1 \
\
line 2 \
\
line 3 \
EOF'
来自 csh(1):
precmd Runs just before each prompt is printed. For example, if one
does
> alias precmd date
then date(1) runs just before the shell prompts for each command.
There are no limits on what precmd can be set to do, but
discretion should be used.
或者你可以把它变成一个不同的文件来避免所有的反斜杠:
alias precmd 'source ~/cowsay'
# ~/cowsay
cowsay -f ghostbusters << EOF
line 1
line 2
line 3
EOF
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.