Verrebbe da chiedersi perchè “ostinarsi” a fare uso del terminale quando ormai i più recenti Debian, Ubuntu e compagnia permettono di fare molte cose da interfaccia grafica: non è solo questione di fare i nerd, in effetti.
- 1) Dove si trova il terminale di Linux
- 2) Che cos’è la tilde (~)
- 3) Sintassi generale di un comando
- 4) Comando echo per stampare a video
- 5) Spostarsi tra le directory (cd, pwd)
- 6) Visualizzare il contenuto delle cartelle (ls)
- 7) Rinominare e spostare file e directory (mv)
- 8) Copiare file (cp)
- 9) Creare file e directory (touch/mkdir)
- 10) Eliminare file e directory (rm)
- 11) Permessi chmod
- 12) Creare una directory
- 13) Copiare uno o più file
- 14) Spostare un file
- 15) Cancellare un file
- 16) Cercare un file
- 17) Installare un pacchetto su Debian / Ubuntu
- 18) Vedere la “storia” dei comandi digitati
- 19) Vedere la cartella in cui mi trovo
- 20) Scoprire il proprio nome utente
- 21) Determinare i processi attivi in tempo reale
- 22) Verificare un log di errori (ad es. Apache)
- 23) Modalità superuser
- 24) Editor di testo: pico
- 25) Connettersi a SSH
- 26) Effettuare un PING /curl su un host
- 27) Cercare testo dentro uno o più file con grep
- 28) Altri comandi
Il terminale di Linux racchiude una potenza incredibile al proprio interno, e permette di eseguire operazioni avanzatissime in modo peraltro molto più pratico, intuitivo e veloce di quanto non avvenga normalmente via GUI.
Del resto, usare il terminale dei sistemi operativi Linux in modo avanzato non è uno scherzo: molte operazioni richiedono skill non banali, oltre ad una conoscenza approfondita del come funzionino gli hardware ed i sistemi in genere. Con questa guida non ho certo la pretesa di insegnare tutto quello che c’è da sapere sull’argomento, anche perchè ho sempre usato collateralmente Linux (e quasi sempre per scopi molto specifici), ma certo almeno le basi per poter lavorare “al minimo” direi proprio che sia il caso di averle.
Usa il codice
189ed7ca010140fc2065b06e3802bcd5
per ricevere 5 € dopo l’iscrizione
Dove si trova il terminale di Linux
In genere trovate il terminale sotto Applicazioni, Accessori, selezionando quindi Terminale.
Vale per Ubuntu e per moltissime altre distribuzioni Linux (RedHat, Debian, ecc.).
Che cos’è la shell BASH
In genere esistono più shell di comando all’interno dei terminali testuali Linux-based, ma quella più utilizzata rimane certamente la BASH; per aprire il terminale, da Debian bisogna cercare “Terminale” nella barra di ricerca delle applicazioni, mentre da Ubuntu basta andare su Applicazioni e poi su Accessori di Ubuntu. La prima cosa che vedremo nel terminale è il nostro nome utente, il nome del computer e poi, subito dopo i due punti (:), la nostra posizione dentro il filesystem.
Che cos’è la tilde (~)
Se vedete il simbolo tilde (~), per inciso, si tratta di un alias, cioè significa che vi trovate dentro la vostra home directory, ad esempio /home/tuonomeutente.
Sintassi generale di un comando
Come già fatto per il terminale Windows e per il terminale Mac, bisogna inquadrare da subito la struttura generale di un comando qualsiasi, che è caratterizzato da tre componenti
- nome;
- eventuali opzioni;
- argomento.
In pratica la struttura vista corrisponde ad un qualcosa del genere, a livello “espressivo“:
-
- cosa fare (ad esempio creare o cancellare un file);
- come farlo (in modalità binaria, come file di testo, oppure in modo permanente);
- dove farlo (ad esempio un file o una directory).
Comando echo per stampare a video
Le opzioni in genere possono mancare, mentre il comando più semplice da utilizzare è senza dubbio echo, che serve a stampare una stringa statica a video (ma eventualmente contenuti dinamici come, ad esempio, il risultato di un comando o l’output emesso da un programma). Ad esempio, quindi:
echo Salve, gente!
che – poco fantasiosamente, in questo caso – permetterà di stampare:
Salve, gente!
Spostarsi tra le directory (cd, pwd)
cd
: cambia directory. Ad esempio,cd cartella1
ti sposta nella cartella1.pwd
: mostra il percorso della directory in cui ti trovi.
Visualizzare il contenuto delle cartelle (ls)
ls
: mostra il contenuto della directory in cui ti trovi.ls -l
: mostra informazioni dettagliate sui file e sulle cartelle, inclusi dimensione, permessi, proprietari, gruppi e data di ultima modifica.ls -a
: mostra anche i file nascosti.ls -R
: mostra il contenuto di tutte le sottodirectory.ls -t
: ordina i file per data di ultima modifica.ls -alt
: combina le opzioni-l
,-a
e-t
.
I due comandi base da conoscere sono a questo punto ls e cd: il primo permette di listare i file nella directory corrente, mentre il secondo vi permette di navigare nelle directory di sistema. ls da solo si utilizza raramente, anche perchè ci sono molti parametri assegnabili come i seguenti, che servono a mostrare tutti i file in formato “lungo”.
Avremo quindi:
ls -la
che farà vedere, nella directory base, il contenuto della cartella Linux in cui vi trovate:
drwxr-xr-x 2 salcapolupo groupcapolupo 4096 2018-01-10 10:32 . drwxr-xr-x 27 salcapolupo groupcapolupo 4096 2018-04-08 09:07 .. -rw-r--r-- 1 salcapolupo groupcapolupo 133379 2018-07-11 12:29 pippo.dc
con l’indicazione dei permessi impostati (a sinistra, prima colonna), del numero di file contenuti, del nome dell’utente, del gruppo di appartenenza, della dimensione del file e della data e ora del file stesso. Nell’ultima colonna troverete il nome del file o della directory in questione.
cd sta per change directory, e serve a navigare nel file-system del computer. Il comando cd non fa altro che farvi navigare nel filesystem:
per andare indietro di un livello:
cd ..
per andare, invece, alla root o radice originaria del filesystem:
cd \
Rinominare e spostare file e directory (mv)
mv
: rinomina o sposta file e directory. Ad esempio,mv vecchio_nome.txt nuovo_nome.txt
rinomina il file vecchio_nome.txt in nuovo_nome.txt. Per spostare un file in un’altra directory, usa il percorso della directory come destinazione. Ad esempio,mv file123.txt /tmp
sposta il file123.txt nella cartella temporanea/tmp
.
Copiare file (cp)
cp
: copia file. Ad esempio,cp file_da_copiare cartella_destinazione
copia il file file_da_copiare nella cartella cartella_destinazione.
Creare file e directory (touch/mkdir)
touch
: crea un file vuoto.mkdir
: crea una directory.
Eliminare file e directory (rm)
rm
: elimina file e directory. Ad esempio,rm file_da_cancellare
elimina il file file_da_cancellare. Per eliminare una directory, usa l’opzione-r
. Ad esempio,rm -r directory
elimina la directory directory e tutto il suo contenuto.
Permessi chmod
Proviamo a complicare leggermente le cose, considerando un comando come chmod, il quale serve ad impostare i permessi (lettura, scrittura ed esecuzione) sui file del filesystem. Si tratta di un concetto che molti webmaster conoscono, del resto, perchè quando si lavora via FTP sui file di un sito, ad esempio, impostare i permessi in modo adeguato è spesso vitale per garantire il funzionamento del sito stesso.
Vedi anche: chmod per WordPress
Una cosa che non si dovrebbe mai fare, in genere, è impostare un permesso 777, che è il massimo della permissività in quanto permette a qualsiasi utente del sistema di fare qualsiasi cosa. In genere, pertanto, è molto più prudente impostare un permesso 775 come segue, in questo caso in modo ricorsivo (-r):
chmod -r 775 /percorso/ad/una/cartella/o/file
in cui eseguiamo chmod con parametri -r 775 sul percorso indicato.
La struttura del comando è sempre la stessa: chmod indica cosa fare, -r 775 come farlo e il path indica dove effettuare il comando (il “dove” non indica per forza un path, ovviamente, perchè dipende sempre dal comando; nel caso di chmod il dove è chiaramente un percorso di file o directory).
Creare una directory
Per creare una directory pippo basta scrivere:
mkdir pippo
Copiare uno o più file
Per copiare un file singolo nella directory desiderata:
cp prova.file directory-destinazione
Per copiare più file, similmente:
cp *.txt pluto cp *.doc paperino
Per copiare una directory (ricorsivamente):
cp -r pluto ../
Spostare un file
Per spostare i file la sintassi è analoga, solo bisogna usare mv al posto di cp.
Cancellare un file
Per cancellare file si usa rm, che non ha conoscenza del cestino: i file da terminale, di solito, vengono eliminati subito, per cui utilizzatelo sempre con la massima cautela nella vostra operatività quotidiana.
Cercare un file
Per cercare un qualsiasi file:
apt-cache search "nome file"
Installare un pacchetto su Debian / Ubuntu
per installare un pacchetto:
apt-get install [nome pacchetto]
Altri comandi da conoscere assolutamente riguardano gli aggiornamenti di sistema e delle applicazioni, che possono cambiare in base alla versione di Linux utilizzata.
apt-get update
Vedere la “storia” dei comandi digitati
Per vedere la lista dei comandi digitati, cioè lo storico delle cose che avete fatto (molto utile per recuperare ad esempio attività lasciate a metà , ad esempio causa errore), basta digitare il comando history senza parametri nè argomento, e premere Invio.
Un esempio di history:
911 man 7 signal 912 man ps 913 man 7 signal 914 man killall 915 killall -l 916 man killall 917 su - 918 su - lighttpd 919 su - lighttpd 920 cd /tmp/ 921 ncftpget -u '[email protected]' lan.pippo.org.it
Vedere la cartella in cui mi trovo
Come faccio a vedere la cartella in cui mi trovo? Per vedere il nome del path (assoluto) della directory corrente, cioè il nome della cartella in cui vi trovate, digitate semplicemente:
pwd
che non è un comando relazionato con le password, bensଠcon l’acronimo print working directory.
Scoprire il proprio nome utente
Come faccio a vedere il mio nome utente? La crisi d’identità si risolve facilmente digitando:
whoami
Determinare i processi attivi in tempo reale
Per vedere i processi attivi nel sistema in quel momento:
top
Verificare un log di errori (ad es. Apache)
In caso di crash di un sito può essere utile verificare le ultime righe del log di Apache, che spesso può essere caotico e difficile da filtrare. Questo comando è utile per trovare, nel 90% dei casi, la causa del problema:
watch tail -n 15 /var/log/apache2/error.log
Modalità superuser
Per accedere in modalità superuser ed avere il massimo dei privilegi, premettete a qualsiasi comando della forma vista al punto 0 con il comando su, esempio:
sudo command123 -p1 -p2 123 ...
Attenzione che se accedete in modalità su 1) vi sarà richiesta la password di root (che non apparirà mentre la digitate) 2) qualsiasi comando potrà essere eseguito, ivi compresa la cancellazione o modifica di file importanti. Fate quindi molta attenzione a come ne fate uso.
Editor di testo: pico
Il terminale Linux eredita parecchio dalla shell UNIX, e naturalmente ne contiene i suoi programmi più interessanti: uno dei miei preferiti è pico, un editor di testo abbastanza potente, che potete vedere digitando:
pico
oppure:
pico nomefile.txt
e su cui vi suggerisco un rapido tutorial (in inglese) prima di farne uso.
Connettersi a SSH
Come fare una connessione SSH? SSH serve a instaurare sessioni di lavoro remote su macchine esterne, ad esempio il vostro cloud o VPS. Per operare in questa direzione la sintassi tipica è la seguente:
ssh [email protected]
che permette di collegarsi come root all’IP aaa.bbb.ccc.ddd. Attenzione che queste connessioni sono normalmente regolamentate da un certificato di autenticazione che dovrete installare una tantum (vedi qui per i necessari approfondimenti).
Per approfondire la questione date uno sguardo ai vari tutorial di questo sito sull’argomento shell remota.
Effettuare un PING /curl su un host
Per effettuare un PING su un host, cioè per valutare i suoi tempi di risposta, si scrive:
ping miohost.it
dove miohost.it può essere sostituito da un IP. Per testare il funzionamento di una pagina web basta invece digitare:
curl -V sito.it
che restituisce il markup della pagina e la sua risposta codificata (codice 200 per dire “tutto ok”, 404 per pagina mancante, 301 per redirect permanente, 302 per temporaneo, 500 per errore irreversibile e cosଠvia).
Potete anche usare il tool via browser per il PING, se preferite.
Cercare testo dentro uno o più file con grep
Per cercare pattern di testo nei vostri file di testo o codice utilizzerete grep:
grep -ic qualcosa file.txt
che cerca le occorrenze del pattern “qualcosa” dentro file.txt.
Per confrontare due file (ad esempio due versioni di codice), invece, si scrive:
diff -y firstfile secondfile
Altri comandi
Quanti sono i comandi disponibili? Per vedere la lista completa dei comandi basta usare compgen nelle seguenti varianti:
compgen -c
tutti i comandi con permessi di esecuzionecompgen -a
tutti gli alias con permessi di esecuzionecompgen -A function
tutte le funzioni che si possono lanciare
👇 Da non perdere 👇
- Domini Internet 🌍
- Lavoro 🔧
- Mondo Apple 🍎
- Programmare 🖥
- Reti 💻
- Svago 🎈
- WordPress 🤵
- 💬 Il nostro canale Telegram: iscriviti
- 🔵 Guida pratica al teorema della scimmia instancabile
- 🟠 Come parlano gli hosting: termini utilizzati
- 🔵 Integrali svolti (8 esempi)