【问题标题】:How to create a shell alias with parameters如何创建带参数的 shell 别名
【发布时间】:2015-01-07 00:12:04
【问题描述】:

我需要检查很多配置文件并喜欢cat 他们没有以 cmets 开头的行。

我在 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 

什么都没有返回:( 我错过了什么??

【问题讨论】:

    标签: shell awk grep alias cat


    【解决方案1】:

    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) + #
    

    【讨论】:

    • +1 第二个功能不起作用(缺少 [;] + 不起作用 :@ )第一个工作正常,谢谢 :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-12-30
    • 1970-01-01
    • 1970-01-01
    • 2017-10-08
    • 1970-01-01
    • 1970-01-01
    • 2012-07-13
    相关资源
    最近更新 更多