如何使用参数创建shell别名

时间:2014-11-10 16:14:17

标签: shell awk grep alias cat

我需要检查很多配置文件,并且喜欢cat,而不用以评论开头的行。

我在shell中输入以下内容:

egrep -v '^[[:blank:]]*#' *filename* | awk 'NF'

有效:

$ egrep -v '^[[:blank:]]*#' /etc/nginx/nginx.conf | awk 'NF'
user nginx nginx;
worker_processes 4;
pid /var/run/nginx.pid;
events {
    worker_connections 768;
}
http {
    sendfile on;
}

而不是每次都输入它,我希望在我的批处理上添加别名,但我找不到这样做的方法(既不能在网上查找信息:()。

我试过了:

testfunc () { egrep -v '^[[:blank:]]*#' $0 | awk 'NF'; }

但它不起作用: - (

$ testfunc /etc/nginx/nginx.conf 

没有返回任何内容:( 我错过了什么?

1 个答案:

答案 0 :(得分:4)

alias无法获取参数。相反,使用一个实际上就是你已经使用的函数。

为此,请使用$1而不是$0$1表示您提供的第一个参数)。

总之,这应该有效:

testfunc () { egrep -v '^[[:blank:]]*#' "$1" | awk 'NF'; }
                                         ^^

另请注意,这可以使用单个awk处理:

testfunc () {  awk '!/^\s*#/ && NF' "$1"; }
                    ^^^^^^^     ^^
                       |        lines with some content
lines not starting with (spaces) + #