如何在tcsh中转义别名链中的字符?

时间:2015-03-20 20:49:52

标签: shell tcsh

我希望命令cdsdirs -v的输出中为一个字符串进行grep,然后使用pd +将我更改为包含该字符串的目录而不将其从环中删除存储在dirs内的目录。例如,如果输出" dirs -v"是

0 foo
1 bar 

然后我希望命令cds bar执行等效的pd +1

我已经定义了这些:

alias dv dirs -v
alias pd pushd
alias pds  "dv | grep \!:1 | awk '{ print "\$1"}'"

但是到达执行pd +n的最终别名,其中n是dirs -v输出中的当前条目,是困难的部分。这是一次尝试,输出:

% alias nds "\\\`pds \\!:1\\\`"
grep: Trailing backslash

正如你所看到的,我试图用反斜杠逃避反引号,然后用另一个(逃逸的)反斜杠逃避反斜杠。但显然这并没有完成这项工作。我需要做什么呢?

1 个答案:

答案 0 :(得分:0)

xargs有时对包含反引号嵌套的“flatenning”命令很有用。

在您的情况下,它可以像:

一样使用
alias nds 'pds \\!:1 | xargs pd'