我有以下别名
alias ackalias "acknoredirect !:2-$ '^[\sun]alias.?(!:1)' ~/.alias"
问题是,如果我ackalias tmux
,它就不起作用;它总是需要2个或更多的参数。例如,以下内容效果很好:ackalias tmux -A 2 -B 2
是否有可能在别名定义中替换!:$ $,其中第二个和更多参数是可选的?
更新
@Mark正如您所建议的那样,我尝试了以下简单示例,并在有2个或更多可选参数时发现问题。请查看以下示例:
alias test2 'echo \!:1* \!:2* \!:3* \!:4*'
test2 a
test2 a b
test2 a b c
test2 a b c d
test2 a b c d e
输出结果为:
a
a b b
a b c b c c
a b c d b c d c d d
a b c d e b c d e c d e d e
我可能需要添加条件,但最终应该有效。感谢。
答案 0 :(得分:1)
试
alias ackalias "acknoredirect \!:2* '^[\sun]alias.?(\!:1)' ~/.alias"
(注意我还在!' s之前添加了转义符)
答案 1 :(得分:0)
最后这个有用了!
alias test4 'set arg1 = `echo \!:1* | awk '"'"'{ print $1 }'"'"'`; \\
echo -n "Arg num 1 = $arg1 "; \\
set arg2 = `echo \!:2* | awk '"'"'{ print $1 }'"'"'`; \\
echo -n "Arg num 2 = $arg2 "; \\
set arg3 = `echo \!:3* | awk '"'"'{ print $1 }'"'"'`; \\
echo -n "Arg num 3 = $arg3 "; \\
set arg4 = `echo \!:4* | awk '"'"'{ print $1 }'"'"'`; \\
echo -n "Arg num 4 = $arg4 "; \\
set arg5 = `echo \!:5* | awk '"'"'{ print $1 }'"'"'`; \\
echo -n "Arg num 5 = $arg5 "; \\
echo ""; \\
'
test4 abc
test4 abc def ghi
test4 abc def ghi jkl
test4 abc def ghi jkl mno
test4 abc def ghi jkl mno pqr
我很快就需要开始转换为zsh ..