Continuando dalla prima Lezione sulle basi dei comandi linux, continuiamo a vedere i comandi di base del sistema (GNU coreutils), che funzionano allo stesso modo su tutte le principali distribuzioni Linux: Debian, Ubuntu, Fedora, Arch, Manjaro, MX Linux, e molte altre.

Con la conoscenza di questi piccoli tools, a poco a poco, riusciremo ad esempio di muoverci all’interno del file system, eseguire ricerche, visualizzare file di testo, ecc.

In questo nuovo articolo, ci concentriamo sui comandi che consentono di eseguire ricerche e trovare testo o files, conoscere informazioni di sistema e capire meglio come funzionano i permessi e le proprietà di file e cartelle.

Indice dei comandi


Ricerca e trova

In questa sezione, vengono illustrati i comandi di base per la ricerca ad esempio di file o cartelle all’interno del sistema, oppure per trovare testo all’interno di file o cartelle che contengono file di testo, o ancora la posizione in cui si trovano i file eseguibili.

find: Cerca file e cartelle

Cosa fa?

Questo comando cerca file o cartelle in modo recursivo, ad esempio se voglio trovare tutti i file con una stessa estensione. Di base il comando parte sempre dalla cartella corrente in cui ci si trova (verificabile con comando pwd, vedi Lezione 1).

Sintassi base:

$ find [percorso] -name [pattern]

Il percorso rappresenta la cartella all’interno della quale voglio cercare il file/pattern.
Nel caso volessi cercare dei file con una certa estensione, è possibile usare come pattern “*.ext“.

Opzioni comuni:

  • Rendere la ricerca insensitive con -iname
    cioè non verranno eseguite distinzioni per caratteri maiuscoli o minuscoli
$ find [percorso] -iname [pattern]
  • Ricercare all’interno della cartella corrente.
    N.B. la ricerca avviene anche all’interno di sottocartelle nascoste.
$ find . -name [pattern]
Esempio di ricerca cartella “ciao”, come visibile la ricerca avviene anche all’interno delle sottocartelle nascoste.
  • Ricerca nella cartella di livello superiore:
$ find .. -name "*.docx"
  • Ricerca all’interno della cartella home:
$ find ~ -name "*.pdf" 

per altre informazioni, consultare l’help del comando: find --help

Torna a Indice dei comandi

grep: Ricerca all’interno di file di testo

Cosa fa?

Questo comando viene utilizzato per fare una ricerca di una stringa su uno o più file. Sostanzialmente rappresenta un filtro per la ricerca di testo all’interno di file. Il suo nome deriva da: global regular expression print, che evidenzia la sua natura di comando di ricerca.

Sintassi base:

$ grep [pattern] [file]

Dove il pattern rappresenta la stringa che vogliamo cercare, inserita tra “virgolette“.
N.B. è possibile anche inserire il nome di più file se la ricerca non è solo su un singolo.
Per cercare invece la “stringa” all’interno di cartelle e quindi nei file contenuti nelle cartelle bisogna utilizzare l’opzione -r, ad esempio:

$ grep -r [pattern] [dir]

In questo caso il comando prende come secondo parametro il valore dir, cioè directory (cartella).

Nell’immagine sotto, un esempio di ricerca della parola “comandi” all’interno di un file di esempio della cartella corrente “example“.

Esempio di utilizzo del comando “grep” per ricerca di testo all’interno di un file

Per cercare ad esempio su più file contenuti in una cartella che hanno una stessa estensione è possibile utilizzare la forma del comando:

$ grep "stringa" *.ext

Opzioni comuni:

  • Ignorare la distinzione tra maiuscole e minuscole:
$ grep -i [pattern] [file]
  • Stampare il numero della riga con le righe di output:
$ grep -n [pattern] [file]
  • Stampare solo il nome del file che contiene quella stringa:
$ grep -l [pattern] [file]
  • Trovare e stampare tutte le righe che non contengono la stringa cercata:
$ grep -v [pattern] [file]
  • Trovare e stampare le righe che contengono la parola cercata, ma solo se la prima:
$ grep "^pattern" [file]
  • Trovare esattamente la parola cercata per intero e non parole che ad esempio la contengono in parte:
$ grep -w [pattern] [file]

