🔍 Linux/UNIX Просмотр только директив файла конфигурации (незакомментированные строки файла конфигурации) |

🔍 Linux/UNIX Просмотр только директив файла конфигурации (незакомментированные строки файла конфигурации)

Мануал

Большинство конфигурационных файлов Linux и UNIX-подобных систем документируются с помощью комментариев, но иногда мне нужно просто просмотреть строку текста конфигурации в файле конфигурации.

Как просмотреть только некомментированные директивы файла конфигурации из файла squid.conf или httpd.conf?

Как убрать комментарии и пустые строки в Linux или Unix-подобной системе?

Продолжение статьи:

🐧 Как вывести содержимое файлов без комментариев и пустых строк на Linux

Чтобы просмотреть только незакомментированные строки текста в файле конфигурации, используйте grep, sed, awk, perl или любую другую утилиту обработки текста, предоставляемую операционными системами UNIX / BSD / OS X / Linux.

Давайте посмотрим, как удалить или проигнорировать все строки комментариев из файлов конфигурации Unix и Linux с помощью CLI.

Пример команды grep для парсинга данных

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

Синтаксис следующий:

grep -v “^#” /path/to/config/file
 sudo grep -v “^#” /path/to/config/file

Например, вот как посмотреть файл конфигурации веб-сервера Apache без комментариев, отмеченных символом #:

grep -v “^#” /path/to/config/file
 grep -v “^#” /etc/apache2/apache2.conf

Примеры выводов:

ServerRoot "/etc/apache2"
 
LockFile /var/lock/apache2/accept.lock
 
PidFile ${APACHE_PID_FILE}<span class="drop_cap">M</span>ost Linux and UNIX-like system configuration files are documented using comments, but sometimes I just need to see a line of configuration text in a config file. How can I view just the uncommented configuration file directives from squid.conf or httpd.conf file? How can I strip out comments and blank lines on a Linux or Unix-like system?
 
Timeout 300
 
KeepAlive On
 
MaxKeepAliveRequests 100
 
KeepAliveTimeout 15
 
 
<IfModule mpm_prefork_module>
    StartServers          5
    MinSpareServers       5
    MaxSpareServers      10
    MaxClients          150
    MaxRequestsPerChild   0
</IfModule>
 
<IfModule mpm_worker_module>
    StartServers          2
    MinSpareThreads      25
    MaxSpareThreads      75 
    ThreadLimit          64
    ThreadsPerChild      25
    MaxClients          150
    MaxRequestsPerChild   0
</IfModule>
 
<IfModule mpm_event_module>
    StartServers          2
    MaxClients          150
    MinSpareThreads      25
    MaxSpareThreads      75 
    ThreadLimit          64
    ThreadsPerChild      25
    MaxRequestsPerChild   0
</IfModule>
 
User ${APACHE_RUN_USER}
Group ${APACHE_RUN_GROUP}
 
 
AccessFileName .htaccess
 
<Files ~ "^\.ht">
    Order allow,deny
    Deny from all
    Satisfy all
</Files>
 
DefaultType text/plain
 
 
HostnameLookups Off
 
ErrorLog /var/log/apache2/error.log
 
LogLevel warn
 
