Большинство конфигурационных файлов Linux и UNIX-подобных систем документируются с помощью комментариев, но иногда мне нужно просто просмотреть строку текста конфигурации в файле конфигурации.
Как просмотреть только некомментированные директивы файла конфигурации из файла squid.conf или httpd.conf?
Как убрать комментарии и пустые строки в Linux или Unix-подобной системе?
Продолжение статьи:
🐧 Как вывести содержимое файлов без комментариев и пустых строк на Linux
Чтобы просмотреть только незакомментированные строки текста в файле конфигурации, используйте grep, sed, awk, perl или любую другую утилиту обработки текста, предоставляемую операционными системами UNIX / BSD / OS X / Linux.
Давайте посмотрим, как удалить или проигнорировать все строки комментариев из файлов конфигурации Unix и Linux с помощью CLI.
- Пример команды grep для парсинга данных
- Удаление всех строк комментариев из файлов конфигурации Linux и исключение пустых строк
- Понимание параметров командной строки grep или egrep
- Как использовать grep для отсеивания всех комментариев и пустых строк в Linux
- Работа с большими файлами конфигурации, которые не помещаются на экране
- Пример команды sed для просмотра только некомментированных строк в текстовом файле конфигурации/скрипта
- Заключение
Пример команды grep для парсинга данных
Вы можете использовать команду gerp следующим образом, чтобы увидеть только незакомментированные строки в текстовом файле/скрипте или файлах конфигурации.
Синтаксис следующий:
Например, вот как посмотреть файл конфигурации веб-сервера Apache без комментариев, отмеченных символом #:
Примеры выводов:
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'
Вот обновленная версия, чтобы справиться с этим безумием:
Обновленная версия шаблона grep должна удалять все комментарии, включая те, которые содержат ведущие или завершающие пробельные символы, а также те, которые состоят исключительно из символов #.
Вот как это работает:
- sudo : Вам нужен sudo, так как обычные пользователи не могут читать файл nginx.conf.
- grep -E : Включит расширенные регулярные выражения для поиска шаблонов.
- -v : Эта опция указывает grep инвертировать совпадение, выбирая только строки, не соответствующие заданному вами шаблону.
- ^[[:space:]]* : Эта опция определяет соответствие нулю или более пробельных символов, включая пробелы или табуляции, в начале строки файла конфигурации.
- #+ : Этот параметр соответствует одному или нескольким символам # в вашем файле конфигурации.
- ^$ : Удаляет все пустые или незаполненные строки. Символ ^ обозначает начало строки, а $ – конец строки. Таким образом, ^$ совпадает с пустыми строками.
- [[:space:]]* : И наконец, эта строка соответствует нулю или других пробельных символов после символов # в вашей строке.
Работа с большими файлами конфигурации, которые не помещаются на экране
Лучше всего использовать такие утилиты, как «bat», «cat», «less» или «more»:
Пример команды sed для просмотра только некомментированных строк в текстовом файле конфигурации/скрипта
Вот как можно использовать команду GNU/sed:
GNU или BSD sed также может обновить ваш файл конфигурации.
Синтаксис следующий: редактируйте файлы на месте, сохраняя резервные копии с указанным расширением, например .bak:
Заключение
В конфигурационных файлах Linux и Unix комментарий – это текст, предназначенный для чтения человеком и игнорируемый системой.
Комментарии объясняют назначение различных параметров конфигурации, содержат инструкции по изменению файла или документируют другую важную информацию о конфигурации вашего сервера.
cм. также:
- 🧟 Как найти и убить зомби-процессы в системах Linux
- 🐧 Как найти доступные сетевые интерфейсы в системах Linux
- 🌐 Проверка доступности доменного имени с помощью bash и whois
- 🖧 Как навсегда сохранить правила брандмауэра iptables на Linux
- ☁️ Как проверить, является ли система Linux физической или виртуальной машиной