I comandi Linux più importanti a confronto

Come la maggior parte dei sistemi operativi moderni, anche Linux vi mette a disposizione due interfacce per l’immissione degli input da parte degli utenti. Tutte le impostazioni che potete apportare tramite l’interfaccia grafica (Graphical User Interface, GUI) si possono anche applicare sotto forma di comandi dallariga di comando, chiamata anche shell.

La shell è un programma che svolge la funzione di interfaccia tra sistema e utente. Comprende un interprete della riga di comando, accoglie gli input utente tramite tastiera e li analizza, avvia i programmi e restituisce all’utente il risultato sotto forma di testo. Inoltre ogni shell possiede un proprio linguaggio di programmazione che consente di scrivere gli script shell, ad esempio per aprire i collegamenti ai programmi e semplificare lo svolgimento dei compiti amministrativi.

Ogni shell funziona su un terminale. Agli albori dell’epoca dei computer venivano utilizzati dei dispositivi indipendenti, chiamati terminal hardcopy (stampanti o schermi con tastiera). Questi apparecchi sono stati sostituiti nei computer moderni con gli emulatori di terminale, ovvero dei programmi che mettono a disposizione degli utenti una finestra grafica per l’interazione con la shell.

Non appena richiamate il terminale del vostro sistema operativo, questo avvia la shell standard, stabilita nelle impostazioni (ad esempio la Bourne again shell, Bash) e accoglie gli input inseriti nel prompt, cioè nella riga di comando.

Fatto

Con il tempo sono state sviluppate diverse shell per sistemi operativi compatibili con UNIX che si distinguono per varietà di funzioni e usabilità. Così gli utenti di Linux hanno la possibilità di scegliere quale interprete per la riga di comando utilizzare. Sulla maggior parte dei sistemi operativi sono già preinstallate diverse shell. Il passaggio da una shell a un'altra avviene comodamente dal terminale (vedi chsh nel capitolo “Gestione dell'account utente”). Tra le shell più famose si annoverano oltre ai programmi standard Bash e Dash, la Fish, la Z shell, la Korn shell, la (t)csh e la mksh.

L'interazione con la shell avviene solitamente tramite comandi con i quali si possono aprire gli omonimi programmi della riga di comando. Per ogni azione che volete eseguire tramite il terminale, utilizzate un comando secondo lo schema seguente:

COMANDO [OPZIONI] [ARGOMENTI]

L'apertura di un programma dal terminale avviene utilizzando il nome del programma. La maggior parte dei programmi offrono la possibilità di interpellare precise funzioni del programma tramite opzioni. Se un programma prevede degli argomenti, ad esempio sotto forma di file o percorsi, solitamente vengono inseriti dopo le opzioni scelte.

Nei paragrafi successivi vi illustriamo i comandi di Linux più comuni e i programmi della riga di comando correlati.

Comandi di base

Nella categoria comandi di base rientrano i comandi di Linux essenziali che servono a controllare il terminale. Scoprite così come svuotare l'area visibile del terminale, come richiamare dalla cronologia i precedenti comandi immessi nel terminale o come terminare una sessione.

Comando

Descrizione

clear

Svuotare il terminale

Utilizzate il comando clear per rimuovere il contenuto dello schermo.

clear

Così ottenete un terminale vuoto con aperta solo la finestra della riga di comando. Gli input immessi precedentemente rimangono però memorizzati nello scrollback buffer.

Al posto di usare questo comando, si può anche svuotare il terminale tramite la combinazione di tasti [CTRL] + [L].

exit

Terminare la sessione

Il comando exit termina la sessione corrente e chiude il terminale.

exit

In alternativa utilizzate la combinazione di tasti [CTRL] + [D].

help

Mostrare la lista di tutti i comandi shell

Utilizzate il comando help per farvi mostrare una lista di tutti i comandi shell integrati (comandi built-in).

help

Inserite il comando help insieme a un comando shell per ricevere una piccola descrizione del corrispettivo comando.

help COMANDO

history

Visualizzare le voci della cronologia

Su Bash vengono memorizzati nella cronologia (in inglese “history”) gli ultimi 500 comandi che avete inserito nella riga di comando.

La funzione serve ad aiutarvi durante l’immissione degli input e vi consente di ricercare nella lista dei comandi precedenti con i tasti freccia e di eseguirli di nuovo confermando con il tasto di invio.

Si possono ricercare delle parole chiave nella cronologia tramite la combinazione di tasti [CTRL] + [R]. Alternativamente avete la possibilità di farvi mostrare la lista completa numerata nel terminale.

Per fare ciò utilizzate il comando history senza opzioni e argomenti.

history

Se volete filtrare il risultato, combinate history con una pipe e il programma della riga di comando grep (vedi opzioni di ricerca) e una parola chiave.

history | grep PAROLA CHIAVE

Pagine di aiuto

Non sapete come andare oltre? Niente paura! Su Linux avete a disposizione diverse pagine di aiuto e di documentazione, come le pagine del manuale di Unix (conosciute anche come “man pages”) e le pagine informative GNU visualizzabili direttamente dal terminale. Queste guide comprendono una descrizione dettagliata di tutti i programmi della riga di comando, dei collegamenti del sistema, dei file di configurazione, dei formati e delle funzioni del kernel. Con whatis e apropos nella categoria delle pagine di aiuto trovate anche i programmi della riga di comando con cui potete ricercare le parole chiave presenti nelle pagine del manuale del vostro sistema operativo.

Comando

Descrizione

apropos

Ricercare nel manuale

Utilizzate apropos per ricercare le parole chiave nei titoli delle pagine e delle descrizioni contenute nel manuale del vostro sistema operativo. Questo programma vi fornisce tutti i corrispettivi nel terminale comprensivi di una breve descrizione.

Ispiratevi allo schema seguente:

apropos [OPZIONI] PAROLA CHIAVE

Il comando supporta diverse opzioni. Delimitate la ricerca alla dicitura esatta con l'opzione -e(--exact) o utilizzate il segnaposto (-w '*PAROLA CHIAVE') e le espressioni regolari (-r).

info

Visualizzare le pagine informative GNU

Tramite il comando info si possono visualizzare le pagine informative GNU su un tema specifico. Ciò corrisponde nella maggior parte dei casi alle pagine del manuale che si possono richiamare tramite man, ma al contrario di queste mostrano dei collegamenti che vi agevolano la navigazione nel manuale.

Utilizzate la sintassi seguente per visualizzare le pagine informative GNU:

info [OPZIONE] TEMA

Se non inserite l'opzione e il tema, venite indirizzati al menu principale delle pagine informative GNU.

man

Visualizzare il manuale

Il comando man apre le pagine del manuale (man pages) della vostra distribuzione Linux direttamente nel terminale.

Utilizzate lo schema seguente per visualizzare la pagina del manuale:

man [OPZIONE] TEMA

Le man pages di Linux sono suddivise in 10 tematiche:

    (1) Comandi utente

    (2) Collegamenti del sistema

    (3) Funzioni del linguaggio di programmazione C

    (4) Formati dei file

    (5) File di configurazione

    (6) Giochi

    (7) Varie

    (8) Comandi per l'amministrazione del sistema

    (9) Funzioni del kernel

    (10) Nuovi comandi

Se ad esempio volete aprire la pagina di un comando Linux in particolare, utilizzate man insieme al nome del comando.

man clear

In alternativa potete restringere la ricerca inserendo il numero della tematica:

man 1 clear

In entrambi i casi si apre la pagina del manuale riguardante il comando clear. Utilizzate il tasto [Q] per chiuderlo e ritornare quindi al terminale.

Una possibilità di ricercare le parole chiave nel manuale di Linux è data dal comando apropos.

pinfo

Visualizzare le pagine informative in stile lynx

Con pinfo avete a disposizione una variante del programma della riga di comando info che si ispira al browser della riga di comando Lynx e vi fa visualizzare le pagine informative con i link evidenziati con diversi colori.

Utilizzate pinfo basandovi sullo stesso schema del comando info.

pinfo [OPZIONI] TEMA

whatis

Ricerca di parole chiave nelle pagine del manuale

Il programma della riga di comando whatis serve per ricercare le parole chiave nel manuale.Visualizzate il programma con una qualsiasi parola per ricercare nel manuale del vostro sistema operativo delle corrispondenze esatte. Se esiste un corrispettivo, whatis ne fornisce una breve descrizione nel terminale.

whatis [OPZIONI] PAROLA CHIAVE

Anche whatis (-w '*PAROLA CHIAVE') supporta segnaposti ed espressioni regolari (-r).

Operazioni con le cartelle

Utilizzate i comandi Linux per effettuare operazioni con le cartelle per creare, eliminare e gestire cartelle e i relativi file sul vostro sistema dal terminale, oltre che per navigare nelle cartelle. Tra i comandi più importanti di questa categoria rientrano cd, ls, mkdir, rmdir.

Comando

Descrizione

cd

Navigare tra le cartelle

Il comando cd sta per change directory e serve per navigare tra le cartelle.

La sintassi del comando è la seguente:

cd [OPZIONE] CARTELLA

Se non viene inserita una cartella di destinazione, cd si sposta automaticamente nella cartella home dell'utente.

Se cd viene seguito da un segno meno (-), si ritorna alla cartella precedente.

chroot

Eseguire un programma in una nuova root

Il comando chroot (abbreviazione di change root) viene utilizzato per eseguire un comando in un'altra root. L'istruzione chroot viene ad esempio usata per isolare i programmi critici dal resto del file system. In questo caso si parla di chroot jail.

Per aprire il programma sono richiesti i permessi di root e il comando si ispira allo schema seguente:

chroot CARTELLA COMANDO

ls

Elencare i contenuti della cartella

Il comando ls sta per list e viene utilizzato per mostrare il contenuto di una cartella (i nomi di tutti i file e di tutte le cartelle che si trovano nella cartella indicata).

La sintassi del comando è la seguente:

ls [OPZIONI] CARTELLA

Se ls viene utilizzato senza indicare la cartella, il comando elenca il contenuto della cartella corrente.

Grazie a opzioni aggiuntive definite quali informazioni vengono indicate e come vengono visualizzate.

mkdir   

Creare una cartella

Il comando mkdir sta per make directory e consente agli utenti Linux di creare nuove cartelle.

Utilizzate la sintassi seguente per creare una nuova cartella in quella corrente:

mkdir [OPZIONE] NOMECARTELLA

Se volete si possono creare più cartelle contemporaneamente, scrivendo uno dopo l'altro i nomi di queste e separandoli con uno spazio:

mkdir [OPZIONE] NOMECARTELLA1 NOMECARTELLA 2

Se una cartella deve essere creata in una precisa cartella di destinazione, indicate il percorso assoluto o relativo per giungere alla cartella.

mkdir /home/user/Desktop/test

mkdir ../Desktop/test

In entrambi gli esempi la cartella test viene creata sul desktop.

mkdirhier

Creare una gerarchia tra le cartelle

Con mkdirhier si può creare una gerarchia di cartelle completa con un unico comando:

mkdirhier [OPZIONE] /home/user/cartella1/ cartella2/ cartella3

Se cartella1 e cartella2 esistono già, mkdirhier crea solo la cartella3. Altrimenti vengono generate tutte e tre le cartelle.

pwd

Ottenere il nome della cartella

Utilizzate pwd (abbreviazione di print working directory) per farvi mostrare il nome della cartella corrente in cui state lavorando.

La sintassi del comando è la seguente:

pwd [OPZIONI]

rmdir

Eliminare la cartella

Se volete eliminare una cartella in particolare, utilizzate il comando rmdir (remove directory) basandovi sulla seguente sintassi:

rmdir [OPZIONE] CARTELLA

Con rmdir potete rimuovere solo le cartelle vuote. Per eliminare una cartella con tutti i file e le sottocartelle, utilizzate il comando rm (remove) con l'opzione -r.

Attenzione:rmdir non richiede la conferma dell'eliminazione, perciò le cartelle selezionate verranno rimosse definitivamente.

tree

Elencare le cartelle nella struttura ad albero

Mentre ls elenca solo il contenuto delle cartelle, con il comando tree si può mostrare la gerarchia completa delle cartelle, in modo ricorsivo, all'interno della struttura ad albero.

Il collegamento segue questa sintassi:

tree [OPZIONI] [CARTELLA]

Operazioni con i file

I comandi Linux di questa sezione consentono di eseguire diverse operazioni con i file direttamente dal terminale. Utilizzate i comandi Linux di base come cp, mv e rm per copiare, spostare, rinominare o eliminare i file dal vostro sistema.

Comando

Descrizione

basename

Visualizzare il nome del file

Al comando basename viene trasmesso un percorso del file; è presente solo il nome del file senza il percorso antecedente.

La sintassi del comando è la seguente:

basename [OPZIONI] Percorso/al/file [SUFFISSO]

Inserite ad esempio nel terminale $ basename /home/user/immagine.jpg per ottenere il risultato seguente:

immagine.jpg

L'informazione aggiuntiva del suffisso viene eliminata anche dal risultato.

Inserimento: $ basename /home/user/immagine.jpg .jpg

Risultato: immagine

Il comando può essere ampliato a più file grazie alle opzioni.

cat

Unire i contenuti dei file

Il comando cat (abbreviazione di concatenate) è stato sviluppato come strumento per l'unione dei contenuti dei file e può essere utilizzato come pager per visualizzare i contenuti dei file nel terminale.

Aprite nel terminale cat con la seguente sintassi per inserire un file e riceverlo nello stdout (standard output):

cat OPZIONI FILE

Più file vengono separati da spazi:

cat OPZIONI FILE1 FILE 2

Il collegamento dei contenuti del file avviene tramite operatori di reindirizzamento (>, < e |). Utilizzate ad esempio l'operatore "più grande di" (>) per unire il contenuto di due file in un terzo:

cat file_1.txt file_2.txt > file_3.txt

cmp

Sincronizzare i file a livello di byte

cmp fa parte del pacchetto diff e serve come questo per confrontare i contenuti dei file. Diversamente da come avviene su diff, la sincronizzazione avviene quindi sul livello di byte e si adatta in particolare per i file binari.  

Utilizzate cmp ricorrendo alla seguente sintassi:

cmp [OPZIONI] FILE1 FILE2

Se cmp riscontra delle differenze, il comando restituisce il numero della riga e di byte della prima divergenza trovata.

comm

Comparare i file ordinati per righe

