cshell alias awk
这里有一个比较复杂的alias in cshell,如下:
alias dxxx 'dssc ls \!:1 | egrep " 1\.[0-9]+ " | awk '\''{print $3}'\'' | xargs dssc co -get \!:1 -v'
使用时:
dxxx a_file_name
有几点语法:
1)如何让alias取到命令后的参数,就是使用时dxxx后面的a_file_name?这时候要使用 \!:1
\!:1 表示第一个参数
\!:2* 表示第二个和余下的所有参数
\!* 表示所有参数
2)如何让awk的 单引号 ' 起作用
如果不用alias,命令可以是这样的:
dssc ls a_file_name | egrep " 1\.[0-9]+ " | awk '{print $3}' | xargs dssc co -get a_file_name -v
如果用了alias,这时候 alias的单引号和 awk的单引号冲突,在alias中,awk命令还是简单一个单引号,这个alias就有语法错误。
这时候一个单引号 ' 变成了这样 '\'' , 需要加一个转义的双引号。
3) 这里的xargs作用是把上面一个命令的输出作为后面命令的参数。
很多命令不支持管道来传递参数,而日常工作中有这个必要,所以就有了xargs命令
4)至于egrep里面的正则表达式,就不讲解了。
浙公网安备 33010602011771号