per altre informazioni, consultare l’help del comando: grep --help

Torna a Indice dei comandi

which: Trova e mostra il percorso dell’eseguibile cercato

Cosa fa?

Questo comando viene utilizzato per trovare e mostrare dove si trova il file eseguibile/comando cercato, stampando il percorso nel terminale.

Sintassi base:

$ which [command]

Nell’immagine sotto un esempio che mostra il percorso dell’eseguibile di Python.

Ricerca del percorso di Python3

Il comando non è percorso o cartella dipendente, quindi può essere lanciato da qualsiasi posizione, l’importante è essere all’interno del terminale.

Torna a Indice dei comandi

locate: Trova i file dal nome

Cosa fa?

Questo comando consente di ricercare i percorsi dei file all’interno del sistema, non tutte le distribuzioni linux supportano nativamente il comando, ma può essere facilmente installato dal terminale.
In alcuni casi dopo l’installazione può trovarsi sotto il nome di mlocate o plocate oltre che solo locate, (mlocate e plocate sono versioni più moderne e veloci del comando base).

Sintassi base:

$ locate [name]

Tip: nel caso durante l’utilizzo venisse mostrato un errore di file corrotto o qualcosa di simile, aggiornate il database delle informazioni dei file di sistema con il comando: sudo updatedb

Opzioni utili:

  • Stampa il numero di file con quel nome trovati:
$ locate -c [name]
  • Rendere la ricerca indipendente da maiuscole o minuscole nel nome:
$ locate -i [name]

per altre informazioni, consultare l’help del comando: locate --help

Torna a Indice dei comandi

Mostrare informazioni di sistema

In questa sezione verranno illustrati i comandi principali e di base che consentono di avere informazioni sul sistema in uso. Ad esempio l’utente corrente, la versione e il tipo di kernel in uso, i processi in esecuzione, ecc.

whoami: mostra il nome dell’utente corrente

Cosa fa?

Questo comando serve per mostrare sul terminale il nome dell’utente corrente loggato sul sistema.

Sintassi base:

$ whoami

Torna a Indice dei comandi

uname: riepilogo informazioni di sistema

Cosa fa?

Questo comando stampa a terminale informazioni di sistema, come ad esempio kernel, architettura, ecc.
Il comando riportato rappresenta un comando abbastanza obsoleto che spesso nei sistemi x86_64 non mostra correttamente tutte le informazioni di sistema che nei sistemi moderni non sono sempre valorizzati a livello di kernel.
Lo trovate riportato in questo articolo a scopo didattico, ma ci sono altri comandi per le informazioni di sistema (es. lscpu, inxi o lshw) che consentono di ottenere le varie specifiche e che saranno trattati nelle successive lezioni.

Sintassi base:

Questo comando viene praticamente sempre utilizzato con l’opzione -a, dove “a” sta per all, tutte, quindi stiamo chiedendo al software di stampare tutte le informazioni.

$ uname -a

Questo comando tuttavia risulta in qualche modo obsoleto, e spesso viene solo utilizzato per verificare la versione del kernel Linux installata.

Esistono versioni di comandi più aggiornati per verificare le informazioni di sistema (hardware e software), ma saranno oggetto della prossima lezione.

Torna a Indice dei comandi

top: Vista dei processi in esecuzione

Cosa fa?

Questo comando viene utilizzato per visualizzare dinamicamente i processi in esecuzione, compreso utilizzo di RAM/CPU.

Sintassi base:

$ top

Nell’immagine sotto, viene riportato un esempio di output del comando. In particolare i dati vengono aggiornati in tempo reale, quindi è un processo che rimane in esecuzione fino alla chiusura.

Tuttavia, oggi questo comando è facilmente sostituibile con pacchetti installabili facilmente e che consentono di accedere ad informazioni più complete e facilmente leggibili, come ad esempio “htop”, che verrà trattato nelle successive lezioni.

Esempio schermata comando top

QuickTip: quando si è all’interno di un applicazione nel terminale, una combinazione di tasti sempre utile per chiudere, al netto dei comandi interni all’app, è utilizzare “CTRL + C“.

Torna a Indice dei comandi

ps aux: Istantanea di tutti i processi in esecuzione

Cosa fa?

