Guida per principianti: i principali comandi del terminale Linux

Rispondi
Avatar utente
openresource
Administrator
Administrator
Messaggi: 382
Iscritto il: mar gen 28, 2020 9:52 pm
Reactions score: 4
Località: varese
Contatta:
mar 2020 09 12:15

Guida per principianti: i principali comandi del terminale Linux

Messaggio da openresource

Immagine

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. 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.

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. 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.

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.
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 permetterà di stampare:

Salve, gente!
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).
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.

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 di fare qualsiasi cosa. In genere, pertanto, è molto comune 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. Come potete ammirare, la struttura del comando è sempre la stessa: chmod indica cosa fare, -r 775 come farlo e il path dove effettuare il comando (il “dove” non indica per forza un path, ovviamente, perchè dipende sempre dal comando; nel caso di chmod il dove è sempre un percorso di file o directory).

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.

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 \
Per creare una directory pippo basta scrivere:

mkdir pippo
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 ../
Per spostare i file la sintassi è analoga, solo bisogna usare mv al posto di cp. 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.

Per cercare un certo tipo di programma:

apt-cache search "nome programma"
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
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 esecuzione
compgen -a tutti gli alias con permessi di esecuzione

compgen -A function tutte le funzioni che si possono lanciare
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 'turi@lan.pippo.org.it' lan.pippo.org.it
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.

Come faccio a vedere il mio nome utente? La crisi d’identità si risolve facilmente digitando:

whoami
Per vedere i processi attivi nel sistema in quel momento:

top
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.

  1. 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.

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 root@aaa.bbb.ccc.ddd
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.

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).

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

Immagine
Rispondi