Shell别名多个参数

时间:2009-11-14 21:34:51

标签: shell mapping substitution

是否有一种很好的方法可以对命令别名进行多次替换?

例如

alias cmd = 'ssh -R $1:$2:$1:$2 $3 | something {$1, $2, $3}'
cmd 127.0.0.1 1234 server

像这样......

实际上,这样管道输出并没有任何意义,但我希望看到类似的语法。

命名映射也很好,但只是索引很好。

也许使用awk?

2 个答案:

答案 0 :(得分:4)

如何使用shell函数?:

$ cmd() { echo ssh -R $1:$2:$1:$2 $3 ; echo something {$1, $2, $3} ; }
$ cmd 127.0.0.1 1234 server
ssh -R 127.0.0.1:1234:127.0.0.1:1234 server
something {127.0.0.1, 1234, server}

答案 1 :(得分:1)

您必须使用函数定义它。例如:

cmd () { echo -e "$1\n$2" | grep "$1"; }

不要忘记{echo之间的空格。

这会导致以下行为:

$ cmd hello world
hello