Utilizzate il comando comm per comparare i file ordinati (ad esempio tramite sort) per righe.

La sintassi alla base del programma è la seguente:

comm [OPZIONI] FILE1 FILE2 

Se a comm non segue nessuna opzione, il programma genera un risultato con tre colonne: la prima colonna comprende tutte le righe che compaiono solo nel FILE1, la seconda colonna comprende tutte le righe che compaiono solo nel FILE2 e la terza colonna include tutte le righe che compaiono su entrambi i file.

Il programma supporta tre opzioni:

    -1 = eliminare le righe uniche dal FILE1

    -2 = eliminare le righe uniche dal FILE2  

    -3 = eliminare tutte le righe che sono contenute in entrambi i file

cp

Copiare i file o le cartelle

Il comando cp (copy) viene utilizzato per copiare i file e le cartelle. La sintassi di base del comando è la seguente:

cp [OPZIONI] ORIGINE DESTINAZIONE

ORIGINE è l'elemento che deve essere copiato. Come DESTINAZIONE del processo di copia viene definito un file o una cartella. Se definite un file preesistente come file di destinazione il suo contenuto verrà sovrascritto con quello del file di orgine. In alternativa avete la possibilità di creare il file di destinazione come nuovo file con il nome desiderato.

Se doveste aver copiato più file, la destinazione deve essere una cartella. Lo stesso vale nel caso in cui è una cartella ad essere copiata.

Per copiare un file di origine in un file di destinazione nella cartella corrente:

cp [OPZIONI] FILEORIGINE FILEDESTINAZIONE

Esempio: cp file.txt file_copia.txt

Per copiare un file di origine dalla cartella corrente nella cartella di destinazione:

cp [OPZIONI] FILEORIGINE  CARTELLA DESTINAZIONE

Esempio: cp file.txt home/user/documenti/2017

Per copiare più file di origine in una cartella di destinazione:

cp [OPZIONI] FILEORIGINE1 FILEORIGINE2 CARTELLADESTINAZIONE

Esempio: cp file.txt file.odt home/user/documenti/2017

Per copiare una cartella di origine dalla cartella corrente nella cartella di destinazione:

cp CARTELLAORIGINE CARTELLADESTINAZIONE

Esempio: cp cartella1 home/user/documenti/2017

Se devono essere copiate le cartelle comprensive di tutti i contenuti, nel processo di copia devono essere incluse tutte le sottocartelle con l'OPZIONE -R.

cut

Estrarre i contenuti dei file

Il comando cut vi consente di estrarre dalle righe di un testo di un file dei contenuti per colonne (per esempio file di log o CSV).

La sintassi del comando è la seguente:

cut [OPZIONI] FILE

La posizione precisa di una parte da estrarre viene definita tramite le opzioni -b (posizione dei byte), -c (posizione del carattere), -d (separatore) e -f (campo).

diff

Confrontare i file o le cartelle

Il comando diff serve a confrontare due file. In alternativa si può stabilire tramite diff se due cartelle contengono gli stessi file.

La visualizzazione nel terminale avviene ricorrendo alla sintassi seguente:

diff [OPZIONI] FILE1 FILE2

dirname

Visualizzare il percorso del file

dirname è il contrario di basename. Il comando consente di estrarre una parte di percorso da un percorso del file e di visualizzarlo nel terminale senza indicare il nome del file.

La sintassi del comando è la seguente:

dirname [OPZIONI]

Inserite ad esempio nel terminale $ dirname /home/user/immagine.jpg per ricevere il risultato:

/home/user

file

Visualizzare il tipo di file

Con il comando file si possono ottenere le informazioni relative al tipo di file preso in considerazione.

Lo schema alla base della visualizzazione è il seguente:

file [OPZIONI] FILE

ln

Creare un collegamento al file o alla cartella

Il comando ln (abbreviazione di link) genera un collegamento a un file o a una cartella. Così viene generato un'ulteriore voce per questo file che vi consente di accedere al file relativo tramite un altro percorso.

Il programma della riga di comando ln deve almeno sempre contenere il percorso al file originario.

ln [OPZIONI] percorso/al/file/originario

Il link viene creato, in questo caso, con lo stesso nome nella cartella in cui si sta lavorando.

Alternativamente avete la possibilità di indicare un percorso di destinazione e di dare un qualsiasi nome al collegamento:

ln [OPZIONI] percorso/al/file/originario percorso/al/collegamento

ln crea nelle impostazioni standard i cosiddetti hard link che non sono però adatti a creare collegamenti alle cartelle. Inoltre non si possono utilizzare gli hard link oltre i limiti di partizione. Il comando viene utilizzato quindi spesso con l'OPZIONE -s (--symbolic) con cui si possono creare anche oltre i limiti del file system. I link simbolici rimandano sempre a un "vero" percorso del file e ne sono dipendenti.

lsof

Visualizzare i file aperti nel terminale

lsof sta per list open files, un programma che vi mostra nel terminale le informazioni sui file aperti, ordinati per PID (ID del processo o process ID). 

La visualizzazione nel terminale avviene secondo lo schema seguente:

lsof [OPZIONI]

Visto che i sistemi compatibili con UNIX come Linux seguono il principio "Everything is a file“ (in italiano: “tutto è un file”), la lista mostrata dal comando lsof è conseguentemente lunga. Di solito vengono perciò utilizzate le opzioni per delimitare il risultato.

md5sum

Calcolare le checksum

Grazie al comando md5sum si possono calcolare e verificare le checksum in MD5 per i file.  

mv

Spostare un file o una cartella

Il programma della riga di comando mv (move) copia un file o una cartella, eliminando l'elemento originario. Se ciò accade all'interno della stessa cartella, mv può essere utilizzato per rinominare i file.

Lo schema alla base della visualizzazione è il seguente:

mv [OPZIONE] ORIGINE DESTINAZIONE

Esempi di applicazione:

Per spostare un file in un'altra cartella: 

mv [OPZIONI] FILEORIGINE CARTELLADESTINAZIONE

Esempio: mv file1.txt home/user/documenti/2017

Per spostare più file di origine in una cartella di destinazione:

mv [OPZIONI] FILEORIGINE1 FILEORIGINE2 CARTELLADESTINAZIONE

Esempio: mv file1.txt file2.txt home/user/documenti/2017

Per spostare la sottocartella dalla cartella corrente in una cartella di destinazione:

mv [OPZIONI] NOMECARTELLA_OLD NOMECARTELLA_NEW

Esempio: mv cartella1 home/user/documenti/2017

Per rinominare il file nella cartella corrente:

mv [OPZIONI] NOMEFILE_OLD NOMEFILE_NEW

Esempio: mv file1.txt file2.txt

Per rinominare la sottocartella nella cartella corrente:

mv [OPZIONI] NOMECARTELLA_OLD NOMECARTELLA_NEW

Esempio: mv cartella1 cartella2

paste

Unire i contenuti dei file per colonna

In maniera analoga a cat anche il comando paste consente la visualizzazione dei contenuti del file nello standard output. Ma mentre cat unisce solo i contenuti uno dietro l'altro, paste li collega per colonne.

Lo schema di base del comando è il seguente:

paste [OPZIONI] FILE1 FILE2 …

Nella modalità standard i file mostrati vengono uniti di modo tale che tutte le righe vengano trasmesse con lo stesso numero di righe nella stessa riga dell'output. Ogni riga dell'output contiene così i contenuti di tutti i file inseriti.

Grazie all'opzione -d si può scegliere in modo personalizzato quale separatore utilizza paste. Le tab vengono utilizzate come divisori standard.

Tramite l'opzione -s (seriale) si può inoltre attivare una seconda modalità dove vengono trasmesse tutte le righe del primo file inserito nella prima riga dell'output. I dati di tutti gli altri file inseriti seguono in righe separate di output. Ogni riga dell'output contiene così solo i contenuti di un file inserito.

rename

Rinominare i file

rename è un programma della riga di comando che consente di rinominare file e cartelle tramite espressioni regolari compatibili con Perl (regex). A differenza di mv, rename è adatto per le operazioni dei file in cui devono essere adattati parzialmente o interamente i nomi di più file.

Utilizzate rename ricorrendo allo schema seguente:

rename [OPZIONI] 'ESPRESSIONE_REGOLARE' FILE

Le espressioni regolari seguono per le sostituzioni la seguente sintassi:

s/SCHEMARICERCA/SOSTITUZIONE/MODIFICATORE

Nel seguente esempio vengono rinominate tutte le estensioni .html in .xhtml.

rename 's/\.html$/.xhtml/' *.html

rm

Eliminare file o cartelle

Il comando rm (remove) elimina file o intere cartelle permanentemente.

Lo schema alla base della visualizzazione è il seguente:

rm [OPZIONI] FILE

o

rm [OPZIONI] CARTELLA

Se una cartella comprensiva di tutte le sottocartelle viene eliminata, utilizzate rm con l'OPZIONE -R (--recursive).

rm -R CARTELLA

Più file o cartelle vengono separate tramite spazi.

rm [OPZIONI] FILE1 FILE2 …

shred

Eliminare i file con il comando "shred"

shred è un programma della riga di comando che consente la rimozione sicura dei file. Gli elementi selezionati vengono sovrascritti durante il processo di eliminazione e non si possono così neanche ripristinare con mezzi specifici.

La sintassi generale del comando è la seguente:

shred [OPZIONI] FILE

Utilizzate shred con le opzioni seguenti per eliminare un singolo file permanentemente:

shred -fuz FILE

L'opzione -f forza il processo di eliminazione, -z sovrascrive i contenuti del file con zeri (sono preconfigurati dei dati casuali). Infine la -u rimuove in maniera analoga al comando rm il file eliminato dal file system.

sort

Ordinare liste di file e output di programmi

Utilizzate il comando sort per ordinare liste di file e output di programmi per riga in ordine numerico e alfabetico.

La sintassi generale del comando è la seguente:

sort [OPZIONI] FILE

Il metodo di ordinamento si può regolare grazie alle opzioni: ad esempio quelle numeriche (-n), casuali (-R) o in successione inversa (-r).

split

Suddividere i file

Il comando split viene utilizzato per suddividere i file.

La sintassi alla base è la seguente:

split [OPZIONI] [INPUT [PREFISSO]]

Il segnaposto INPUT corrisponde al file che deve essere suddiviso. Il PREFISSO viene inserito per i nomi delle parti dei file. Lo schema a cui questo processo di denominazione aderisce è il seguente:

PREFISSOaa, PREFISSOab, PREFISSOac …

Se non viene definito nessun prefisso, split ricorre al prefisso standard x.

Con l'opzione -b (byte) si possono definire le dimensioni delle parti del file. L'indicazione viene fatta a scelta in byte (b), kilobyte (k) o megabyte (m).

Esempio:

split -b 95m archivio.tgz split-archivio.tgz.

Il comando split suddivide il file archivio.tgz in parti di 95 megabyte e le rinomina così:

split-archivio.tar.aa

split-archivio.tar.ab

split-archivio.tar.ac

I file suddivisi tramite split si possono unire di nuovo grazie al comando cat.

cat split-archivio.tar.* > archivio.tar

stat

Visualizzare la marca temporale

Con il comando stat (status) si possono visualizzare le marche temporali di accesso, di modifica dei file e delle cartelle selezionate.

La sintassi generale del comando è la seguente:

stat [OPZIONI] FILE

Il formato di output è regolabile grazie alle opzioni.

touch

Cambiare la marca temporale

Il comando touch viene utilizzato per modificare la marca temporale di accesso e di modifica. Se touch viene applicato a un file inesistente, allora verrà automaticamente creato. Il comando è perciò indicato anche per creare file vuoti.

Utilizzate touch ricorrendo allo schema seguente:

touch [OPZIONI] FILE

Per impostare la marca temporale di un file alla data desiderata, utilizzate l'OPZIONE -t comprensiva dell'ora nel formato [JJ]MMTThhmm[.ss].

Esempio:

touch -t 1703231037 file.txt

La marca temporale di accesso e di modifica viene impostata al 23 marzo 2017, 10:37. La modifica si può limitare tramite le opzioni -a e -m alla marca temporale di accesso o di modifica.

Se il comando touch viene utilizzato senza l'opzione -t, viene applicata la marca temporale corrente.

uniq

Rimuovere i doppioni nella lista dei file e negli output del programma

Il comando uniq viene solitamente utilizzato in combinazione con sort per ripulire i file ordinati dalle righe doppie.

Nel seguente esempio il comando sort viene collegato tramite pipe (|) al comando uniq per ordinare prima di tutto il file e infine restituirlo senza righe doppie:

sort file.txt | uniq

Gestione dei permessi

Su Linux si possono modificare comodamente i permessi di accesso per i file e le cartelle dal terminale. I comandi più importanti per la gestione dei permessi sono chown e chmod. Le appartenenze ai gruppi vengono gestite tramite il comando chgrp.

Comando

Descrizione

chattr

Gestire gli attributi del file

Il programma della riga di comando chattr (abbreviazione di change attribute) vi permette di dare degli attributi ai file o alle cartelle. Una modifica degli attributi dei file viene supportata da diversi sistemi di file, come ext2, ext3, ext4, XFS, ReiserFS, JFS e OCFS2.

Per impostare un attributo, utilizzate chattr ricorrendo alla sintassi seguente:

chattr [OPZIONI] +ATTRIBUTO FILE

Gli attributi impostati si possono di nuovo eliminare ricorrendo allo schema seguente:

chattr [OPZIONI] -ATTRIBUTO FILE

Impostate ad esempio l'attributo -i per impedire modifiche (eliminazioni o altre modifiche in generale) a un file o a una cartella:

chattr +i file.txt

Scoprite altri attributi e possibili opzioni sulla pagina del manuale riguardante il programma chattr.

chgrp

Gestire l'appartenenza a un gruppo di file e cartelle

Il comando chgrp sta per change group e viene utilizzato per la gestione dell'appartenenza ai gruppi dei file e delle cartelle. Per poter usare chgrp su un file o una cartella selezionata, dovete disporre di permessi di amministratore o root. Inoltre potete scegliere solo gruppi dei quali fate parte.

La sintassi per utilizzare chgrp è la seguente:

chgrp [OPZIONI] GRUPPO FILE

o:

chgrp [OPZIONI] GRUPPO CARTELLA

L'opzione -R include le sottocartelle e i file contenuti in una cartella.

chmod

Gestire i permessi di accesso

