我希望命令cds
在dirs -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
正如你所看到的,我试图用反斜杠逃避反引号,然后用另一个(逃逸的)反斜杠逃避反斜杠。但显然这并没有完成这项工作。我需要做什么呢?
答案 0 :(得分:0)
xargs
有时对包含反引号嵌套的“flatenning”命令很有用。
在您的情况下,它可以像:
一样使用alias nds 'pds \\!:1 | xargs pd'