Quando visualizzi un codice sorgente o il contenuto di un file di configurazione nell'output standard usando cat
comando, vedrai tutto in quel file comprese le righe commentate e vuote, giusto? Sì. E se volessi visualizzare solo le righe non commentate, ignorando tutte le altre? Bene, è possibile ignorare le righe commentate e vuote dall'output di un file. In questa breve guida vedremo come stampare file senza commenti e righe vuote in Linux. Questo può essere utile quando vuoi rivedere rapidamente un file di configurazione che contiene molti commenti e righe vuote.
Cosa sono i commenti nella programmazione di computer?
Se guardi in un codice sorgente o in un file di configurazione, noterai che molte righe iniziano con un asterisco "*"
o un hash "#"
o una barra "/"
o un punto e virgola ";"
. Queste righe sono note come Commenti . Nella programmazione per computer, un commento è una descrizione o un'annotazione leggibile dall'uomo utilizzata per chiarire lo scopo del codice. Aiutano gli utenti e altri programmatori a capire facilmente cosa sta facendo il codice. In genere, i commenti e le righe vuote verranno ignorati da compilatori e interpreti. Sono solo per i programmatori. La sintassi dei commenti varia a seconda del linguaggio di programmazione.
Ora vediamo come escludere o saltare questi commenti e righe vuote e visualizzare solo le righe che non sono commentate.
Stampa file senza commenti e righe vuote in Linux
Lascia che ti mostri i contenuti di sources.list
file del mio sistema Ubuntu:
$ cat /etc/apt/sources.list
Risultato di esempio:
# deb cdrom:[Ubuntu 18.04.2 LTS _Bionic Beaver_ - Release amd64 (20190210)]/ bionic main restricted # See http://help.ubuntu.com/community/UpgradeNotes for how to upgrade to # newer versions of the distribution. deb http://it-mirrors.evowise.com/ubuntu/ focal main restricted # deb-src http://in.archive.ubuntu.com/ubuntu/ bionic main restricted ## Major bug fix updates produced after the final release of the ## distribution. deb http://it-mirrors.evowise.com/ubuntu/ focal-updates main restricted # deb-src http://in.archive.ubuntu.com/ubuntu/ bionic-updates main restricted ## N.B. software from this repository is ENTIRELY UNSUPPORTED by the Ubuntu ## team. Also, please note that software in universe WILL NOT receive any ## review or updates from the Ubuntu security team. deb http://it-mirrors.evowise.com/ubuntu/ focal universe # deb-src http://in.archive.ubuntu.com/ubuntu/ bionic universe deb http://it-mirrors.evowise.com/ubuntu/ focal-updates universe # deb-src http://in.archive.ubuntu.com/ubuntu/ bionic-updates universe ## N.B. software from this repository is ENTIRELY UNSUPPORTED by the Ubuntu ## team, and may not be under a free licence. Please satisfy yourself as to ## your rights to use the software. Also, please note that software in ## multiverse WILL NOT receive any review or updates from the Ubuntu ## security team. deb http://it-mirrors.evowise.com/ubuntu/ focal multiverse # deb-src http://in.archive.ubuntu.com/ubuntu/ bionic multiverse deb http://it-mirrors.evowise.com/ubuntu/ focal-updates multiverse # deb-src http://in.archive.ubuntu.com/ubuntu/ bionic-updates multiverse ## N.B. software from this repository may not have been tested as ## extensively as that contained in the main release, although it includes ## newer versions of some applications which may provide useful features. ## Also, please note that software in backports WILL NOT receive any review ## or updates from the Ubuntu security team. deb http://it-mirrors.evowise.com/ubuntu/ focal-backports main restricted universe multiverse # deb-src http://in.archive.ubuntu.com/ubuntu/ bionic-backports main restricted universe multiverse ## Uncomment the following two lines to add software from Canonical's ## 'partner' repository. ## This software is not part of Ubuntu, but is offered by Canonical and the ## respective vendors as a service to Ubuntu users. # deb http://archive.canonical.com/ubuntu bionic partner # deb-src http://archive.canonical.com/ubuntu bionic partner deb http://it-mirrors.evowise.com/ubuntu/ focal-security main restricted # deb-src http://security.ubuntu.com/ubuntu bionic-security main restricted deb http://it-mirrors.evowise.com/ubuntu/ focal-security universe # deb-src http://security.ubuntu.com/ubuntu bionic-security universe deb http://it-mirrors.evowise.com/ubuntu/ focal-security multiverse # deb-src http://security.ubuntu.com/ubuntu bionic-security multiverse
Hai visto che molte righe sono commentate con il carattere "#"? Rende il file meno leggibile. Questo è solo un piccolo file, quindi non è un grosso problema. Ma quando leggi un file di configurazione molto lungo, ad esempio "httpd.conf" o "php.ini", dovrai passare attraverso molti commenti e righe vuote ed è un po' confuso trovare quali righe sono attive e quali no.
Per evitare che tutti i commenti e le righe vuote vengano visualizzati nell'output del file, utilizza grep comando come di seguito:
$ grep "^[^#*/;]" /etc/apt/sources.list
Ecco,
- il primo
^
il carattere indica l'inizio della riga nel file specificato, ad esempio/etc/apt/sources.list
. [^#*/;]
- visualizzerà tutte le righe che iniziano con qualsiasi carattere diverso da questi quattro caratteri"#"
,"*"
,"/"
,";"
. In altre parole, tutte le righe che iniziano con i caratteri"#"
,"*"
,"/"
,";"
sarà escluso dall'output.
Esempio di output del comando precedente:
deb http://it-mirrors.evowise.com/ubuntu/ focal main restricted deb http://it-mirrors.evowise.com/ubuntu/ focal-updates main restricted deb http://it-mirrors.evowise.com/ubuntu/ focal universe deb http://it-mirrors.evowise.com/ubuntu/ focal-updates universe deb http://it-mirrors.evowise.com/ubuntu/ focal multiverse deb http://it-mirrors.evowise.com/ubuntu/ focal-updates multiverse deb http://it-mirrors.evowise.com/ubuntu/ focal-backports main restricted universe multiverse deb http://it-mirrors.evowise.com/ubuntu/ focal-security main restricted deb http://it-mirrors.evowise.com/ubuntu/ focal-security universe deb http://it-mirrors.evowise.com/ubuntu/ focal-security multiverse
Vedere? Tutti i commenti e le righe vuote sono spariti. Ora l'output è abbastanza leggibile.
Dai un'occhiata al seguente screenshot:

Sul lato sinistro, vedi il contenuto del file con commenti e righe vuote. Sulla destra, tutti i commenti e le righe vuote vengono ignorati con "grep"
comando.
Preferisco il modo grep per filtrare le righe non necessarie visualizzate nell'output. Puoi farlo anche usando awk
e sed
anche i comandi.
Per stampare il contenuto del file escludendo tutti i commenti e le righe vuote con "awk"
comando, esegui:
$ awk '$1 ~ /^[^;#]/' /etc/apt/sources.list
Risultato di esempio:

Per visualizzare le righe inizia senza commenti usando "sed"
comando, esegui:
$ sed -e '/^#/d' /etc/apt/sources.list
Per maggiori dettagli sull'utilizzo, fare riferimento alla pagina di manuale del rispettivo comando.
$ man awk
$ man grep
$ man sed
Spero che questo aiuti.