Il comando chmod (abbreviazione di change mode) serve per l'assegnazione dei permessi nei file system compatibili con UNIX (ad esempio ext2, ext3, ext4, reiser, xfs).

La sintassi generale del comando è la seguente:

chmod [OPZIONI] MODALITÀ FILE

o anche

chmod [OPZIONI] MODALITÀ CARTELLA

Il segnaposto MODALITÀ serve per indicare la maschera dei permessi da applicare. Nel nostro articolo di approfondimento sull'assegnazione dei permessi di accesso con chmod, scoprite come crearla e a cosa dovete prestare attenzione durante il processo.

Grazie all'opzione -R si possono estendere in modo ricorsivo i permessi dati alle sottocartelle e ai file contenuti in una cartella.

chown

Gestire i permessi da amministratore

Generalmente chi crea un file o una cartella ne diventa automaticamente il proprietario (owner). Il comando chown sta per change owner e vi offre la possibilità di modificare le impostazioni dell'amministratore.

Il comando si utilizza ricorrendo allo schema seguente:

chown [OPZIONI] [UTENTE][:[GRUPPO]] FILE

o anche

chown [OPZIONI] [UTENTE][:[GRUPPO]] CARTELLA

Per impostare il permesso da amministratore per gli utenti o i gruppi, avete a disposizione quattro possibilità di combinazione.

Il proprietario e il gruppo vengono impostati nuovamente in base ai dati forniti:

chown [OPZIONI] proprietario_nome:gruppi_nome file.txt

Il gruppo viene impostato nuovamente in base ai dati forniti, l'utente rimane invariato:

chown [OPZIONI] :gruppi_nome file.txt

Il proprietario viene impostato nuovamente in base ai dati forniti, il gruppo rimane invariato:

chown [OPZIONI] proprietario_nome file.txt

L'utente viene impostato nuovamente in base ai dati forniti. Il gruppo viene impostato sul gruppo standard dell'utente loggato:

chown [OPZIONI] proprietario_nome: file.txt

Le modifiche si possono rendere ricorsive e applicare quindi alle sottocartelle grazie all'OPZIONE -R.

lsattr

Mostrare gli attributi del file

Se volete farvi mostrare quali attributi sono stati impostati per un file o una cartella, utilizzate il comando lsattr (abbreviazione di list attributes) ricorrendo allo schema seguente:

lsattr [OPZIONI] FILE/CARTELLA

Opzioni di ricerca

Linux offre diversi comandi con i quali si può cercare direttamente partendo dal terminale.

Comando

Descrizione

find

Cercare nel file system

Find è un programma della riga di comando che serve per la ricerca di file.

Lo schema alla base della visualizzazione è il seguente:

find [OPZIONI] [CARTELLA] [CONDIZIONEDIRICERCA][AZIONI]

La cartella inserita risulta la cartella di partenza della ricerca. La ricerca avviene così nella cartella standard e nelle sue sottocartelle. Se non inserite nessuna cartella, find inizia la ricerca dalla cartella di lavoro corrente.

Le opzioni vi permettono di definire dei criteri di ricerca e delle azioni. Come azione standard è preimpostata -print che indica la visualizzazione dei nomi dei file completi di tutti i risultati di ricerca nello standard ouput (di norma il terminale).

Dei comuni criteri di ricerca sono il nome del file (-name NOMEFILE [SUFFISSO]), il nome utente (-user NOMEUTENTE), le dimensioni del file (-size n[cwbkMG]), l'accesso indicato in giorni (-atime [+-]n) o la modifica indicata in giorni (-mtime [+-]n).

Effettuando una ricerca per nome dei file si possono utilizzare metacaratteri e segnaposti. Metteteli tra virgolette per effettuare un'interpretazione tramite shell.

Esempio:

find /tmp -name "*.odt" -mtime -3 -size +20k  

La cartella /tmp è definita come cartella di partenza. Il programma della riga di comando find riproduce tutti i file sullo standard output che presentano l'estensione .odt, che sono più grandi di 20k e che sono stati modificati per l'ultima volta da meno di 3 giorni.

Trovate ulteriori opzioni per il comando di ricerca find nella pagina del manuale riguardante il programma.

grep

Ricercare file di testo

Con il comando grep (abbreviazione di global regular expression print) si possono ricercare file di testo (ad esempio i log). Come schema di ricerca vengono utilizzate le più svariate sequenze di caratteri o espressioni regolari.

Utilizzate grep ricorrendo allo schema seguente:

grep [OPZIONI] SCHEMARICERCA [FILE]

Se grep si imbatte in una stringa che corrisponde allo schema di ricerca, il numero della riga viene visualizzato nel terminale con l'indicazione del nome del file.

Solitamente grep viene utilizzato su tutti i file nella cartella corrente. L'opzione -r consente una ricerca ricorsiva nelle sottocartelle.

locate

Ricercare l'indice del file

Anche il programma della riga di comando locate permette una ricerca di file dal terminale. A differenza di find non viene però ricercata la cartella dei file, ma un database aggiornato regolarmente e creato specificamente per questo motivo. Perciò locate fornisce dei risultati di ricerca in modo nettamente più veloce rispetto a find.

Per ricercare nel database un file specifico, si utilizza locate ricorrendo allo schema seguente:

locate SCHEMARICERCA

Lo schema di ricerca può contenere metacaratteri, come il segnaposto (*). Mettete uno schema di ricerca di questo tipo tra virgolette per effettuare un'interpretazione tramite la shell.

Nell’esempio seguente, locate restituisce tutti i file con l'estensione .png.

locate "*.png"

Il comando locate è case sensitive. Per evitare differenze tra maiuscolo e minuscolo nella ricerca utilizzate l'opzione -i.

Come database per l'indicizzazione dei file viene utilizzato il file /var/lib/locatedb che comprende una lista di tutti i file del file system con una data precisa e deve essere regolarmente aggiornato. Per fare ciò usate il comando updatedb.

tre-agrep

Ricerca approssimativa nei file di testo

Anche tre-agrep serve per la ricerca di stringhe nei file di testo in base a schemi di ricerca. A differenza di grep, qui non vengono visualizzati solo termini con la dicitura esatta, ma anche quelli approssimativi che presentano un’inversione delle lettere o hanno dei caratteri mancanti. Il programma si appoggia alla libreria TRE e la rende utilizzabile nella riga di comando.

La sintassi di tre-agrep corrisponde a quella del comando grep:

tre-agrep [OPZIONI] SCHEMARICERCA FILE

Si può definire un numero massimo di errori tramite le opzioni. Nel seguente esempio viene tollerata al massimo una divergenza dallo schema di ricerca.

tre-agrep -1 'Linux' test.txt

tre-agrep restituisce così tutte le righe del file di testo test.txt che comprendono le parole rientranti nello schema di ricerca o che se ne discostano al massimo solo per una lettera: ad esempio Linus.

updatedb

Aggiornare l'indice del file

Una ricerca tramite locate è affidabile solo se il file /var/lib/locatedb viene continuamente aggiornato e presenta quindi tutte le ultime modifiche apportate. Il comando updatedb vi consente di aggiornare manualmente il database. Fate attenzione che per utilizzarlo avete bisogno dei permessi di root:

updatedb

whereis               

Cercare pagine binarie, del codice sorgente o del manuale dei programmi

Con il comando whereis localizzate i file binari, del codice sorgente o dei file del manuale relativo ai programmi selezionati.

La sintassi generale del comando è la seguente:

whereis [OPZIONI] PROGRAMMA

Esempio:

whereis firefox

whereis restituisce come output nel terminale i percorsi ai file trovati, separati da spazi:

firefox: /usr/bin/firefox/ usr/lib/firefox/ usr/share/man/man1/firefox.1.gz

Grazie alle opzioni la ricerca si può limitare a precisi tipi di file o cartelle.  

which

Individuare i file binari dei programmi

Se volete individuare il file binario di un programma, utilizzate il comando which ricorrendo allo schema seguente, per visualizzare il percorso nel terminale.

which [OPZIONI] PROGRAMMA

Esempio:

which firefox

Output:

/usr/bin/firefox

Nella modalità standard which restituisce il primo file che viene trovato. Utilizzate l'opzione -a per farvi mostrare tutti i file che soddisfano il criterio di ricerca.

Informazioni utente

Utilizzate i programmi della riga di comando della categoria seguente per visualizzare informazioni più dettagliate sugli utenti registrati sul sistema, sui gruppi di cui fanno parte e sui processi.

Comando

Descrizione

finger

Visualizzare le informazioni utente

Il programma della riga di comando finger serve a visualizzare le informazioni utente. Per fare ciò si inserisce il comando omonimo combinato con il nome utente desiderato:

finger [Opzioni] [NOMEUTENTE]

L'output comprende le seguenti informazioni sull'account utente indicato: il nome del login, il nome reale, la data del login, la data dell'ultima attività (Idle Time), la cartella home dell'utente, il login della shell, la posizione geografica (Office number), l'e-mail e il numero di telefono (se conosciuti), ma anche i contenuti dei file .plan, .project, .pgpkey e .forward presenti nella cartella home dell'utente (se indicati).

Utilizzate finger senza nome utente per visualizzare le informazioni sul vostro account.

groups

Visualizzare l'appartenenza ai gruppi

Il comando groups elenca le appartenenze ai gruppi di un account utente selezionato.

Utilizzate il comando ricorrendo allo schema seguente:

groups [OPZIONI] [NOMEUTENTE]

Usate groups senza nome utente per elencare tutti i gruppi dei quali fa parte il vostro account utente.

id

Visualizzare gli ID utente e dei gruppi

Il comando id restituisce gli identificativi degli utenti e dei gruppi dell'account utente scelto.

id [OPZIONI] [NOMEUTENTE] 

Individuate i vostri ID inserendo il comando senza nome utente.

I tipi di dati forniti si possono limitare tramite opzioni.

last

Visualizzare le informazioni sugli ultimi utenti loggati

Utilizzate il comando last ricorrendo allo schema seguente per visualizzare una lista degli ultimi utenti loggati comprensivi della data di login e logout:

last [OPZIONI]

Le informazioni corrispondenti vengono visualizzate dal file wtmp contenuto in /var/log/wtmp. Se volete solo richiedere le informazioni di un account specifico, inserite il comando con il nome utente desiderato.

last [OPZIONI] [NOMEUTENTE]  

w

Visualizzare l'utente corrente e i suoi processi

Il comando w fornisce una lista di tutti gli utenti loggati comprensivi di tutti i processi eseguiti da lui.

Utilizzate w insieme a un nome utente per limitare il comando a questo utente:

w [OPZIONI] [NOMEUTENTE]

Il tipo e il formato dell'output si possono adattare tramite opzioni, se necessario.

who

Visualizzare informazioni dettagliate sugli utenti loggati

Il comando who vi fornisce informazioni dettagliate sull'utente loggato nel sistema.

La sintassi generale del comando è la seguente:

who [OPZIONE] [FILEORIGINARIO]

Who supporta diverse opzioni con cui si possono adattare la varietà delle informazioni fornite.

Di norma who si riferisce ai dati sugli utenti attualmente loggati, presi dal file /var/run/utmp.

Opzionalmente può essere indicato come fonte delle informazioni uno dei seguenti file.

Se volete visualizzare delle informazioni su dei login precedenti, utilizzate who insieme al file di origine /var/log/wtmp:

who [OPZIONE] /var/log/wtmp

Aprendo who con il file /var/log/btmp, ricevete informazioni sui login falliti:

who [OPZIONE] /var/log/btmp

whoami

Visualizzare il proprio nome utente

Utilizzate il comando whoami per visualizzare il vostro nome utente.

whoami [OPZIONI]

Gestione dell'account utente

Linux vi offre una serie di programmi con cui creare, eliminare e gestire direttamente dal terminale account utente e gruppi. Nella tabella qui di seguito trovate un riepilogo dei più importanti comandi Linux per la gestione dell'account utente. Inoltre in questa categoria trovate i comandi Linux per il terminale che vi consentono di visualizzare i programmi con i permessi degli altri utenti, inclusi quelli del super utente root.

Comando

Descrizione

adduser

Creare un account utente

Il programma della riga di comando adduser vi dà la possibilità di creare un account utente in modo facile. Per fare ciò sono necessari dei permessi root e il comando viene utilizzato ricorrendo alla sintassi seguente:

adduser [OPZIONI] NOMEUTENTE

Se usate adduser senza opzioni, oltre a un nuovo account utente, vengono creati automaticamente un ID utente, una cartella home e un gruppo utente omonimo.

Esempio:

adduser test

Output sul terminale:

Adding user 'test' (1001) …

Adding new group 'test' (1001) …

Adding new user 'test' (1001) with group 'test' …

Creating home directory '/home/test' …

Copying files from '/etc/skel' … 

Dopo segue un dialogo interattivo in cui si possono definire la password e le informazioni utente avanzate, come nome reale, numero dell'ufficio, numeri di telefono, ecc.

Questo automatismo si può modificare o limitare tramite opzioni aggiuntive.

Lo script Perl adduser si basa sul programma low level useradd e offre le stesse funzioni in una forma più user-friendly.

chfn

Modificare le informazioni utente avanzate

Il comando chfn (abbreviazione di change finger) vi permette di modificare le informazioni avanzate di un account utente come i nomi reali, il numero dell'ufficio, così come i numeri di telefono privati e aziendali.

La sintassi generale di chfn è la seguente:

chfn [OPZIONE "NUOVO VALORE"] [NOMEUTENTE]

Il comando deve essere eseguito con permessi di root.

Grazie alle opzioni -f (nome reale), -r (numero di telefono), -w (numero di servizio) e -h (numero privato) definite quale informazione utente sarà sostituita con un nuovo valore.

Nel seguente esempio il vecchio numero di telefono di pietro23 viene sovrascritto con il nuovo valore 122.

chfn -r "122" pietro23

chsh

Modificare la shell standard

Il comando chsh (abbreviazione di change shell) modifica il login della shell di un utente selezionato.

Per l'inserimento ispiratevi allo schema seguente:

chsh [OPZIONI] NOMEUTENTE

Per modificare il login della shell di un utente, viene utilizzato chsh con l'opzione -s che prevede il percorso alla shell desiderata (ad esempio /usr/bin/fish).

Fate attenzione: gli utenti senza permessi root possono solo modificare la propria shell. Se volete modificare la shell di altri utenti, eseguite il comando con i permessi di root.

