Nonostante sia possibile far quasi di tutto attraverso un’interfaccia grafica, ecco a voi i 30 comandi da terminale su Linux più importanti!
La shell Bash è uno strumento potentissimo che, se saputo usare bene, permette agli utenti GNU/Linux di fare tutto in modo più efficiente, più veloce ed offre nuove possibilità a chi non la conosceva. 👍
Non a caso, abbiamo citato qui il Terminale tra i motivi di forza di GNU/Linux.
Insomma siete pronti a diventare sovrani del regno del vostro computer?
Indice dei top 30 comandi da terminale:
- man (manuale dei comandi da terminale)
- pwd (stampa la directory corrente)
- mkdir (crea directory)
- rmdir (rimuove directory vuota)
- ls (stampa contenuto della directory)
- cd (sposta su una directory)
- touch (crea file vuoto)
- rm (rimuove file)
- echo (mostra qualcosa a schermo)
- nano (edita un file)
- cat (visualizza file)
- less (scorrere le righe di un file)
- cp (copia file o directory)
- mv (sposta o rinomina file o directory)
- ln (creare collegamenti)
- grep (ricerca stringa)
- tr (sostituzione di un carattere)
- sed (manipolazioni di un testo)
- cut (rimuove sezioni da linee)
- awk (manipolazione di un testo)
- wc (conta linee, parole, bytes)
- sort (ordina linee)
- chmod (cambia permessi file)
- chown (cambia propietario)
- find (trova file o directory)
- locate (come find ma più semplice)
- date (mostra data e orario)
- su (cambia utente)
- sudo (esegui comando con privilegi root)
- clear (pulisci lo schermo)
Se cerchi una serie di video didattici sui comandi da terminale, eccola qua:
Comandi da terminale 1: man
Ogni qualvolta vorrete leggere il manuale o scovare qualche informazione per un determinato comando, digitate semplicemente:
man nome_del_comando
Comandi da terminale 2: pwd
Tramite pwd potrete visualizzare il percorso della directory in cui vi trovate attualmente. Molto utile quando imparerete (tra poco) a spostarvi da una parte all’altra del vostro sistema e non ricordate su quale directory siete. 😃
Comandi da terminale 3: mkdir
Con mkdir andate a creare una nuova directory. Potete digitare il comando seguito dal nome scelto per la nuova directory oppure seguito dal percorso della nuova directory. Ecco alcuni esempi:
mkdir la_mia_nuova_directory # crea all'interno della directory attuale
mkdir Documenti/nuova_dir_documenti # crea all'interno di documenti, ammesso che "Documenti" sia presente nella directory in cui ci troviamo
mkdir /home/utente/Documenti/nuova_dir_documenti # anche questo crea all'interno di "Documenti": la differenza è che "/home/utente/Documenti/nuova_dir_documenti" è un percorso assoluto, valido indipendentemente da dove ci si trova sul sistema
Comandi da terminale 4: rmdir
Il comando rmdir rimuove la directory specificata, ma solo se quest’ultima è completamente vuota:
rmdir directory_da_eliminare # verrà eliminata se presente sulla directory in cui ci troviamo
rmdir /home/utente/Documenti/dir_da_eliminare # come il precedente ma con percorso assoluto
Comandi da terminale 5: ls
Ecco a voi il comando per visualizzare file e sottodirectory! Può essere usato sulla directory attuale o su qualunque percorso del sistema. Vediamo alcuni degli usi più comuni del comando ls:
ls # stampa il contenuto della directory attuale
ls -l # stampa il contenuto ma con più informazioni
ls -a # stampa il contenuto, compresi i file nascosti
ls Documenti # stampa il contenuto della directory "Documenti"
ls -lah /home/utente/Musica # stampa il contenuto di "Musica" con diverse informazioni e con le dimensioni dei file
Comandi da terminale 6: cd
Questo è un comando molto semplice e permette di collocarsi altrove nel sistema. Come già visto per altri comandi, anche cd può essere usato da solo senza argomenti, oppure con un percorso relativo o assoluto:
cd # sposta dalla directory attuale alla home dell'utente
cd Musica # sposta sulla directory "Musica"
cd /home/utente/Video # sposta sulla directory "Video"
Comandi da terminale 7: touch
Finalmente un comando per creare un file, anche se vuoto! In realtà, touch serve anche ad aggiornare all’orario attuale le informazioni di accesso e modifica di un file. Tuttavia creerete un nuovo file, se gli date in pasto un nome di file inesistente:
touch nuovo_file # crea il file "nuovo_file", oppure aggiorna le sue informazione se il file esiste già sulla directory attuale
touch /home/utente/Documenti/nuovo.txt # come sopra, ma si tratterà del file "nuovo.txt" nella directory "Documenti"
Comandi da terminale 8: rm
Abbiamo visto come eliminare directory vuote, ma non sappiamo ancora né come eliminare file né come forzare la rimozione di directory non vuote. Ecco quindi che ci viene incontro il comando rm:
rm file1 # elimina "file1" se presente nella directory attuale
rm Documenti/file2 # elimina (se presente) "file2" dalla directory "Documenti"
rm -r Documenti # elimina la directory "Documenti" e tutto il suo contenuto ricorsivamente
rm -rf /home/utente/Musica # elimina la directory "Musica" e tutto il suo contenuto in modo forzoso, senza richiedere ulteriori interazioni all'utente e ignorando file e argomenti non esistenti
Comandi da terminale 9: echo
Questo è uno facile! Può essere davvero molto utile, se combinato tramite piping ad altri comandi o se usato con la redirezione. Di per sé, il comando echo mostra semplicemente il testo dato come input. Vediamo due semplici usi:
echo "Ciao, come va?" # stampa a schermo "Ciao, come va?"
echo 12345 >> numeri.txt # aggiunge una nuova riga "12345" al file "numeri.txt": se il file non esiste, lo crea esattamente con questa riga
Comandi da terminale 10: nano
Non vi basta creare file vuoti con touch ed inserirvi delle righe di testo con echo? No, ovviamente no! 😂
Ok, stavo scherzando: nonostante si possa manipolare file in una miriade di modi, abbiamo ovviamente bisogno di un editor di testo (e ne esistono diversi).
nano è un editor di testo da terminale user-friendly. Vi basterà digitare “nano nome_file” e si aprirà il file specificato: se il file non esiste già, avrete la possibilità di inserire quel che volete su questo file che verrà creato; altrimenti avrete la possibilità di editare il contenuto del (preesistente) file.
In basso alla schermata vedrete le combinazioni di tasti tramite cui impartire ordini all’editor nano. Ad esempio CTRL-O per salvare e CTRL-X per uscire.
Comandi da terminale 11: cat
Spesso è molto utile visualizzare semplicemente l’intero contenuto di un file ed, eventualmente, effettuare delle operazioni su questo output.
Grazie al comando cat possiamo quindi mostrare a schermo un file, ma non solo! Infatti questo è uno strumento per concatenare insieme diversi file:
cat file1 # stampa a schermo il contenuto di "file1"
cat /home/Documenti/file2 # stampa il contenuto di "file2" presente in "Documenti"
cat file1 file3 # stampa i due file (concatenati)
E se digitiamo solo “cat” senza alcun argomento? A voi scoprirlo…
Comandi da terminale 12: less
Abbiamo visto che il comando cat stampa a video il contenuto di un file. Ma esiste un’opzione più comoda che permetta di aprire un lungo file in lettura e scorrerne il suo contenuto? Ovviamente si!
Vi basterà digitare “less nome_file” e potrete scorrerlo con i tasti direzionali (e non solo). Per uscire e tornare al prompt dovrete semplicemente premere il tasto “q”.
Comandi da terminale 13: cp
Vediamo finalmente come copiare file o directory tramite il comando cp:
cp file1 file2 # crea una copia di "file1" su "file2"
cp file1 Documenti/ # crea una copia di "file1" su "Documenti/file1"
cp -r Immagini/ Documenti/ # crea una copia della directory "Immagini" e (ricorsivamente) del suo contenuto sulla directory "Documenti"
Comandi da terminale 14: mv
Dopo aver visto come copiare, vediamo adesso come spostare o rinominare tramite il comando mv:
mv file1 file2 # rinomina il "file1" a "file2"
mv file1 Documenti/ # sposta "file1" dalla directory attuale alla directory "Documenti"
mv Documenti/sfondi/ Immagini/ # sposta tutta la directory "sfondi" da "Documenti" a "Immagini"
Comandi da terminale 15: ln
Bene! Hai già imparato non poco! 😉
Adesso vediamo il comando per creare collegamenti tra file o directory. Esistono duei tipi di link su GNU/Linux: hard e simbolici.
Creando un link simbolico, create semplicemente un nuovo file che contiene il percorso al file o directory a cui volete puntare. Questo nuovo file vi farà da ponte verso il file originale:
ln -s file_originale symlink # crea il collegamento "symlink" al file "file_originale"
ln -s directory_originale/ symlink # come sopra: lo stesso comando è valido per file e directory
ln -sf Documenti/file1 Immagini/file2 # crea un collegamento "file2" nella directory "Immagini" al "file1" della directory "Documenti". Ma se un "file2" esisteva già, forzerà la creazione sovrascrivendo il preesistente "file2"
L’hard link (collegamento fisico) si differenzia dal link simbolico perché va ad associare proprio il contenuto di un file: in sostanza, il link non sarà una “scorciatoia” verso il percorso originale del file, ma piuttosto un secondo nome di file associato a quel contenuto. Non sarà tecnicamente accurato, ma forse vi aiuterà pensare all’hard link come ad una “copia” del file, con la particolarità che le modifiche al contenuto di una delle due “copie” si ripercuoteranno sull’altra.
Con il link simbolico, il contenuto originale si perderà definitivamente dopo aver cancellato il file originale. Con l’hard link, il contenuto originale si perderà definitivamente solo dopo aver cancellato tutte le “copie”, compreso il file originale da cui il tutto è partito.
In questa guida non vi verrà mostrato l’hard link, ma il comando rimane comunque il buon ln, senza il flag “-s” visto per il link simbolico.
Comandi da terminale 16: grep
Uh, che faticaccia i link! Ma ora passiamo alla ricerca di una stringa, di un pattern all’interno di un determinato testo.
Con grep potrete ricercare all’interno dell’output dato da altri comandi oppure su uno o più file. Sono tante le possibilità, ma qui vedremo le più comuni:
grep "pattern" file1 # mostra le righe del "file1" dove è presente "pattern"
grep -v "pattern" Documenti/file2 # mostra le righe del "file2" dove NON è presente "pattern"
grep -R "pattern" Documenti/ # cerca ricorsivamente tutte le occorrenze di "pattern" nella directory "Documenti" e le mostra
qualche_comando_che_da_output | grep "pattern" # qui grep viene usato col pipe per filtrare l'output del primo comando
Comandi da terminale 17: tr
Cominciamo ad effettuare qualche manipolazione del testo! Con tr potrete sostituire o cancellare singoli caratteri da un output generato da un altro comando o da un file:
echo "ciao" | tr 'c' 'm' # mostra "miao" sullo schermo
echo "ciao" | tr -d 'a' # cancella la "a" e mostra "cio" sullo schermo
tr 'a' 'z' < file1 # mostra il contenuto di "file1", ma con delle "z" al posto di "a"
Comandi da terminale 18: sed
Questo comando viene usato per trasformare del testo proveniente da un file o dall’output di un altro comando. Impossibile trattare sed a fondo in questo articolo, ma ecco a voi come viene usato più comunemente:
echo "Il gatto miagola" | sed 's/gatto/cane/' # La prima e unica occorrenza di "gatto" verrà sostituita da "cane
echo "Il gatto miagola, il gatto fa le fusa" | sed 's/gatto/cane/g' # Vengono sostituite tutte le occorrenze di gatto, grazie alla "g" finale del comando
sed 's/gatto/cane/g' file1 # mostra il contenuto di "file1", ma ogni "gatto" verrà sostituito da "cane"
sed -i 's/gatto/cane/g' file1 # stesso effetto del precedente, ma il file verrà modificato
sed '/gatto/d' file1 # mostra il contenuto di "file1" senza le righe contenenti "gatto"
Comandi da terminale 19: cut
A volte riceviamo una lunga linea di output sul terminale ma siamo interessati solo ad una sezione in particolare, che sappiamo essere separata da altre sezioni da un determinato delimitatore. Su questa linea immaginaria saranno presenti, quindi, un primo campo, il delimitatore, un secondo campo, un eventuale secondo delimitatore e così via. Il comando cut ci permette di scegliere il delimitatore e il campo da selezionare:
echo "a-b-c-d" | cut -d "-" -f2 # stampa il secondo campo, ovvero "b"
echo "a:b:c:d" | cut -d ":" -f3 # stampa il terzo campo, ovvero "c"
Comandi da terminale 20: awk
awk è un linguaggio di programmazione specializzato per la manipolazione del testo. In questo articolo vedremo solo un paio di esempi più comuni su come usare il comando awk.
Se sei già un mago di awk, non troverai nulla di interessante qui… 😁
echo "a b c d" | awk '{print $2}' # stampa la seconda colonna, ovvero "b"
echo "1 2 3 4" | awk '{print $3}' # stampa la terza colonna, ovvero "3"
echo "1:2:3:4" | awk -F ":" '{print $3}' # anche qui la terza colonna, con i due punti come delimitatore
echo "1:2:3:4" | awk -F ":" '{print $1+$2}' # stampa la somma della prima e seconda colonna, ovvero "3"
echo "a b c d" | awk '{print $NF}' # stampa l'ultima colonna, ovvero "d"
awk '{print $1}' file # stampa la prima colonna di tutte le righe presenti in "file"
awk '/foo/ {print $2}' file # stampa la seconda colonna di tutte le righe contenenti "foo"
awk 'NR==30' file # stampa la trentesima linea di "file"
Comandi da terminale 21: wc
Ma ora torniamo a qualcosa di facile!
Il comando wc, usato senza alcun flag, vi mostrerà il numero di linee, parole e bytes di un qualche testo:
echo "ciao amico" | wc
# mostra 1 2 11
wc file # mostra numero di linee, parole e bytes del file
wc -l file # mostra solo il numero di linee
wc -w file # mostra solo il numero di parole
Comandi da terminale 22: sort
Spesso si ha la necessità di riordinare linee di output e il comando sort ci viene in soccorso:
printf '%s\n' d b e a c | sort # ordina da "a" a "d"
printf '%s\n' 4 2 8 7 1 9 3 5 6 10 | sort # ordina ma ATTENZIONE al numero "10", che andrà direttamente dopo "1"
printf '%s\n' 4 2 8 7 1 9 3 5 6 10 | sort -n # ordina numericamente...
printf '%s\n' 4 2 8 7 1 9 3 5 6 10 2 | sort -nu # ordina numericamente e toglie i duplicati
printf '%s\n' 4K 2M 8G 7G 1M 9K 3G 5K 6M 10K | sort -h # ordina in base alle dimensioni (human-readable sizes)
sort -r file # ordina le linee del file, ma al contrario
23: chmod
Ed ecco che ci vorrebbe un articolo a parte per parlare dei permessi su GNU/Linux!
In questo articolo ci limiteremo ad apprendere che esistono permessi di lettura, scrittura ed esecuzione e che questi tre permessi possono variare per il proprietario, per il gruppo e per “gli altri”.
Per semplicità tratteremo solo i permessi dei file e trascureremo le directory:
chmod +r file # assegna il permesso di lettura per il proprietario
chmod -r file # toglie il permesso di lettura al proprietario
chmod +w file # assegna il permesso di scrittura (modifica)
chmod -w file # toglie il permesso di scrittura (modifica)
chmod +x file # assegna il permesso di esecuzione
chmod g-x file # toglie il permesso di esecuzione al gruppo
chmod o+w file # assegna agli altri il permesso di scrittura
chmod a+rwx # assegna a chiunque (proprietario, gruppo e altri) permesso di lettura, scrittura ed esecuzione
chmod 777 # equivalente al precedente, ma con la notazione numerica...che non tratteremo
24: chown
Dopo aver visto il comando per cambiare permessi, passiamo a quello per cambiare proprietario e gruppo di file e directory:
chown mario file # "mario" sarà proprietario di "file"
chown mario:mario file # il primo "mario" si riferisce al proprietario, il secondo al gruppo
chown -R mario:mario directory # le modifiche valgono per "directory" e, ricorsivamente, per le sottodirectory
25: find
Vediamo adesso come cercare file e directory tramite find. Anche qui, ci limiteremo a pochi esempi:
find . -name "FILE_DIRECTORY" # trova "FILE_DIRECTORY" ricorsivamente sulla directory attuale, ma solo con tutte le lettere maiuscole (come specificato)
find . -iname "FILE_DIRECTORY" # trova questo nome di file o directory ricorsivamente sulla directory attuale, ma in modo case-insensitive (ignorando per ogni lettera se è maiuscola o minuscola)
find . -iname "mario" -type f # trova solo il file "mario" ma non la directory "mario"
find . -iname "mario" -type d # trova solo la directory "mario" ma non il file "mario"
find . -iname "*.jpg" # trova nomi che finiscono con ".jpg"
find /home/utente/Immagini -iname "*.jpg" # come il precedente, ma specificando "/home/utente/Immagini" come percorso in cui cercare e non la directory attuale
26: locate
Anche quest’ultimo comando vi potrà essere utile per trovare file ma, al contrario di find, si appoggia al database preparato da updatedb, che si aggiorna automaticamente ad intervalli regolari.
Il comando locate è molto semplice ma, se la vostra ricerca implica qualcosa che è stato recentemente creato/cancellato e il database non è ancora aggiornato a queste novità, beh… i risultati della ricerca saranno ovviamente falsati!
sudo updatedb # aggiorna il database sul momento
locate pattern # trova nell'intero database tutto ciò che contiene "pattern"
27: date
Con il comando date potete visualizzare data e orario del sistema ed, eventualmente, settarli voi:
date # mostra qualcosa del tipo "ven 24 mag 2024, 11:16:50, CEST"
date +"%Y" # stampa l'anno corrente
date +"%m" # mostra il numero del mese corrente
date +"%B" # mostra il nome del mese corrente
date +"%d" # mostra il giorno del mese
date +"%A" # mostra il giorno della settimana
date +"%H:%M" # mostra le ore e i minuti
date 052411252024.40 # imposta la data al 24/05/2024 ore 11:25:40. Il formato è mese (05), giorno (24), ore (11), minuti (25), anno (2024) e i secondi (40) dopo il punto
28: su
Questo comando permette di eseguire comandi cambiando temporaneamente l’utente che li esegue. Possiamo eseguire un singolo comando (come altro utente) oppure eseguire una shell (come altro utente) e proseguire fin quando vogliamo, per poi uscire col comando “exit”:
su # esegue una shell come utente root (disabilitato su molte distribuzioni)
sudo su # permette l'esecuzione di una shell come root sulle distribuzioni in cui l'accesso a root è disabilitato
su - username # vi richiederà la password dell'utente in questione e vi restituirà una shell, come se questo utente si stesse loggando
su - username -c "comando" # eseguirà solamente "comando" come utente "username"
29: sudo
Anche sudo permette di eseguire comandi come altro utente, generalmente come superutente (root), quindi per compiti di amministrazione.
Usate sudo sempre con cautela e solo se strettamente necessario per l’amministrazione del sistema. Avrete a disposizione questo comando solo se amministrate direttemente il sistema che state usando o, alternativamente, se l’amministratore del sistema vi ha inseriti nel file /etc/sudoers:
sudo comando # esegue "comando" come utente root
sudo -u username comando # esegue "comando" come utente "username"
sudo su # esegue un'intera shell come utente root
sudoedit file # apre "file" in lettura e scrittura con privilegi di amministrazione, con editor nano di default
30: clear
Complimenti! Sei giunto alla fine della top 30 dei comandi da terminale su GNU/Linux! 😉
Su questo comando c’è ben poco da dire: digitando clear pulirete lo schermo del terminale. Almeno nella Bash shell, esiste la scorciatoia CTRL-L per ottenere lo stesso risultato.
Abbiamo finito! Siate sovrani del vostro sistema e non esitate a visitare il forum per feedback e chiarimenti.
Lascia un commento