如何将 bash 的别名转换为 csh 的别名? -> 或者到 tcl

如何将 bash 的别名转换为 csh 的别名? -> 或者到 tcl

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"'

bashcshare中都有强引号'...'。它们在cshwhere!和换行符(以及前面的反斜杠)仍然很特殊的方面不太强大。

在 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}]

相关内容