Esempio:

sudo chsh -s /usr/bin/fish pietro23

Per l'utente pietro23 viene definita come standard la shell fish (friendly interactive shell).

Il cambio della shell diventa effettivo quando l'utente esce dal suo account e rieffettua il login.

deluser

Eliminare l'account utente

Il programma della riga di comando deluser elimina tutte le voci di un account utente selezionato dai file dell'account di sistema.

La visualizzazione di deluser richiede permessi di root e si ispira allo schema seguente:

deluser [OPZIONI] NOMEUTENTE

Esempio:

deluser pietro23

L'account utente pietro23 viene eliminato.

Inoltre se volete eliminare anche tutti i file nella cartella home dell'utente, utilizzate il comando con l'opzione --remove-home. Se tutti i file dell'utente dovessero venire eliminati dal sistema, viene utilizzata l'opzione --remove-all-files.

deluser --remove-all-files pietro23

Se tutti i file dell'utente devono essere salvati prima di essere rimossi, utilizzate deluser insieme all'opzione --backup-to e indicate la cartella desiderata.

deluser --backup-to /Percorso/alla/cartella pietro23

deluser è uno script Perl che mette a disposizione le funzioni del programma low level in una forma più user-friendly.

groupadd

Creare gruppi utente

Il programma della riga di comando groupadd serve a creare dei nuovi gruppi utente.

Utilizzate groupadd con permessi di root ricorrendo allo schema seguente:

sudo groupadd [OPZIONI] GRUPPO

Ogni nuovo gruppo creato ottiene un ID del gruppo univoco (GID). Gli ID dei gruppi compresi tra 0 e 99 sono destinati per i gruppi di sistema. Se volete definire da soli il GID di un nuovo gruppo utente, utilizzate il comando groupadd con l'opzione -g (GID).

Nell'esempio seguente viene creato il gruppo users con il GID 1425.

groupadd -g 1425 users

Se volete creare un gruppo di sistema, utilizzate l'opzione -r (root).

delgroup

Eliminare un gruppo utente

Il comando delgroup (abbreviazione di delete group) elimina un gruppo utente già esistente.

La sintassi generale di delgroup è la seguente:

delgroup [OPZIONI] GRUPPO

Per poter eseguire il comando sono necessari i permessi di root.

La visualizzazione seguente comporta che il gruppo users venga eliminato:

delgroup users

Come con deluser, anche in questo caso si tratta di uno script Perl che vi mette a disposizione le funzioni del programma low level groupdel in una forma più user-friendly.

groupmod

Modificare il gruppo utente

Tramite groupmod si possono modificare il nome e l'ID del gruppo (GID) di un gruppo utente già esistente.

Il comando viene utilizzato con permessi di root ricorrendo allo schema seguente:

groupmod OPZIONI GRUPPO

Utilizzate groupmod con l'opzione -g per modificare il GID. Usando l'opzione -n si sovrascrive il nome del gruppo.

Esempi:

groupmod -g 1800 users

Il GID del gruppo users viene impostato a 1800.

groupmod -n all users

Il gruppo users viene rinominato in all.

newgrp

Cambiare il gruppo utente

newgrp (abbreviazione di new group) è un comando che consente agli utenti loggati di cambiare il loro ID del  gruppo corrente senza che si debbano loggare o disconnettere nuovamente.

La sintassi generale del comando è la seguente

newgrp [-] [GRUPPO]

Se a newgrp viene assegnato il parametro opzionale [-], il cambio di gruppo porta al riavvio dell'ambiente utente, di modo che l'utente debba loggarsi di nuovo.

Gli utenti che utilizzano newgrp senza indicare il gruppo passano nel gruppo standard indicato nella cartella /etc/passwd.

Essenzialmente l'utente deve essere un membro del gruppo in cui vuole spostarsi. Un'eccezione è rappresentata dai gruppi protetti da password: se un gruppo presenta una password, viene richiesta dal terminale prima del passaggio.

passwd

Cambiare la password utente

Utilizzate il programma della riga di comando passwd per cambiare la password di un utente o definire gli intervalli di blocco o di modifica.

La sintassi alla base del comando è la seguente:

passwd [OPZIONI] NOMEUTENTE

Se volete cambiare la password di un altro utente, avete bisogno dei permessi di root.

Per cambiare la vostra password, utilizzate il comando passwd senza nome utente.

passwd

Se la password dell'utente selezionato dovesse essere bloccata, utilizzate il comando passwd con l'opzione -l (lock).

passwd -l NOMEUTENTE

Ulteriori opzioni offrono la possibilità di definire una durata di validità per le password (-x), gli intervalli di avviso (-w) e di blocco (-i):

passwd -x MAX_GIORNI -w AVVISO_GIORNI -i INATTIVO_GIORNI NOMEUTENTE

Nel seguente esempio viene definito che l'utente pietro24 deve cambiare password ogni 30 giorni. Riceve un avviso 5 giorni prima della scadenza. Se la password non viene modificata dopo questi 30 giorni, decorrerà e l'account utente pietro24 verrà bloccato dopo 3 giorni.

passwd -x 30 -w 5 -i 3 pietro24

sudo

Eseguire programmi utilizzando i permessi degli altri utenti

Il comando sudo (substitute user do) può precedere le visualizzazioni del programma per eseguirli con i permessi di un altro utente. Perciò di solito è necessario inserire una password. Il comando sudo richiede quindi sempre la password dell'utente in questione.

Se il comando viene dato senza nomi utente, il super utente root viene utilizzato come utente di destinazione.

sudo VISUALIZZAZIONEPROGRAMMA

Gli amministratori hanno la possibilità di definire nel file /etc/sudoers chi può utilizzare il comando sudo e quali visualizzazioni del programma sono consentite. Un utente deve appartenere al gruppo sudo per poterlo utilizzare.

Se volete selezionare un altro utente di destinazione, utilizzate sudo con l'opzione -u e il nome utente desiderato.

sudo -u NOMEUTENTE VISUALIZZAZIONEPROGRAMMA

Un cambio di utente di questo tipo è possibile solo se è consentito in base a /etc/sudoers.

Se volete spostarvi permanentemente nella shell root per eseguire i comandi con i permessi da amministratore, utilizzate sudo con l'opzione -i.

sudo -i

Il comando sudo è utile perché dà agli utenti la possibilità di eseguire i comandi stabiliti prima come utente root senza che debba essere inserita la password di root.

su

Lavorare con i permessi di altri utenti

Anche il comando su consente un cambio temporaneo per eseguire le visualizzazioni con i permessi di un utente di destinazione. A differenza di sudo, i comandi non vengono eseguiti direttamente. Al suo posto viene predisposto un cambiamento di identità. Inoltre su non chiede la password dell'utente visualizzato, ma quello dell'utente di destinazione. Per richiamare i programmi come super utente, un utente ha bisogno così di una password root del sistema. Inoltre su, al contrario di sudo, non si limita alla frase predefinita dall'amministratore per la visualizzazione del programma.

La sintassi generale del comando è la seguente:

su [OPZIONI] [NOMEUTENTE]

Una visualizzazione senza NOMEUTENTE seleziona root come utente di destinazione.

 

usermod

Modificare l'account utente

Il comando usermod vi dà la possibilità di elaborare gli account utente già esistenti.

Utilizzate usermod con i permessi di root ricorrendo allo schema seguente:

usermod [OPZIONI] NOMEUTENTE

Grazie alle opzioni definite quali modifiche devono essere effettuate.

Cambiare il nome utente (-l NUOVO_NOME):

usermod -l pietro24 pietro23

L'utente pietro23 si chiama ora pietro24.

Creare una nuova cartella home (-d CARTELLA) e trasferirvi i vecchi file (-m):

usermod -d /Percorso/alla/cartella/pietro24 -m pietro24

Tutti file vengono trasferiti dalla vecchia cartella home nella nuova cartella home.

Bloccare gli utenti (-L):

usermod -L pietro24

La password dell'utente pietro24 viene bloccata.

Inserire gli utenti nel gruppo (-a) e mantenere tutte le altre appartenenze ai gruppi (-G):

usermod -aG users pietro24

Pietro viene aggiunto al gruppo users.

Comandi di sistema

Nella categoria “Comandi di sistema” trovate le direttive di Linux di base per l’amministrazione del sistema. Utilizzate i seguenti comandi per riavviare il sistema dal terminale e arrestarlo, anche su programmazione.

N.B.

La maggior parte dei comandi per l’amministrazione di sistema devono essere eseguiti con i permessi di root.

Comando

Descrizione

logger

Creare voci di log

Con il programma della riga di comando logger si possono creare voci nel sistema di log.

Utilizzate logger ricorrendo allo schema seguente:

logger "IL VOSTRO MESSAGGIO"

Trovate il log di sistema su /var/log/syslog.

reboot

Riavviare il sistema

Reboot è un comando che porta a un riavvio del sistema. Per riavviare il sistema, il comando deve essere eseguito con i permessi di root.

reboot [OPZIONI]

rtcwake

Avviare e arrestare il sistema automaticamente

rtcwake è un comando che permette di avviare e arrestare il sistema a un orario determinato.

La sintassi di base del comando è la seguente:

rtcwake [OPZIONI] [MODALITÀ] [Tempo]

Scegliete una modalità precisa (-m MODUS) in cui deve essere impostato il sistema per un tempo preciso in secondi ( -s TEMPO IN SECONDI). In alternativa avete la possibilità di riportare il vostro sistema in funzione a un orario definito (-tTEMPOUNIX).

Esempio 1:

rtcwake -m standby -s 300

Il sistema viene impostato per 5 minuti (300 secondi) nella modalità stand-by.

Esempio 2:

rtcwake -m off -t 1490997660

Il sistema viene arrestato e “risvegliato“ al tempo di Unix 1490997660 che corrisponde alla seguente data: 01.04.2017 - 00:01:00. Con il tempo di Unix si considera il numero dei secondi trascorsi a partire dal 1.1.1970 a 00:00. Visto che i dati basandosi sul tempo di Unix sono difficili da comprendere, si consiglia di convertirli grazie al comando date (vedi sotto).

rtcwake -m off -t $(date -d '20170401 00:01' +%s)

shutdown

Arrestare il sistema

Il comando shutdown può essere utilizzato dagli utenti root per arrestare il sistema.

La sintassi di base del comando è la seguente:

shutdown [OPZIONI] [TEMPO] [MESSAGGIO]

Se volete predisporre uno shutdown, avete la possibilità di definire un orario in cui il sistema deve essere arrestato. Per fare ciò inserite un’indicazione temporale concreta (hh:mm) o utilizzate la funzione di countdown (+m).

Gli altri utenti sul sistema ricevono un avviso di shutdown a cui può essere aggiunto, se necessario, un messaggio personalizzato:

nell’esempio seguente il sistema si arresta nel giro di 10 minuti:

shutdown +10

Se il comando shutdown viene utilizzato con l’opzione –r, segue all’arresto del sistema un reboot.

shutdown -r +10

Informazioni di sistema

Nella categoria “Informazioni di sistema” abbiamo raccolto i programmi della riga di comando con i quali visualizzate informazioni e avvisi di stato, in modo che possiate farvi così un’idea completa sullo stato del vostro sistema.

Comando

Descrizione

date

Visualizzare l’ora del sistema

Il comando date vi fornisce l’ora del sistema comprensiva di data.

date [OPZIONI] [FORMATOOUTPUT]

Se volete lavorare con una data precisa (vedi rtcwake), si può definire con l’opzione -d 'DATA'. Inoltre vengono supportate diverse opzioni con cui si possono trasmettere informazioni sulla data e l’orario nel formato desiderato.

Utilizzate ad esempio l’opzione +%s per farvi mostrare una data nel tempo di Unix (numero dei secondi a partire dal 1970-01-01 00:00:00 UTC).

Esempio:

date -d '20170427 11:29' +%s

Risultato:

1493285340

1493285340 corrisponde nel tempo di Unix al 27.04.2017 - 11:29:00.

df

Visualizzare lo spazio libero sul disco fisso

Utilizzate il comando df (disk free) ricorrendo allo schema seguente per farvi mostrare lo spazio libero sul disco fisso delle partizioni montate.

df [OPZIONI]

Se il comando viene utilizzato in combinazione con un file preciso, il sistema indica solo lo spazio libero della partizione in cui si trova il file.

df [OPZIONI] [FILE]

L’opzione -l (local) limita df ai sistemi di file locali. Inoltre vengono supportate le opzioni con cui si può modificare il formato di output. Per ottenere un output leggibile dagli esseri umani si consiglia l’opzione -h (human readable): ad esempio 3K 124M 1G.

dmesg

Visualizzare gli avvisi del ring buffer del kernel

Il programma dmesg (abbreviazione di display message) fornisce avvisi del ring buffer del kernel dal terminale e vi consente così di localizzare gli errori hardware e dei driver.

Utilizzate dmesg ricorrendo allo schema seguente:

dmesg [OPZIONI]

L’output dmesg comprende tutti gli avvisi del processo di boot ed è quindi lungo. II programma della riga di comando viene perciò utilizzato spesso in combinazione con un pager come more, less o tail.

Esempio:

dmesg | tail

L’output dmesg viene trasmesso grazie all’operatore pipe (|) al pager tail e ciò comporta che vengano riprodotti sul terminale gli ultimi 10 avvisi.  

Una combinazione con il comando grep consente di cercare gli avvisi in maniera mirata.

du

Visualizzare lo spazio occupato sul disco fisso

Se volete sapere quanto spazio è occupato dalle cartelle sul vostro sistema, utilizzate il comando du (abbreviazione di disk usage) ricorrendo allo schema seguente:

du [OPZIONI] [CARTELLA] 

L’indicazione di una cartella precisa è opzionale. Lo spazio occupato sul disco fisso si può visualizzare con l’opzione –h in un formato leggibile dagli esseri umani. 

free

Visualizzare l’uso della RAM

Il comando free visualizza l’uso della RAM.

La sintassi generale è la seguente:

free [OPZIONI]

Come risultato ottenete due dati: Mem (Memory) e Swap.

Mem rappresenta la RAM fisica del vostro sistema. Se la memoria è esaurita, Linux salva delle parti dei dati memorizzati nella RAM sul disco fisso. Si parla in questo caso di Swap Space.    

Anche free supporta l’opzione –h con cui si può visualizzare l’uso della memoria in un formato leggibile per gli esseri umani.

