alias s2st="ps -A | grep -E "a|b""
适用于 bash。
然后我尝试将其转换为csh
:
set-alias t2st 'ps -A \| grep -E "a\|b"'
但 csh 的引用确实如此不同,我无法应付......
它需要怎样才能正确且有效?
答案1
在 中bash
,应该是:
alias s2st='ps -A | grep -E "a|b"'
(alias s2st="ps -A | grep -E "a|b""
会不是在 中工作bash
,因为第二个"
将关闭第一个"
,因此第二个|
不会被引用)。
在csh
alias s2st 'ps -A | grep -E "a|b"'
bash
和csh
are中都有强引号'...'
。它们在csh
where!
和换行符(以及前面的反斜杠)仍然很特殊的方面不太强大。
在 TCL 中,强引用具有{...}
额外的好处,只要它们匹配,就可以在其中出现{
。}
答案2
感谢 Stéphane Chazelas,我发现了我的问题:
我的别名存储在 tcl 脚本中,因此我需要正确的 tcl 语法,即:
set-alias s2st {ps -A | grep -E "a|b"}
答案3
在 Tcl 中我会写
proc psgrep {pattern} {
return [join [lsearch -regexp -inline -all [split [exec ps -A] \n] $pattern] \n]
}
set output [psgrep {a|b}]