Include /etc/apache2/mods-enabled/*.load
Include /etc/apache2/mods-enabled/*.conf
 
Include /etc/apache2/httpd.conf
 
Include /etc/apache2/ports.conf
 
LogFormat "%v:%p %h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" vhost_combined
LogFormat "%h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%h %l %u %t \"%r\" %>s %O" common
LogFormat "%{Referer}i -> %U" referer
LogFormat "%{User-agent}i" agent
 
CustomLog /var/log/apache2/other_vhosts_access.log vhost_combined
 
Include /etc/apache2/conf.d/
 
Include /etc/apache2/sites-enabled/

Удаление всех строк комментариев из файлов конфигурации Linux и исключение пустых строк

Чтобы устранить все пустые строки, используйте команду egrep следующим образом.

Например:

grep -E -v "^#|^$" /etc/apache2/apache2.conf
## или передать его на страницу, например, more или less##
grep -E -v "^#|^$" /etc/apache2/apache2.conf | less
 
## Bash function ######################################
## or create function or alias and use it as follows ##
## viewconfig /etc/squid/squid.conf                  ##
#######################################################
viewconfig(){
   local f="$1"
   [ -f "$1" ] && command grep -E -v "^#|^$" "$f" || echo "Error $1 file not found."
}

Понимание параметров командной строки grep или egrep

Опция -v инвертирует смысл совпадения, чтобы выбрать не совпадающие строки.

Эта опция должна работать во всех системах на базе posix.

Регекс ^$ сопоставляет и удаляет все пустые строки, а ^# сопоставляет и удаляет все комментарии, начинающиеся с символа «#».

Как использовать grep для отсеивания всех комментариев и пустых строк в Linux

Теперь рассмотрите этот файл конфигурации и обратите внимание на то, что комментарии тоже пишутся с пробелами:

user www-data;
worker_processes auto;
pid /run/nginx.pid;
#worker_rlimit_nofile 65535; 
worker_rlimit_nofile 250000;
include /etc/nginx/modules-enabled/*.conf;
 
events {
        #worker_connections 65535;
        worker_connections 131070;
        multi_accept on; 
}
 
http {
 
        ##
        # Basic Settings
        ##
        charset utf-8;
        sendfile on;
        tcp_nopush on;
        tcp_nodelay on;
        log_not_found  off; 
        keepalive_timeout 65;
        types_hash_max_size 2048;
        server_tokens off; 
        types_hash_bucket_size 64; 
        client_max_body_size 16M;
        server_names_hash_bucket_size 64; 
        #server_name_in_redirect off;
 
        include /etc/nginx/mime.types;
        default_type application/octet-stream;
 
 
        ##
        # Logging Settings
        ##
    # Use this for debug 'upstreamlog'

Вот обновленная версия, чтобы справиться с этим безумием:

sudo grep -Ev ‘[[:space:]]*#+[[:space:]]*|^$’ /etc/nginx/nginx.conf

Обновленная версия шаблона grep должна удалять все комментарии, включая те, которые содержат ведущие или завершающие пробельные символы, а также те, которые состоят исключительно из символов #.

Вот как это работает:

  • sudo : Вам нужен sudo, так как обычные пользователи не могут читать файл nginx.conf.
  • grep -E : Включит расширенные регулярные выражения для поиска шаблонов.
  • -v : Эта опция указывает grep инвертировать совпадение, выбирая только строки, не соответствующие заданному вами шаблону.
  • ^[[:space:]]* : Эта опция определяет соответствие нулю или более пробельных символов, включая пробелы или табуляции, в начале строки файла конфигурации.
  • #+ : Этот параметр соответствует одному или нескольким символам # в вашем файле конфигурации.
  • ^$ : Удаляет все пустые или незаполненные строки. Символ ^ обозначает начало строки, а $ – конец строки. Таким образом, ^$ совпадает с пустыми строками.
  • [[:space:]]* : И наконец, эта строка соответствует нулю или других пробельных символов после символов # в вашей строке.

Работа с большими файлами конфигурации, которые не помещаются на экране

Лучше всего использовать такие утилиты, как «bat», «cat», «less» или «more»:

grep -Ev “^#|^$” /path/file.conf | less
 sudo grep -Ev ‘[[:space:]]*#+[[:space:]]*|^$’ /etc/nginx/nginx.conf | bat -l nginx

Пример команды sed для просмотра только некомментированных строк в текстовом файле конфигурации/скрипта

Вот как можно использовать команду GNU/sed:

sed ‘/ *#/d; /^ *$/d’ /path/to/file
 sed ‘/ *#/d; /^ *$/d’ /etc/apache2/apache2.conf

GNU или BSD sed также может обновить ваш файл конфигурации.

Синтаксис следующий: редактируйте файлы на месте, сохраняя резервные копии с указанным расширением, например .bak:

sed -i'.bak.2015.12.27' '/ *#/d; /^ *$/d' /etc/apache2/apache2.conf

Заключение

В конфигурационных файлах Linux и Unix комментарий – это текст, предназначенный для чтения человеком и игнорируемый системой.

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

cм. также:

 

Пожалуйста, не спамьте и никого не оскорбляйте. Это поле для комментариев, а не спамбокс. Рекламные ссылки не индексируются!
Добавить комментарий