hostname

Visualizzare il nome host

Utilizzate il comando hostname ricorrendo allo schema seguente per farvi mostrare il nome del DNS del sistema.

hostname [OPZIONI]

uname

Visualizzare le informazioni del kernel

Il comando uname sta per unix name e viene utilizzato per visualizzare le informazioni di sistema relative al kernel.

Il comando supporta diverse opzioni con le quali si può filtrare l’output secondo le informazioni desiderate.

uname [OPZIONI]

uptime

Visualizzare il runtime del sistema

Se volete sapere da quanto tempo il vostro sistema funziona dall’ultimo boot, utilizzate il comando uptime ricorrendo allo schema seguente:

uptime

vmstat

Visualizzare le statistiche sulla memoria virtuale

Grazie al tool di monitoraggio vmstat si possono visualizzare le informazioni sulla memoria virtuale, sui processi di scrittura e di lettura sul disco fisso, così come sull’attività della CPU.

Visualizzate vmstat ricorrendo allo schema seguente per visualizzare i valori medi dall’ultimo avvio del sistema.

vmstat [OPZIONI]

In alternativa vmstat offre una modalità di monitoraggio progressiva in cui i valori di sistema vengono visualizzati nell’intervallo di tempo desiderato in secondi.

vmstat [OPZIONI] [INTERVALLO [RIPETIZIONI]]

Esempio:

vmstat 4 8

La richiesta avviene in otto passaggi ogni 4 secondi.

Se volete interrompere una richiesta continua, utilizzate la combinazione di tasti [CTRL] + [C].

Informazioni dell’hardware

I comandi di Linux di questa categoria vi forniscono informazioni più dettagliate sui componenti hardware che sono alla base del vostro sistema.

Comando

Descrizione

lscpu

Fornire le informazioni sul processore

Utilizzate lscpu (abbreviazione di list cpu) ricorrendo allo schema seguente per farvi mostrare le informazioni sull’architettura CPU nel terminale.

lscpu [OPZIONI]

Le possibili opzioni sono contenute nelle pagine del manuale del sistema operativo.

lshw

Fornire le informazioni sull’hardware

Il comando lshw sta per list hardware e vi fornisce le informazioni sui componenti hardware nel terminale. Le informazioni comprendono la CPU, i moduli di memorizzazione, oltre che i dispositivi come schede audio, schede grafiche o drive che sono collegati alle interfacce PCI, USB o IDE.

Utilizzate lshw ricorrendo allo schema seguente:

lshw [OPZIONI]

Il comando supporta diverse opzioni con cui potete adattare il formato di output (-html, -xml, -short, -businfo) così come le informazioni mostrate (ad esempio -sanitize per nascondere le informazioni sensibili).

lspci

Fornire informazioni sui dispositivi PCI

Utilizzate lspci (abbreviazione di list pci) ricorrrendo allo schema seguente per farvi mostrare informazioni più dettagliate sui dispositivi PCI.

lspci [OPZIONI]

Le possibili opzioni sono contenute nelle pagine del manuale del sistema operativo.

lsusb

Fornire informazioni sui dispositivi USB

Utilizzate lsusb (abbreviazione di list usb) per farvi mostrare le informazioni dettagliate sui dispositivi USB nel terminale.

lsusb [OPZIONI]

Le possibili opzioni sono contenute nelle pagine del manuale del sistema operativo.

Gestione dei processi

Su Linux con il nome di istanza si indica un programma in corso e che risulta quindi essere un processo. I seguenti comandi del terminale rientrano tra quelli standard della gestione dei processi e vi consentono di controllare tutti i processi sul vostro sistema comodamente dal terminale e di controllarli, se necessario.  

Comando

Descrizione

chrt

Richiedere e modificare gli attributi in tempo reale

Chrt è un programma della riga di comando per il controllo dei processi avanzati che consente di individuare e modificare gli attributi in tempo reale (regola di scheduling e priorità) dei processi in corso o di eseguire i comandi e i relativi argomenti con specifici attributi in tempo reale.

La sintassi generale del comando è la seguente:

chrt [OPZIONI] [PRIORITÀ] PID/COMANDO [ARGOMENTI]

Utilizzate chrt senza indicare una priorità e con l’opzione –p, per individuare gli attributi in tempo reale dei processi selezionati:

chrt -p PID

Esempio:

chrt -p 1234

chrt restituisce l’attributo in tempo reale del processo 1234.

Il comando viene usato solitamente ricorrendo allo schema seguente per eseguire un comando e il suo argomento con una priorità precisa in tempo reale.

chrt [OPZIONI] PRIORITÀ COMANDO [ARGOMENTI]

Esempio:

chrt 99 firefox

Il programma Firefox viene avviato con una priorità in tempo reale di 99.

Se, invece, deve essere modificata la priorità in tempo reale dei processi in corso, viene utilizzata la seguente sintassi:

chrt -p PRIORITÀ PID

Esempio:

chrt -p 20 1234

La priorità in tempo reale del processo 1234 viene impostata a 20.

Inoltre chrt dà la possibilità di modificare o definire la regola di scheduling di un processo in corso o avviato nuovamente grazie alle opzioni.

chrt utilizza come valore standard la regola di scheduling SCHED_RR (Round Robin, esplicitata con l’opzione -r). Ciò significa che a tutti i processi pronti viene assegnato uno dopo l’altro un tempo di calcolo della CPU per un certo periodo di tempo. Si parla così di intervallo di tempo, il quale indica quanto può durare un processo fino a quando viene soppiantato da un altro.

La durata dell’intervallo di tempo di un processo dipende dalla sua priorità. Linux dispone di 140 livelli di priorità per i processi (0 = la priorità più alta, 139 = la priorità più bassa). I livelli di priorità da 1 a 99 sono destinati per i processi con la cosiddetta priorità in tempo reale. Invece i processi utente vengono eseguiti solitamente con un livello di processo da 100 a 139 che corrisponde a un valore nice da -20 fino a +19 (vedi nice).

Oltre a SCHED_RR, Linux ha anche un’altra regola di scheduling per i processi in tempo reale con SCHED_FIFO (opzione -f). Come SCHED_RR, anche SCHED_FIFO lavora come algoritmo first-in/first-out e perciò non viene utilizzato nessun intervallo di tempo. I processi che vengono avviati con SCHED_FIFO funzionano fino a quando vengono terminati o soppiantati da un processo con una priorità in tempo reale maggiore. I processi soppiantati ritornano alla fine della coda di attesa.

ionice

Assegnare classi di scheduling I/O

Il comando ionice viene utilizzato per influenzare la priorità di un processo che utilizza l’interfaccia I/O del kernel.

La sintassi generale del comando è la seguente:

ionice [OPZIONI] COMANDO

Per poter eseguire ionice, servono i permessi di root.

Il comando distingue tre classi di scheduling che vengono trasmesse tramite l’opzione -cNUMERO. I valori numerici possibili sono 1, 2 e 3.

1 = Real Time: l’azione I/O viene eseguita subito.

2 = Best Effort: l’azione I/O viene eseguita il più velocemente possibile.

3 = Idle: l’azione I/O viene eseguita solo quando nessun altro processo richiede un tempo I/O.

Il PID di un processo in corso viene trasmesso con l’opzione –pPID.

Esempio:

ionice -c2 -p1234

Al processo con il PID 1234 viene trasmessa la classe di scheduling 2 (Best Effort).

kill

Fermare e terminare il processo tramite PID

Con kill si attiva un programma della riga di comando con cui si possono fermare e terminare i processi.

Il comando viene trasmesso ricorrendo allo schema seguente con un segnale desiderato e l’ID del processo selezionato.

kill [OPZIONI] [-SEGNALE] PID

I segnali comuni sono:

    TERM: predispone che un processo termini autonomamente (standard)

    KILL: forza la chiusura di un processo (tramite il sistema)

    STOP: ferma un processo

    CONT: consente a un processo fermato di riprendere

Il seguente comando invia un segnale al processo 1234 che lo invita ad interrompersi da solo. Visto che non è stato trasmesso nessun segnale, kill invia il segnale standard TERM

kill 1234

Date sempre la possibilità ai processi di terminare da soli e forzate l’azione tramite KILL solo quando il processo in questione non reagisce come previsto.

kill -KILL 1234

Se volete mettere in pausa 1234 solo per un certo periodo, utilizzate i seguenti comandi per fermare il processo e farlo continuare:

kill -STOP 1234

kill -CONT 1234

Utilizzate il comando kill con l’opzione -l (--list) per farvi mostrare tutti i segnali possibili che possono essere trasmessi ai processi tramite kill.

killall

Fermare e teminare i processi utilizzando i nomi

Utilizzate killall insieme a una precisa parola chiave per terminare solo i processi con un nome specifico (vengono comparati i primi 15 caratteri).

killall [OPZIONI] [-SEGNALE] [NOMEPROCESSO]

L’opzione -e(--exact) consente di estendere il confronto a tutti i caratteri del nome del processo.

nice

Definire le priorità del processo

Il comando nice assegna a un processo all’avvio un valore nice compreso tra -20 e +19 in passaggi di numeri interi secondo il quale viene distribuita la capacità disponibile per il sistema. L'intervallo da -20 a +19 corrisponde ai livelli di priorità Linux da 100 fino a 139. Un processo con un valore nice di -20 ha così una priorità più alta rispetto a un processo con un valore nice di 19.

La sintassi generale è la seguente:

nice [OPZIONE] [COMANDO]

Senza ulteriori indicazioni ogni processo si avvia con un valore nice di 0. Utilizzate l’opzione -n per definire le priorità dei processi. Così è da fare attenzione al fatto che si possono dare delle priorità negative solo con i permessi di root.

Nel seguente esempio viene avviato l’editor nano con una priorità di 4:

nice -n 4 nano 

nohup

Separare il processo da una sessione

Non appena la sessione del terminale viene chiusa (ad esempio tramite exit), solitamente vengono anche terminati automaticamente tutti i processi correlati.

Il comando nohup (abbreviazione di no hangup) separa un processo dalla sessione corrente e gli consente di farlo continuare anche dopo che ci si è disconnessi dal sistema. Il relativo segnale HUP (hangup), che normalmente fa terminare un processo automaticamente, viene soppiantato da nohup.

Lo schema alla base del programma è il seguente:

nohup COMANDO

pgrep

Individuare il PID tramite parola chiave

Il programma della riga di comando pgrep compara la lista dei processi in corso con una parola chiave e fornisce in caso di coincidenza il relativo PID.

La sintassi generale del comando è la seguente:

pgrep [OPZIONI] parola chiave

Solitamente pgrep restituisce i PID di tutti i processi che contengono la parola chiave.

Esempio:

pgrep ssh

Vengono elencati tutti i processi che comprendono la parola chiave ssh nel nome del processo.

Se la ricerca deve essere limitata a termini con la dicitura esatta, utilizzate il comando con l’opzione -x.

Esempio:

pgrep -x sshd

Così vengono elencati solo i processi con il nome esatto di sshd.

Se oltre al PID volete visualizzare anche il nome del processo, utilizzate pgrep con l’opzione -l

pgrep supporta (in modo analogo a grep) parole chiave basate su espressioni regolari.

pidof

Individuare i PID

Il programma della riga di comando pidof restituisce i numeri identificativi del processo (PID) di tutti i processi di un programma.

Individuate i PID tramite pidof ricorrendo allo schema seguente:

pidof [OPZIONI] PROGRAMMA

Tramite il seguente comando vengono restituiti gli ID di tutti i processi in corso del programma nano nel terminale.

pidof nano

Se volete farvi mostrare solo il primo ID del processo, utilizzate pidof insieme all’opzione -s (abbreviazione di single shot).

pkill

Fermare e terminare i processi tramite parole chiave

Come kill anche pkill invia un segnale a un processo selezionato. L’indirizzamento così non avviene tramite il PID. Al suo posto viene trasmessa una parola chiave che viene confrontata con il nome di un processo in corso e che può essere formulata come un’espressione regolare.

Anche pkill trasmette il segnale standard TERM, a patto che non venga definito nessun altro segnale. La sintassi generale del comando è la seguente:

pkill [OPZIONI] [-SEGNALE] [PAROLACHIAVE]

Il comando si può limitare grazie ad altre opzioni ai processi di un utente specifico (-U UID), ai processi figlio di un processo genitore specifico (-P PID), ai processi più nuovi (-n) o a quelli più vecchi (-o).

Mentre pkill prende in considerazione tutti i processi il cui nome contiene la parola chiave, il comando killall si rivolge solo ai processi che coincidono esattamente.

ps

Richiamare la lista di tutti i processi in corso

Il comando ps fornisce una lista di tutti i processi in corso nel terminale.

ps [OPZIONI]

Se avete bisogno di un risultato più dettagliato, utilizzate ps con le opzioni -f (dettagliato) o -F (molto dettagliato).

Altre possibili opzioni sono contenute nelle pagine del manuale del sistema operativo.

pstree

Richiamare i processi in corso in una struttura ad albero

Utilizzate pstree per farvi mostrare tutti i processi in corso in una struttura ad albero.

La sintassi generale del comando è la seguente:

pstree [OPZIONI]

Il formato e le informazioni date nel risultato si possono adattare tramite diverse opzioni.

renice

Modificare le priorità dei processi in corso

Il comando renice consente di regolare la priorità di un processo in corso.

La sintassi generale è la seguente:

renice PRIORITÀ [OPZIONI]

L’indirizzamento avviene grazie a opzioni tramite il process ID (-p PID), i group ID (-g GID) o un nome utente (-uUTENTE).

Esempi:

renice 12 -p 1234

Al processo con ID 1234 viene assegnata la priorità 12.

renice 3 -g 3456

A tutti i processi in corso del gruppo con GID 3456 viene assegnata la priorità 3.

sudo renice -6 -u pietro24

A tutti i processi in corso dell’utente pietro24 viene assegnata una priorità -6.

Se utilizzate renice senza opzione, viene accettato il valore standard -p e la stringa successiva viene interpretata come process ID.

sleep

Ritardare l’esecuzione del processo

Il comando sleep vi consente di interrompere la sessione corrente nel terminale per il periodo di tempo indicato.

La sintassi generale del comando è la seguente:

sleep NUMERO[SUFFISSO]

Se utilizzate sleep senza il suffisso, il numero indicato viene interpretato come un arco di tempo in secondi (s). In alternativa avete la possibilità di interrompere la sessione nel terminale per dei minuti (m), delle ore (h) o dei giorni (d).

Dando il seguente comando, la sessione viene interrotta per 4 minuti:

sleep 4m

Il comando è adatto, ad esempio, per ritardare l’esecuzione di un comando, indicato qui di seguito:

sleep 1h && reboot

Il sistema aspetta un’ora e infine esegue il comando reboot, il quale comporta un riavvio del sistema.

taskset

Assegnare dei processi a dei precisi processori

Il comando taskset serve per il controllo avanzato dei processi, che viene usato sui sistemi a più processori per assegnare processi o comandi a processori specifici.

Il comando richiede permessi di root e utilizza uno dei seguenti schemi:

taskset [OPZIONI] MASCHERA COMANDO

taskset [OPZIONI] -p PID

L’assegnazione di un processo/comando al processore avviene grazie a una maschera bit esadecimale. Ad esempio:

    0x00000001 = Processore #0

    0x00000003 = Processore #0 e #1

    0xFFFFFFFF = tutti i processori (da #0 a #31)

Visto che una simile assegnazione tramite una maschera di bit è poco intuitiva, taskset viene utilizzato solitamente con l’opzione -c (--cpu-list) che consente un’assegnazione numerica dei processori (ad esempio 0, 5 7, 9-11).

Il seguente comando assegna al processo 1234 i processori 1 e 2:

taskset -p 1234 -c 1,2

top

Riepilogo dinamico dei processi

Con il comando top visualizzate un riepilogo dinamico di tutti i processi in corso.

Lo schema alla base del comando è il seguente:

top [OPZIONI]

Il risultato delle informazioni del processo si può regolare grazie a diverse opzioni. Inoltre il riepilogo dei processi top (tra gli altri) supporta le seguenti hotkeys per filtrare l’output:

    [P] = filtra l’output secondo il carico della CPU

    [M] = filtra l’output secondo l’uso della memoria

    [N] = filtra l’output numericamente per PID

    [A] = filtra l’output in base all’età

    [T] = filtra l’output in base al tempo

    [U NOMEUTENTE o UID] = filtra l’output a seconda del rispettivo utente

Utilizzate Hotkey [H] per farvi mostrare una pagina di aiuto e [Q] per uscire dal riepilogo dei processi.

Pager

Volete tenere tutto sotto controllo anche nel caso di file con più pagine? Con un programma della riga di comando dalla categoria “Pager”, selezionate miratamente quali paragrafi farvi mostrare nel terminale e, se lo desiderate, scorrete nelle pagine del file in modo interattivo.

Comando

Descrizione

head

Visualizzare le prime righe di un file

Il pager head viene utilizzato per visualizzare la prima parte di un file.

La sintassi generale del comando è la seguente:

head [OPZIONI] File

Utilizzate l’opzione -n NUMERO_RIGHE per definire quante righe devono essere visualizzate a partire dalle prime.

Esempio:

head -n 3 esempio.txt 

Vengono restituite le prime tre righe del file esempio.txt. Senza alcuna indicazione delle righe, head restituisce le prime 10 righe del file indicato.

less

Mostrare file di testo nel terminale

Il programma less consente di mostrare il contenuto di un file di testo nel terminale.

La sintassi generale è la seguente:

less [OPZIONI] FILE

L’output viene visualizzato automaticamente in modo interattivo, così da consentirvi di sfogliare il documento selezionato o di procedere con una ricerca tramite parole chiave.

Il tasto [Q] termina la modalità di lettura interattiva. Altri tasti di controllo e possibili opzioni sono contenute nelle pagine del manuale del sistema operativo.  

more

Mostrare file di testo nel terminale

Il pager more svolge la stessa funzione di less, ma in maniera meno esauriente.

Utilizzate more ricorrendo allo schema seguente, per aprire un file di testo e riprodurre il suo contenuto nel terminale:

more [OPZIONI] FILE

Il programma della riga di comando mostra sempre sullo schermo una pagina completa del file selezionato. Se un file comprende più pagine, anche more avvia una modalità interattiva che vi consente, grazie a dei tasti di controllo, di sfogliare il documento o di ricercare al suo interno delle parole chiave.

Il tasto [Q] termina la modalità interattiva. Altri tasti di controllo e possibili opzioni sono contenute nelle pagine del manuale del sistema operativo.  

tail

Visualizzare le ultime righe di un file

Mentre, solitamente, head indica le prime 10 righe di un file selezionato, tail nemostra le ultime 10 righe.

Entrambi i pager vengono utilizzati ricorrendo allo stesso schema (vedi head).

Editor

Su Linux non avete bisogno di nessun programma grafico di elaborazione dei testi per adattare i file di configurazione, modificare parti di codici o scrivere dei brevi appunti. I semplici editor di testo si possono richiamare facilmente e senza ritardi dal terminale. Di seguito vi presentiamo tre programmi che dovreste conoscere.

Comando

Descrizione

emacs  

L’editor di testo Emacs

Emacs è un editor di testo multipiattaforma che è ampliabile a proprio piacimento per mezzo di un’interfaccia di programmazione.

Emacs di solito si avvia con l’interfaccia grafica, può però essere aperto anche con l’opzione --no-window-system nel terminale.

emacs --no-window-system

Emacs dispone di un tutorial integrato che si apre tramite la combinazione di tasti [CTRL] + [H], [T].

nano

L’editor di testo Nano

Nano è una riproduzione GNU dell’editor di testo Pico, basato sul terminale, che viene utilizzato nel client di posta elettronica Pine. Nano offre così una varietà di funzioni inferiore rispetto ad altri editor simili (come Vim), si contraddistingue però per un’usabilità particolarmente user-friendly.

La sintassi generale del programma è la seguente:

nano [OPZIONI] FILE

Il programma apre il file indicato in una finestra di editing nel terminale.

Se aprite Nano senza dare alcun nome al file, può venire creato un nuovo file di testo che viene salvato nella cartella selezionata attualmente.

nano [Opzioni]

Le combinazioni dei tasti per il controllo del programma sono presentate nel bordo inferiore della finestra di editing. Altre informazioni sono contenute nelle pagine del manuale del sistema operativo.

vim

L’editor di testo Vim

Vim (abbreviazione di Vi Improved) è uno sviluppo dell’editor di testo Vi, da cui si distingue per le innumerevoli estensioni, come l’evidenziazione della sintassi, un sistema di aiuto completo, scripting nativo, l’autocompletamento del codice e una selezione del testo visiva.

Il programma open source vi offre diverse modalità di funzionamento per l’elaborazione di file esclusivamente di testo e può venire utilizzato a proprio piacimento dal terminale o come applicazione standalone con un’interfaccia grafica (GVim). Un campo di applicazione principale del programma è l’elaborazione del codice del programma.

Se avviate Vim dalla console, il suo utilizzo avviene tramite tastiera. Solitamente il programma viene aperto con un file di testo ricorrendo allo schema seguente.

vim [OPZIONI] FILE

Vim carica i file aperti in un buffer, dove vengono immagazzinate tutte le modifiche che apportate al file aperto. Se aprite Vim senza indicare nessun file, il programma si avvia con il buffer vuoto. Una modifica del file originale avviene solo quando il processo di memorizzazione viene assegnato grazie alla corrispondente combinazione di tasti. Se non esiste già un file con il nome dato, viene creato durante il processo di memorizzazione.

Vimtutor offre un’introduzione completa a Vim che avviate sempre dalla riga di comando.

Inoltre trovate maggiori informazioni sull’installazione e le diverse modalità di funzionamento del programma nel nostro articolo di base sull’editor di testo Vim.

Gestione della rete

Su Linux anche la gestione della rete avviene comodamente dal terminale. Indipendentemente dal fatto che verifichiate la connessione, richiediate le informazioni DNS, configuriate le interfacce o vogliate trasmettere i file a un altro computer nella rete, con i seguenti programmi basta un singolo comando per attuare concretamente il vostro proposito.

Comando

Descrizione

arp

Mostrare e manipolare la cache ARP

Il programma della riga di comando arp vi consente di aprire e manipolare la cache ARP del vostro sistema operativo.

Utilizzate arp senza modificatore per farvi mostrare il contenuto della tabella ARP nel terminale.

arp 

Alternativamente avete la possibilità di limitare l’output con l’opzione –a alle voci di un nome host preciso (o in alternativa di un indirizzo IP).

arp -a NOMEHOST

Esempio:

arp -a example.com

Se volete creare una voce ARP, utilizzate il comando con l’opzione –s secondo lo schema seguente:

arp -s NOMEHOST INDIRIZZO_MAC

Esempio:

arp -s example.com 00:05:23:73:e6:cf

Se deve essere eliminata una voce esistente, arp viene utilizzato con l’opzione -d.

arp -d NOMEHOST

dig

Richiedere le informazioni DNS

Dig è un tool di lookup con il quale richiedere le informazioni dei server DNS e farsele mostrare nel terminale.

Il programma della riga di comando viene solitamente utilizzato ricorrendo allo schema seguente per richiedere l’indirizzo IP e altre informazioni DNS su un nome di dominio dato:

dig [@SERVER] [DOMINIO] [TIPO]

SERVER è il server DNS che deve essere ricercato in base alle informazioni desiderate. Se non viene indicato nessun server, dig individua il server DNS dal file /etc/resolv.conf.  

DOMINIO sta a indicare il nome di dominio al quale devono essere comunicate le informazioni DNS.

Come TIPO si può definire il tipo di richiesta, ad esempio ANY (tutte le voci), A (record IPv4 di un host) o AAAA (record IPv6 di un host). Il record A è definito come tipo di richiesta standard.

Utilizzate dig con l’opzione –x per richiedere nell’ambito di un reverse lookup il nome di dominio di un indirizzo IP dato.

dig [@SERVER] [-x INDIRIZZO IP]

Gli argomenti NAME, TYPE e CLASS non sono in questo caso necessari.

ftp

Trasmettere i file tramite FTP

Con il programma della riga di comando ftp la maggior parte delle distribuzioni Linux dispone già di un client preinstallato per il trasferimento dei dati tramite FTP (File Transfer Protocol) che vi offre la possibilità di scambiare file tra un sistema locale e un altro computer in rete.

Utilizzate ftp ricorrendo allo schema seguente per instaurare una connessione al server FTP del computer di destinazione.

ftp [OPZIONI] [HOST[PORTA]]

L’indirizzamento avviene tramite nome host o indirizzo IP. L’indicazione di un numero di porta è opzionale.

Di norma mentre si instaura la connessione vengono richiesti un nome utente e la relativa password.

Se il login va a buon fine, ftp avvia un interprete della riga di comando che accetta gli input utente sotto forma di comandi. Il programma supporta svariati comandi con i quali si possono ricercare e gestire i file del computer di destinazione e con cui si possono trasmettere i file da un sistema a un altro.

ip

Richiedere e configurare le interfacce di rete

Il programma della riga di comando ip fa parte della raccolta di programmi iproute2, con cui si possono richiedere e configurare dal terminale le interfacce di rete.

La sintassi generale del comando è la seguente:

ip [OPZIONI] OGGETTO [COMANDO [ARGOMENTI]]

Grazie a oggetti, sottocomandi e altri argomenti definite quale azione viene eseguita tramite ip.

Il programma supporta diversi oggetti come address (indirizzo IP), link (interfaccia utente), route (voce nelle tabelle di instradamento) o tunnel, al quale si possono applicare i sottocomandi come add, change, del, list o show.

Se ad esempio volete richiamare l’indirizzo IP di un’altra interfaccia utente specifica (ad esempio eth0), utilizzate il comando ip insieme all’oggetto address, il comando show e l’argomento dev eth0:

ip address show dev eth0 

In alternativa si possono presentare degli oggetti e dei comandi anche utilizzando la forma abbreviata:

ip a s dev eth0

Se volete che vi vengano fornite tutte le informazioni su un’interfaccia di rete (ad esempio eth0), utilizzate il comando della riga di comando ip con l’oggetto link, il comando show e l’argomento dev eth0:

ip link show dev eth0 

o

ip l s dev eth0

Per attivare o disattivare un’interfaccia come eth0, procedete come segue:

                ip link set eth0 up           

ip link set eth0 down

Con la loro ampia gamma di funzioni, la raccolta di programmi iproute2 sostituisce una serie di tool di rete più datati come ifconfig, route e netstat.

Una lista di tutte le possibili opzioni, oggetti, sottocomandi e argomenti per il comando ip, e informazioni per altri programmi iproute2 è contenuta nelle pagine del manuale del vostro sistema operativo.

iw

Richiedere e configurare le interfacce Wi-Fi

Il programma della riga di comando iw serve per la configurazione di interfacce Wi-Fi e si è affermata come un’alternativa più attuale a iwconfig.

Alla base del comando si trova una sintassi simile a quella di ip:

iw [OPZIONI] OGGETTO [COMANDO]

Dei possibili oggetti sono:

   dev NOME_DELLA_INTERFACCIA = interfaccia di rete

   phy NOME_DEL_DISPOSITIVO = dispositivo Wi-Fi (tramite nome)

   phy#INDICE_DEL_DISPOSITIVO = dispositivo Wi-Fi (tramite indice)

   reg = Regulatory Agent (agente di regolazione) per la configurazione delle impostazioni dei paesi e delle regioni

Utilizzate iw con il comando help per farvi mostrare la sintassi del programma, oltre che le possibili opzioni e i comandi.

iw help

Di seguito alcuni esempi di applicazione del programma della riga di comando iw.

Visualizzare le impostazioni dei dispositivi di tutte le interfacce Wi-Fi:

iw list

Richiamare lo stato di connessione (tasso di trasmissione e potenza del segnale) di un’interfaccia Wi-Fi (ad esempio wlan0):

iw dev wlan0 link

Scansionare l’ambiente Wi-Fi:

iw dev wlan0 scan

Utilizzate iw insieme al comando scan per farvi restituire tutte le reti Wi-Fi nel campo di ricezione, oltre che le loro proprietà (canale radio, crittografia, potenza del segnale, ecc.)

Estrapolare le impostazioni di regione:

iw reg get

Modificare le impostazioni di regione:

iw reg set IT

Richiedere le proprietà dei dispositivi (ad esempio di wlan0):

iw list dev wlan0

Proprietà dei dispositivi dettagliate:

iw dev wlan0 station dump

Richiedere la visualizzione degli eventi:

iw event

Le opzioni -f, -t e –r forniscono un risultato avanzato con messaggi di errore relativi allo stato della connesione e alle indicazioni temporali.

netstat

Richiedere lo stato delle interfacce di rete

Il programma della riga di comando netstatserve per fornire lo stato delle interfacce utente.

La sintassi generale del comando è la seguente:

netstat [OPZIONI]

Utilizzate netstat senza opzione per farvi mostrare tutti i socket aperti nel terminale.

Alternativamente utilizzate le seguenti opzioni per visualizzare le tabelle di instradamento (-r), le statistiche delle interfacce (-i), le connessioni mascherate (-M) o i messaggi della rete simbolica (-N).

Un’alternativa a netstat è il programma ss, contenuto nella raccolta di programmi iproute2.

nslookup

Richiedere le informazioni DNS

Come dig anche nslookupserve per la risoluzione dei nomi. Il programma della riga di comando è disponibile in due modalità: interattiva e non interattiva.

Avviate la modalità interattiva inserendo il comando nslookup senza aggiunte nel terminale.

nslookup

Il programma ora accetta comandi. Ad esempio inserite un nome host (dominio) per farvi mostrare il relativo indirizzo IP.

Alternativamente potete avviare una richiesta reverse lookup, inserendo un indirizzo IP e facendovi mostrare il nome host collegato.

Il programma nslookup utilizza automaticamente il server DNS preconfigurato nel sistema.

Date il comando exit per terminare nslookup.

Se volete utilizzare nslookup nella modalità non interattiva, aprite il programma in combinazione con un nome host o un altro indirizzo IP.

nslookup [OPZIONI] [HOST/IP ]

Visto che il programma è ufficialmente datato, viene consigliato agli utenti di ricorrere piuttosto a dig.

ping

Verificare la connessione di rete

Utilizzate il programma della riga di comando ping per verificare la raggiungibilità di altri computer nella rete.

La seguente sintassi è alla base del comando:

ping [OPZIONI] OBIETTIVO

Per verificare la connessione di rete, ping invia un piccolo pacchetto al sistema di destinazione inserito (nome host o IP) e analizza il tempo impiegato per la ricezione della risposta.

Insieme al tempo di rotazione del pacchetto (Round trip time, RTT), ovvero l’intervallo compreso tra l’invio del pacchetto e la ricezione della risposta, ping fornisce anche l’indirizzo IP del sistema di destinazione nel terminale. Il programma della riga di comando serve così per individuare l’indirizzo IP che appartiene a un dominio.

Se un ping viene eseguito senza opzioni, il programma funziona fino a quando non viene fermato manualmente con la combinazione di tasti [CTRL] + [C] e invia al sistema di destinazione una richiesta ping al secondo.

Se volete già definire un termine del comando al momento dell’apertura del programma, utilizzate le opzioni -c NUMERO (numero di richieste ping che devono essere inviate) o -w SECONDI (intervallo in secondi dopo il quale il ping termina automaticamente).

route

Mostrare e modificare le tabelle di instradamento IP

Con il programma della riga di comando route si possono richiedere e modificare le tabelle di instradamento IP del kernel.

La sintassi seguente è alla base del comando:

route [OPZIONI]

route [OPZIONI] [add|del] [-net|-host] OBIETTIVO      

Utilizzate il comando senza opzione per farvi mostrare completamente la tabella di routing del kernel:

route

Se volete impostare un percorso alla rete, utilizzate il sottocomando add.

route add -net 10.0.0.0

Se l’obiettivo è una sottorete, la maschera di sottorete deve anche essere indicata tramite l’opzione netmask MASCHERA:

route add -net 10.0.0.0 netmask 256.245.155.0

Alternativamente si può configurare anche un percorso a un computer:

route add -host 218.89.72.191

Se il sistema dispone di più interfacce di rete, deve essere indicato tramite l’opzione dev INTERFACCIA quale interfaccia deve essere usata:

route add -net 10.0.0.0 netmask 256.245.155.0 dev eth0

Se l’obiettivo si può raggiungere tramite un router, deve anche essere indicato con l’opzione gw ROUTER.

route add -net 10.0.0.0 netmask 256.245.155.0 gw 10.0.1.261

Se volete eliminare un percorso, utilizzate il sottocomando del.

route del -host 218.89.72.191

rsync

Sincronizzare i file

Il programma della riga di comando rsync consente di sincronizzare i file in locale o all’interno di una rete. Perciò vengono prima di tutto confrontate

 le dimensioni e il tempo di modifica dei file coinvolti.

Se il file di origine e di destinazione si trovano sullo stesso sistema, i file differenti vengono copiati interamente. Al momento della sincronizzazione attraverso una rete, rsync utilizza un algoritmo di trasferimento delta, di modo che solo le parti di file modificate debbano essere trasmesse dal supporto di origine al sistema di destinazione.

La sintassi del comando è la seguente:

rsync [OPZIONI] ORIGINE DESTINAZIONE

 Esempio:

rsync -a home/user/documenti/ /home/user/backup

Tutti i file contenuti su home/user/documenti/ vengono confrontati con i file nella cartella /home/user/backup.

Il comando rsync viene solitamente eseguito con l’opzione –a che si occupa del fatto che tutte le sottocartelle e i link simbolici vengano copiati, mantenendo inalterati tutti i permessi utente.

sftp

Trasmettere i file tramite SFTP

Il programma della riga di comando sftp serve come ftp per il trasferimento dei dati nella rete. Così avvengono tutte le operazioni tramite una connessione SSH crittografata (Secure Shell). 

Come ftp, sftp instaura una connessione in rete al computer di destinazione e avvia infine una modalità di comando interattiva.

scp

Trasmettere i file tramite SCP

Con scp (abbreviazione di secure copy) avete direttamente a disposizione dal terminale un altro programma per la trasmissione sicura dei dati nella rete: infatti scp copia i dati da un computer a un altro e utilizza così anche il protocollo di rete SSH.

Il client funziona un po’ come l’opzione dei file cp, ma viene utilizzato su ogni piattaforma ricorrendo alla seguente sintassi:

scp [OPZIONI] FILE [[user@]remote_host:]PERCORSO

Inserendo il percorso del computer rimosso vengono anteposti il nome utente e il rispettivo nome host. Si possono indirizzare esplicitamente i file locali tramite percorsi relativi o assoluti.

Esempio: 

scp /home/max/images/image.jpg max@example.com:/home/max/archive

Il file image.jpg viene copiato dalla cartella locale images nella cartella archive sul computer di destinazione con l’indirizzo example.com.

Il programma scp supporta inoltre il trasferimento dei dati anche in direzione opposta e tra due sistemi remoti.

scp [OPZIONI] [[user@]host:]FILE PERCORSO

scp [OPZIONI] [[user@]host1:]FILE [[user@]host2:]PERCORSO

Altre opzioni vi offrono la possibilità di apportare modifiche alla modalità di trasmissione e alle impostazioni di crittografia.

traceroute

Seguire i pacchetti

Utilizzate il comando traceroute ricorrendo allo schema seguente per comprendere il percorso di un pacchetto IP tra il vostro sistema e il computer di destinazione.

traceroute [OPZIONI] NOMEHOST

Tramite traceroute si può individuare quale router e nodi Internet ha attraversato un pacchetto IP durante il percorso per giungere al computer di destinazione, utile ad esempio per approfondire la causa di un ritardo nella trasmissione.

tty

Visualizzare il nome del terminale

Il comando tty restituisce il nome del file del terminale che è definito come input standard.

La sintassi generale del comando è la seguente:

               tty [OPZIONI]

Archiviare e comprimere

Linux offre diverse tecnologie con cui si possono comprimere e raccogliere i file in archivi. Bisogna prestare però attenzione al fatto che non tutti gli archivi sono delle compressioni. Così tar, un programma per l’archiviazione dei file, viene solitamente combinato con i programmi di compressione, come gzip, bzip2 o xz.

Comando

Descrizione

tar

Scrivere ed estrarre file in un archivio tar

Il comando tar sta per tape archiver, un programma che è stato sviluppato originariamente per salvare in modo sicuro i dati su disco magnetico. Ancora oggi tar è uno dei programmi più famosi per l’archiviazione di dati su Linux.

Il programma consente di scrivere diversi file e cartelle sequenzialmente in un file tar e ripristinarli a partire da questo, se necessario. A differenza del classico formato zip di Windows, tutti i permessi utente del file archiviato rimangono invariati anche dopo la decompressione.

Il programma dalla riga di comando tar viene aperto ricorrendo alla sintassi seguente:

tar [OPZIONI] FILE

Se volete creare un nuovo archivio, utilizzate tar con le opzioni -c (generare un nuovo archivio) e -f (scrivere un archivio nel file indicato o estrarlo da questo).

Nel seguente esempio vengono scritti i file file1.txt e file2.txt nel nuovo archivio creato esempio.tar.

tar -cf esempio.tar file1.txt file2.txt

Se volete vedere il contenuto di un archivio, utilizzate tar con le opzioni -t (mostrare i contenuti di un archivio), -v (output dettagliato) e -f (vedi sopra).

tar -tvf esempio.tar

Se i file archiviati vengono decompressi nella cartella corrente, tar viene utilizzato con le opzioni -x (estrarre file dall’archivio) e -f (vedi sopra).

tar -xf esempio.tar

Inoltre tar offre delle opzioni con -j (bzip2), -J (xz), -z (gzip) e -Z (compress) che consentono di comprimere e decomprimere gli archivi, utilizzando un altro programma durante il processo di compressione e decompressione.

Nel seguente esempio vengono archiviati i file file1.txt e file2.txt in esempio.tar.gz e compressi con gzip.

tar -czf esempio.tar.gz file_1.txt file _2.txt

Il seguente comando estrae e decomprime tutti i file archiviati in esempio.tar.gz.

tar -xzf esempio.tar.gz

gzip / gunzip

Comprimere e decomprimere file con gzip

Con gzip (abbreviazione di GNU zip) si indica un programma con il quale si possono comprimere e decomprimere i file comodamente tramite la riga di comando.

La sintassi generale del comando è la seguente:

gzip [OPZIONI] FILE

Utilizzate gzip, ad esempio, ricorrendo allo schema seguente per convertire il file esempio.txt nel formato compresso esempio.txt.gz:

gzip esempio.txt

Fate attenzione che gzip, di norma,elimina il file originario durante il procedimento di compressione. Si può impedire con l’opzione -k.

gzip -k esempio.txt

Il programma può essere applicato su più file allo stesso tempo. Così viene convertito ogni file in uscita in un file gz autonomo.

Il comando

gzip esempio_1.txt esempio_2.txt esempio_3.txt

genera i file esempio_1.txt.gz, esempio_2.txt.gz ed esempio_3.txt.gz.

Se volete scrivere più file in un archivio compresso comune, utilizzate gzip insieme al programma di archiviazione tar.

Se volete decomprimere un file gz, utilizzate il comando gzip con l’opzione -d. In alternativa è possibile usare anche il comando gunzip.

gzip -d esempio.txt.gz

gunzip esempio.txt.gz

Anche i file decompressi gz vengono solitamente eliminati. Se oltre al file estratto volete mantenere anche il file gz, utilizzate anche qui l’opzione –k.

La compressione gzip si basa sull’algoritmo deflate (una combinazione del metodo LZ77 e della codifica di Huffman). Rispetto agli altri metodi di compressione, gzip si contraddistingue per la sua velocità. Il grado di compressione è però proporzionalmente inferiore.

bzip2 / bunzip2

Comprimere e decomprimere i file con bzip

Un’alternativa amata a gzip è rappresentata dal programma della riga di comando bzip2 che utilizza la stessa sintassi di gzip, ma si basa su un processo di compressione a tre livelli che consente un grado di compressione nettamente più elevato.

Prima di tutto vengono analizzati i file trasmessi a blocchi della trasformata di Burrows-Wheeler inversa e infine di quella Move-to-Front. La compressione dati vera e propria avviene alla fine all’interno della codifica di Huffman.

I file che sono stati compressi con bzip2, presentano l’estensione .bz2. Utilizzate bzip secondo lo schema seguente per comprimere i file.

 

bzip2 [OPZIONI] FILE

 

Anche bzip2 si può applicare agli archivi tar.

 

La decompressione avviene analogamente a gzip grazie all’opzione -d. Alternativamente è a disposizione il comando bunzip2.

 

Gli utenti ottengono un elevato grado di compressione a costo di un tempo di esecuzione proporzionalmente lungo.

xz

Comprimere e decomprimere i file con xz

Il programma della riga di comando xz converte i file nell’omonimo formato di compressione dati xz. Il programma si basa sullo stesso schema di gzip e bzip2.  

xz [OPZIONI] FILE

I file che sono stati compressi con xz, presentano l’estensione .xz. La decompressione avviene come su gzip e bzip con l’opzione -d. In alternativa può essere utilizzato il comando unxz.

Analogamente ai file gz e bz2, anche i file di archivio xz non sono dei file di archivio. Se volete scrivere più file nello stesso file compresso xz, dovete ricorrere anche in questo programma di compressione allo strumento di archiviazione tar.

Xz supporta diversi algoritmi di compressione. Di solito viene utilizzato l’algoritmo Lempel-Ziv-Markow (LZMA/LZMA2).

cpio

Scrivere ed estrarre i file nel file di archivio

Con cpio (abbreviazione di copy in, copy out) si indica un programma di archiviazione con il quale si possono scrivere dati in un file di archivio (.cpio) ed estrarlo da questo.

Trovate una descrizione dettagliata dei programmi della riga di comando presentati qui nel nostro articolo di base sul tema “Archiviazione e compressione su Linux”. Ulteriori informazioni sul procedimento di compressione e sulla differenza con la deduplicazione sono presenti nel nostro articolo sulla riduzione dei dati.

Gestione della partizione

Se su Linux volete ricorrere a un file system su un’altra partizione, questa deve essere prima di tutto collegata nella struttura delle cartelle del vostro sistema operativo. Si parla di “mount” (o “montature”) di una partizione. Se necessario, il processo può avvenire tramite l’interfaccia utente grafica. In alternativa vi sono i programmi della riga di comando come lsblk, blkid e mount che richiedono informazioni sui dispositivi a blocchi e li montano o smontano, se necessario.

Comando

Descrizione

mount /unmount

Collegare il file system

Se un file system deve essere collegato tramite terminale nella struttura di cartelle del sistema operativo, su Linux si utilizza il programma della riga di comando mount.

La sintassi generale del comando è la seguente:

mount [OPZIONI] DISPOSITIVO PUNTO_DI_MOUNT

DISPOSITIVO = il percorso al file del dispositivo del supporto di memoria che vorreste montare come partizione.

PUNTO_DI_MOUNT = il punto nella struttura di cartelle del vostro sistema operativo sul quale vorreste montare la partizione. Il punto di mount viene indicato spesso come percorso assoluto.

Esempio:

mount /dev/sdd /media/usb

Il dispositivo sdd viene montato nella cartella /media/usb.

Solitamente Linux riconosce automaticamente il corrispettivo file system del dispositivo. Se così non fosse, l’opzione –t offre la possibilità di indicare esplicitamente il file system (ad esempio ext4):

mount -t ext4 /dev/sdd /media/usb

Se dovesse essere smontato un file system già collegato, si utilizza il comando unmount:

unmount [OPZIONI] DISPOSITIVO

o

unmount [OPZIONI] PUNTO_DI_MOUNT

Se voleste farvi mostrare tutti i file system che sono collegati nel vostro sistema operativo, utilizzate il comando mount con l’opzione -l.

mount -l

Il risultato può essere delimitato tramite –t sui file system di un tipo specifico.

lsblk

Elencare le informazioni sui dispositivi a blocchi collegati

Utilizzate il comando lsblk (abbreviazione di list block devices) per farvi mostrare tutti i dispositivi a blocchi e le partizioni come struttura ad albero. Non devono però essere collegati per forza.

La seguente sintassi è alla base del comando:

lsblk [OPZIONI]

Il risultato comprende le seguenti informazioni:

    NAME = nome del dispositivo (ad esempio sda) o il nome della partizione (ad  esempio sda1, sda2, ecc.)

    MAJ:MIN = major:minor numero del dispositivo

    RM = mezzo a cui passare (1 = appropriato, 0 = non appropriato)

    SIZE = volume della memoria del dispositivo

    RO = dispositivi di sola lettura (1 = appropriato, 0 = non appropriato)

    TYPE = tipo di dispositivo

    MOUNTPOINT = punto di mount

Se necessario, si può modificare il risultato grazie all’opzione -o (--output) e una lista degli attributi desiderati personalizzati per richiedere informazioni aggiuntive come il numero di identificazione (UUID), il file system (FSTYPE) o lo stato (STATE).

Esempio:

lsblk -o NAME,FSTYPE,UUID, SIZE,OWNER,GROUP,MODE,TYPE,MOUNTPOINT

Nelle impostazioni standard i dispositivi di archiviazione vuoti vengono saltati. Se volete inserire anche questi nel riepilogo, utilizzate il comando lsblk insieme all’opzione -a (--all).

Se volete richiedere solo le informazioni su un dispositivo preciso, utilizzate lsblk ricorrendo allo schema seguente:

lsblk [OPZIONI] DISPOSITIVO

Esempio:

lsblk /dev/sda

blkid

Elencare le informazioni sui dispositivi a blocchi collegati

In modo simile a lsblk, anche blkid fornisce informazioni sui dispositivi a blocchi collegati.

Utilizzate blkid ricorrendo allo schema seguente per richiedere il numero di identificazione (UUID) e il tipo di file system (TYPE) di tutti i dispositivi a blocchi collegati.

blkid [OPZIONI]

Ottenete un risultato tabellare grazie all’opzione –o combinata con il valore list.

blkid -o list

Anche blkid si può limitare a un dispositivo scelto:

blkid [OPZIONI] DISPOSITIVO

Esempio:

blkid /dev/sda1

dd

Copiare esattamente i file, le partizioni o i supporti di dati 

Il programma della riga di comando dd consente una copia in cui i dati vengono analizzati bit per bit da un input file (if) e vengono scritti in un output file (of).

La seguente sintassi è alla base del programma:

dd if=origine of=destinazione [OPZIONI]

Come origine e destinazione si possono indicare così sia i singoli file che le partizioni intere (ad esempio /dev/sda1) o un dispositivo di memoria completo (ad esempio /dev/sda).

Esempio:

dd if=/dev/sda5 of=/dev/sdb1

La quinta partizione completa di /dev/sda viene copiata esattamente, bit per bit, sulla prima partizione di /des/sdb.  

Il processo di copia si può limitare tramite le opzioni a un numero qualsiasi di blocchi di memoria delle dimensioni desiderate.

Varie

Di seguito trovate una lista di altri comandi standard su Linux che non sono classificabili in nessun altra delle categorie presentate.

Comando

Descrizione

alias

Definire dei nomignoli per l’apertura dei programmi

Il programma della riga di comando alias vi consente di definire dei nomignoli per l’apertura dei programmi.

Utilizzate alias ricorrendo allo schema seguente:

alias NOMIGNOLO= 'COMANDO'

Sostituite il segnaposto COMANDO con un comando qualsiasi comprensivo di opzioni. Questo viene collegato con la sequenza di numero impostata per il segnaposto NOMIGNOLO.

Esempio:

alias ll='ls -l'

La sequenza di caratteri ll viene definita come alias per il comando ls con l’opzione -l (risultato dettagliato).

at

Eseguire il comando programmato

Aprite il programma della riga di comando at basandovi sullo schema seguente per eseguire un comando programmato.

at INDICAZIONEDATA

Esempio: 

at 10:00 AM 6/22/2017

Infine date il comando e chiudete la modalità interattiva con [CTRL] + [D].

cal

Mostrare il calendario

Utilizzate cal basandovi sullo schema seguente per farvi mostrare il calendario nel terminale.

cal [OPZIONI] [[MESE] anno]

Esempio:

cal 12 2017

Il sistema fornisce una panoramica del mese di dicembre 2017.

echo

Visualizzare la stringa sullo standard output

Utilizzate il comando echo per farvi riprodurre le catene di caratteri per riga sullo standard output (solitamente il terminale).

La sintassi generale del programma è la seguente:

              echo [OPZIONI] STRINGA

pr

Preparare i file di testo per la stampa

Utilizzate il programma della riga di comando pr per preparare i file di testo per la stampa.

La sintassi generale del comando è la seguente:

pr [OPZIONI] File

Nell’impostazione standard pr genera una pagina di header che comprende il nome del file, la data corrente e il numero delle pagine.  

script

Registrare le sessioni del terminale

Il programma della riga di comando script vi permette di registrare una sessione del terminale nel file typescript. Se su typescript si rileva già una registrazione di una sessione precedente, questa verrà sovrascritta.

La registrazione parte automaticamente aprendo il programma:

script

Utilizzate la combinazione di tasti [CTRL] + [D] per terminare la registrazione.

Se volete salvare la registrazione in un altro file, invece che su typescript, aprite script insieme al nome del file o al percorso.

script FILE

seq

Restituire serie di numeri

Utilizzate il comando seq per farvi restituire una serie di numeri sullo standard output. Definite così un valore iniziale, uno finale e un incremento a scelta.

seq [OPZIONI] VALOREINIZIALE INCREMENTO VALOREFINALE

Esempio:

seq 0 2 10

Il programma conta partendo dal valore iniziale 0, passando a passaggi a due cifre, fino ad arrivare a 100.

tasksel

Aiuto per l’installazione di applicazioni standard

Il programma della riga di comando tasksel serve a facilitare l’installazione delle applicazioni standard (mail server, server DNS, server OpenSSH, server LAMP, ecc.). Utilizzate il tool per installare automaticamente i pacchetti e i programmi necessari per svolgere un compito nella giusta sequenza.

Aprite tasksel con l’opzione --list-tasks per farvi mostrare una lista di tutte le applicazioni standard disponibili.

tasksel --list-tasks

Se volete richiamare altre informazioni su un’applicazione standard presente in questa lista, utilizzate tasksel con l’opzione --task-desc e il relativo compito.

Esempio:

tasksel --task-desc mail-server

Vengono restituite delle informazioni sul compito “mail-server“.

Se volete farvi elencare tutti i pacchetti che appartengono al compito “mail-server“, utilizzate tasksel insieme all’opzione --task-packages.

tasksel--task-packages mail-server

Avviate un’installazione di tutti i pacchetti di un’applicazione standard grazie al sottocomando install. Per fare ciò è necessario disporre dei permessi di root.

Esempio:

tasksel install mail-server

Il programma della riga di comando introduce l’installazione di tutti i pacchetti che servono per il compito “mail-server“.

tee

Raddoppiare l’output del programma

Tee è un programma della riga di comando con cui si può raddoppiare l’output di un programma. Così viene inoltrato un output allo standard output e un altro viene scritto nel file trasmesso dal comando tee.

La sintassi generale del comando è la seguente:

tee [OPZIONI] FILE

Solitamente tee viene utilizzato in combinazione con l’operatore pipe (|).

ls | tee esempio.txt

Il comando ls elenca il contenuto della cartella corrente. La visualizzazione del programma viene trasmessa tramite pipe al programma della riga di comando, che la mostra nel terminale, ma la scrive anche nel file esempio.txt.

time

Misurare il tempo di esecuzione dei programmi

Utilizzate il comando time basandovi sullo schema seguente per individuare il tempo di esecuzione dei programmi, che avviate tramite il terminale.

time [OPZIONI] Comando [ARGOMENTI]

tr

Sostituire i caratteri nei file di testo

Utilizzate tr per eliminare una quantità qualsiasi di caratteri o sostituirla con un’altra. Perciò tr legge il flusso di dati dello standard input e lo scrive con la modifica desiderata nello standard output.

Se deve essere sostituita una quantità di caratteri con un’altra, tr viene utilizzato con due argomenti.

tr OPZIONE QUANTITÀDICARATTERI1 QUANTITÀDICARATTERI2

Il secondo argomento (QUANTITÀDICARATTERI2) sostituisce il primo (QUANTITÀDICARATTERI1).

Se volete eliminare una sequenza di caratteri, utilizzate tr con l’opzione –d e trasmettete la sequenza da eliminare come argomento.

tr -d QUANTITÀDICARATTERI

Il programma della riga di comando si utilizza solitamente insieme agli operatori di reindirizzamento (< e >) per apportare modifiche ai file.

tr 'a-z' 'A-Z' < esempio1.txt > esempio2.txt

tr inserisce il contenuto del file esempio1.txt, sostituisce le lettere minuscole da “a” a “z” con le corrispettive maiuscole, e scrive l’output nel file esempio2.txt.

wall

Inviare messaggi a tutti gli utenti loggati

Il programma della riga di comando wall vi consente di recapitare un messaggio a tutti quegli utenti loggati sul sistema.

Per inviare il messaggio, si avvia il programma con il comando seguente:

wall

Confermate il comando con [Enter] e inserite il vostro messaggio. Anche questo viene confermato con [Enter] e inviato tramite la combinazione di tasti [CTRL]+[D].

Tutti gli utenti registrati sul sistema ricevono il vostro messaggio nel terminale come messaggio broadcast.

Attenzione: per poter ricevere messaggi dovete assegnare agli altri utenti il permesso di scrittura nel vostro terminale. Utilizzate perciò il comando mesg:

mesg [y/n]

Per richiamare lo stato attuale:

mesg

Per concedere i permessi di scrittura:

mesg y

Per negare i permessi di scrittura:

mesg n

Se volete inviare i contenuti dei file a tutti gli utenti registrati, utilizzate wall insieme all’operatore di reindirizzamento e al relativo nome del file:

wall < NOMEFILE

watch

Eseguire i comandi periodicamente

Il programma della riga di comando watch vi consente di eseguire un comando a intervalli di tempo regolari.

La seguente sintassi è alla base del programma:

watch [OPZIONI] COMANDO

Definite l’intervallo temporale, in cui il comando trasmesso viene richiamato periodicamente con watch, tramite l’opzione –nSECONDI.

Si può terminare watch tramite la combinazione di tasti [CTRL] + [C].

Nel seguente esempio il sistema viene incaricato di mostrare il carico della RAM ogni 10 secondi.

watch -n 10 free

wc

Contare le righe, le parole, le lettere, i caratteri e/o i byte dei file di testo

Il programma della riga di comando wc (abbreviazione di word count) vi restistuisce, se necessario, il numero delle righe, delle parole, delle lettere, dei caratteri e/o dei byte presenti in un file di testo.

La sintassi generale del comando è la seguente:

wc [OPZIONI] FILE

Esempio:

wc esempio.txt

Output:

14 18 143 esempio.txt 

Se wc viene aperto senza opzioni, l’output si basa sullo schema RIGHE PAROLE CARATTERI FILE. Per un output filtrato il programma della riga di comando supporta le opzioni: -l (righe), -c (bytes), -m (caratteri), -L (lunghezza della riga più lunga) e -w (parole).

xargs

Convertire lo standard output nelle righe di comando

Xargs è un programma della riga di comando che consente di trasmettere a un comando l’output di un comando precedente come argomento. Solitamente viene utilizzato l’operatore di reindirizzamento pipe (|).

Utilizzate xargs basandovi sulla seguente sintassi:

ERRORE1 | xargs [OPZIONI] ERRORE2

Xargs viene ad esempio utilizzato in combinazione con il comando find.

Nell’esempio seguente find individua nella cartella attuale tutti i file che si abbinano allo schema di ricerca *.tmp e restituisce il loro nome nello standard output. Là i nomi dei file vengono accettati da xargs e trasmessi come argomenti al comando rm.

$ find . -name '*.tmp' | xargs rm

Il riepilogo proposto qui non ha alcuna pretesa di completezza, ma comprende solo i comandi Linux principali, mostrati con una selezione di alcuni esempi di applicazione per semplificare il lavoro giornaliero con i sistemi operativi compatibili con Linux. Nelle pagine del manuale del vostro sistema operativo è presente una descrizione completa dei programmi della riga di comando qui presentati e di tutti gli altri comandi. Una versione online di queste pagine di aiuto e della documentazione viene messa a disposizione nell’ambito del progetto delle man pages di Linux, create da Michael Kerrisk, all’indirizzo kernel.org/doc/man-pages.


Abbiamo una proposta per te:
Web hosting a partire da 1 €/mese!

Dominio gratis
Certificato SSL Wildcard incluso
Assistenza clienti 24/7
A partire da 1 €/mese IVA escl. per un anno,
poi 8 €/ mese IVA escl.