2014-11-10 2 views
0

Мне нужно проверить множество конфигурационных файлов и понравиться cat им без строк, начинающихся с комментариев.Как создать псевдоним оболочки с параметрами

Я печатаю следующее в оболочке:

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 

ничего не возвращается :( Что мне не хватает ??

ответ

4

alias не может получить параметры. Вместо этого используйте функцию, которая на самом деле является тем, что вы уже используете.

Для этого используйте $1, а не $0, как вы это делаете (означает первый аргумент, который вы предоставляете).

Все вместе, это должно работать:

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

Отметим также, что это может быть обработан с помощью одного awk:

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

+1 функция является правильный способ сделать это – anubhava

+0

+1 вторая функция не работает (отсутствует [;] + не работает: @) 1-й работает отлично, спасибо :) –

+0

@ user3318273 ops, ';'! Спасибо, просто обновился. – fedorqui

Смежные вопросы