Questo comando consente di avere un Istantanea di tutti i processi in esecuzione a tutti i livelli. Quindi ad esempio sia i processi del/dei vari utenti, insieme ai processi root di sistema.

Sintassi base:

$ ps aux

L’output mostrato nell’immagine sotto, mostra per colonne i vari dettagli come Utente, PID del processo, uso della CPU, memori, ecc.

Esempio comando $ ps aux

Opzioni comuni:

Nella realtà il comando così come riportato in sintassi base, è già un comando che usa delle opzioni, il comando da solo sarebbe “ps“. L’opzione “aux” di fatto fa parte della sintassi base di utilizzo del comando, che di rado viene utilizzato senza nessuna opzione.

kill: Chiudere un processo tramite PID

Cosa fa?

Ogni processo su Linux, e nei sistemi in generale, viene identificato con un ID (PID) su Linux. Ad esempio, nell’immagine precedente del comando ps aux, la colonna PID mostra chiaramente il valore numerico associato ad ogni processo in esecuzione. Conoscere questa variabile è utile nel momento in cui vogliamo chiudere un processo da terminale o forzarne la chiusura; per fare ciò uno dei comandi base è kill.

Sintassi base:

$ kill [PID]

Torna a Indice dei comandi

df: Mostrare spazio occupato in tutte le partizioni

Cosa fa?

Questo comando mostra lo spazio libero e utilizzato delle varie partizioni o dischi installati sul computer. Viene mostrato lo spazio anche di partizioni non direttamente accessibili al sistema operativo, come ad esempio partizioni di avvio, EFI/UEFI, ecc.

Sintassi base:

$ df

Spesso usata con l’opzione -h (Human readable) che consente una migliore interpretazione con le informazioni di spazio espresse in Kilobyte, megabyte, ecc.

$ df -h

Opzioni utili:

  • Includere tutti i file system ad esempio duplicati o inaccessibili
$ df -a
  • Limita l’elenco delle informazioni ai file system locali
$ df -l
  • Limita l’elenco filtrando per tipologia di file system (es. ext4, NFTS, ecc.). Questo comando richiede quindi oltre all’opzione, anche l’argomento cioè il tipo di file system, come nella sintassi di seguito.
$ df -t ext4

per altre informazioni, consultare l’help del comando: df --help

Torna a Indice dei comandi

du: Mostrare spazio utilizzato da una cartella

Cosa fa?

Mostra lo spazio occupato da una cartella, considerando tutti i file e le sottocartelle al suo interno.

Sintassi base:

Spesso viene utilizzato con l’opzione “-h” (human readable), in modo da avere l’informazione sullo spazio facilmente leggibile espressa in kb, MB, ecc.

du -f [nome_cartella]

per altre informazioni, consultare l’help del comando du --help.

Torna a Indice dei comandi

free: Mostrare la quantità di RAM utilizzata dal sistema

Cosa fa?

Il comando mostra la quantità di RAM utilizzata dal sistema. Ma non solo, riporta la quantità totale, eventuale memoria Swap utilizzata, ecc.

Sintassi base:

Spesso, per migliorarne la lettura, anche questo comando viene utilizzato con l’opzione “-h” per convertire i dati con unità di misura facilmente interpretabili (es. kb, mb, ecc.).

$ free -h

per altre informazioni, consultare l’help del comando free --help.

Torna a Indice dei comandi

uptime: mostra da quanto tempo il sistema è in esecuzione

Cosa fa?

Questo comando mostra da quanto tempo il sistema è in esecuzione, cioè da quanto tempo è avvenuta l’ultima accensione.

Sintassi base:

$ uptime

Opzioni utili:

  • Rendere l’output più gradevole e organizzato nelle informazioni
$ uptime -p
  • Mostrare la data dall’ultima accensione
$ uptime -s

Per ulteriori informazioni, consultare l’help del comando uptime --help.

Torna a Indice dei comandi

$ FINE LEZIONE 2 $


Questi comandi si integrano alla Lezione 1, e costituiscono la base per l’utilizzo di linux da terminale.
Nel prossimo articolo vedremo nello specifico come funzionano i permessi, le tipologie e come utilizzarli e leggerli.

1 commento su “Linux base: info di sistema, cerca e trova [Lezione 2]”

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *