A seconda del desktop environment, se presente, GNU/Linux utilizza un diverso file manager grafico. Utilizzando questo software è possibile interagire con il file system e gli elementi memorizzati sul sistema. Il comando ls, tuttavia, è uno di quegli strumenti che non è possibile non conoscere.
L’uso del comando ls e della finestra del terminale rispetto a un file manager può offrire diversi vantaggi, soprattutto per gli utenti avanzati o nell’ambito di specifici contesti di utilizzo.
Ad esempio, il comando ls è utile per automatizzare operazioni ripetitive, risparmiando tempo e fatica; per accedere rapidamente a file e cartelle senza doversi destreggiare attraverso interfacce grafiche, menu e finestre; per eseguire operazioni complesse che potrebbero non essere possibili o pratiche da svolgere con un file manager tradizionale.
In un altro articolo sui falsi miti di Linux abbiamo voluto rimarcare che GNU/Linux non è affatto complesso come in molti lo dipingono. L’uso della finestra del terminale non è in molti casi neppure indispensabile, anche se conoscere i principali comandi si rivela senza dubbio molto utile. Il comando ls è uno di quelli.
Come usare il comando ls in Linux
Per chi arriva dal mondo Windows, il comando ls è un po’ l’equivalente di dir
. La differenza è che ls offre una valanga di opzioni e possibili scenari di utilizzo; nel caso di dir
le possibilità e il raggio d’azione sono decisamente più ristretti.
Di base, il comando ls permette di elencare i file memorizzati nella cartella corrente. Al comando ls si può far eventualmente seguire un percorso di directory, in modo tale da ottenere i file memorizzati in quella specifica cartella (esempio: ls /nomecartella/sottocartella
).
Questo è certamente l’uso più comune e “banale” ma le possibilità del comando ls sono quasi infinite.
Il comando ls ~
permette di avere la lista dei file e delle cartelle presenti nella directory home dell’utente. Il simbolo della tilde, un carattere speciale non presente sulla tastiera italiana, si può inserire facilmente premendo Alt Gr + ^/ì
.
Mostrare i dettagli di file e cartelle
Per rendere l’output restituito da ls più facilmente “leggibile”, si può usare la sintassi seguente:
ls -lh
Questo tipo di comando mostra non soltanto i nomi di file e directory ma anche dettagli come permessi, proprietario, dimensione, ultima data di modifica. L’opzione -h rende le dimensioni dei file più facilmente riconoscibili (si usano le unità di misura KB, MB, GB).
Prendiamo un esempio concreto:
-rw-r--r-- 1 user group 1.2K lug 9 12:00 file.txt
Il file chiamato file.txt
ha permessi -rw-r--r--
, il che significa che il proprietario è in possesso dei diritti di lettura e scrittura, mentre il gruppo e gli altri utenti hanno solo il permesso di lettura.
Il primo carattere (- o d o altri) indica se si tratta di un file ordinario (-) o di una directory (d) o di altri tipi speciali come link simbolici (l), socket (s), pipe (p) e così via. I successivi tre gruppi di tre caratteri (rwx) rappresentano i permessi per il proprietario del file, per il gruppo a cui appartiene il file e per gli altri utenti.
La presenza di r indica il permesso di lettura; w indica permesso di scrittura; x il permesso di esecuzione; – indica l’assenza di qualunque permesso.
- La cifra 1 indica che c’è solo un hard link che punta al file. Significa che c’è solo un’altra posizione nel file system che punta al contenuto di quel file. Nei sistemi Unix-like, un file può avere più di un nome (o path) associato ad esso, e ciascuno di questi nomi è chiamato un link al file. Quando si crea un nuovo file, di solito si crea implicitamente un link per quel file all’interno del file system.
- user: È il nome dell’utente proprietario del file.
- group: È il nome del gruppo a cui appartiene il file.
- 1.2K: La dimensione del file è di 1,2 KB.
- lug 9 12:00: Significa che il file è stato modificato l’ultima volta il 9 luglio alle 12:00.
Selezionare e ordinare i file con il comando ls
Tenendo presente che le opzioni passate al comando possono essere liberamente combinate, le opzioni seguenti si rivelano particolarmente utili.
Per elencare ricorsivamente il contenuto delle sottocartelle, a partire dal percorso in cui ci si trova o dalla directory specificata, si può usare l’opzione -R
(esempio: ls -R
).
Utilizzando -t
, il comando ordina i file per data di modifica proponendo per primi quelli più recenti. Aggiungendo -r
, è possibile invertire l’ordine di visualizzazione.
Se invece si fosse interessati a ordinare per dimensione, con i file più grandi prima, è sufficiente utilizzare l’opzione -S
.
Ancora, utilizzando la sintassi ls -a
, è visualizzata anche la lista dei file nascosti. Il comando elenca tutti i file e le cartelle presenti nella directory, inclusi quelli il cui nome inizia con il carattere punto (.). Questi file e cartelle sono comunemente noti come file nascosti in Linux e negli altri sistemi Unix-like.
Come memorizzare il risultato del comando ls in un file di testo
Capita piuttosto spesso che il comando ls restituisca un’infinità di risultati. Può quindi risultare molto utile memorizzare l’output ottenuto sotto forma di file di testo, nella cartella corrente o in un’altra directory.
Per salvare i risultati del comando sotto forma di file di testo, si può ricorrere al cosiddetto reindirizzamento dell’output:
ls > file.txt
Se non esiste, il file indicato verrà automaticamente creato; viceversa, il suo contenuto sarà sovrascritto. Per aggiungere quanto restituito dal comando ls a un file preesistente, si può usare il doppio simbolo maggiore (`>>`):
ls >> file.txt
Per aprire un file di testo con l’editor grafico predefinito su GNU/Linux, si può ricorrere al comando xdg-open
. Il comando è progettato per aprire qualsiasi file con l’applicazione predefinita associata al tipo di file indicato:
xdg-open file.txt
Se si volesse aprire il file di testo con il popolare editor nano, accessibile dalla finestra del terminale, si può scrivere:
nano file.txt
Eventuali modifiche possono essere salvate premendo CTRL+O
mentre CTRL+X
permette di chiudere completamente l’editor di testo.
Elencare i file il più velocemente possibile
Se si stesse sviluppando uno script con l’obiettivo di svolgere qualche tipo di operazione su file e cartelle, la velocità di esecuzione conta e parecchio.
Il comando ls -1U
consente di produrre una lista i file in colonna senza applicare alcun tipo di ordinamento. È il modo più semplice e rapido per ottenere un elenco di file, indipendentemente dalla cartella presa in esame.
Il maestro dell’ordinamento: raggruppare i file per estensione
Come trucco finale, suggeriamo anche l’utilizzo del comando ls -X
: permette di ordinare i file per estensione.
Questo tipo di istruzione si rivela perfetta per dare un senso a directory caotiche piene di tipi di file diversi.