ls mostra i file e le cartelle presenti in una directory. Dopo aver capito dove sei con pwd e come spostarti con cd, ls ti dice cosa c'è intorno a te. È uno dei comandi più usati nel terminale, ed è anche uno dei più ricchi di opzioni.
Cos'è
ls deriva da list, "elenca". Fa parte del pacchetto GNU coreutils, presente su praticamente ogni distribuzione GNU/Linux, ed è un eseguibile (si trova in /usr/bin/ls).
Cosa fa
Stampa i nomi dei file e delle directory contenuti nella cartella indicata, oppure in quella corrente se non ne indichi nessuna. Di default l'elenco è in ordine alfabetico e nasconde i file il cui nome inizia con un punto (i cosiddetti file nascosti, come .bashrc). Non modifica nulla: legge e basta.
Come si usa
Sintassi base:
$ ls [opzioni] [percorso...]Esempio 1: elenco semplice
$ ls
Documenti Download Immagini Musica ScrivaniaEsempio 2: elencare un'altra directory
Puoi indicare un percorso senza spostarti:
$ ls /etc/nginx
conf.d fastcgi_params mime.types nginx.conf sites-available sites-enabledEsempio 3: formato lungo con -l
L'opzione -l mostra un file per riga con tutti i dettagli:
$ ls -l
totale 20
drwxr-xr-x 2 enzo enzo 4096 ott 1 09:12 Documenti
drwxr-xr-x 2 enzo enzo 4096 set 28 18:40 Download
-rw-r--r-- 1 enzo enzo 812 ott 2 10:15 appunti.txtOgni colonna ha un significato:
- Primo carattere: tipo di elemento (
-file,ddirectory,llink simbolico). - Altri nove caratteri: permessi di proprietario, gruppo e altri (lettura
r, scritturaw, esecuzionex). - Numero: quantità di collegamenti (hard link).
- Utente e gruppo proprietari.
- Dimensione in byte.
- Data e ora dell'ultima modifica.
- Nome del file.
Esempio 4: dimensioni leggibili con -h
Combinato con -l, l'opzione -h (human-readable) scrive le dimensioni in K, M, G:
$ ls -lh
-rw-r--r-- 1 enzo enzo 2,3M ott 2 18:40 intervista.mp3
-rw-r--r-- 1 enzo enzo 812 ott 2 10:15 appunti.txtEsempio 5: mostrare i file nascosti con -a
$ ls -a
. .. .bashrc .config Documenti DownloadCompaiono anche . (la directory corrente) e .. (quella superiore). Con -A ottieni lo stesso risultato senza questi due.
Esempio 6: ordinare per data
Con -t i file più recenti vengono per primi; aggiungendo -r l'ordine si inverte e i più recenti finiscono in fondo, comodo in una directory piena di file:
$ ls -lt
$ ls -ltrEsempio 7: elencare solo i file di un certo tipo
I caratteri jolly (wildcard) sono espansi dalla shell prima ancora di arrivare a ls:
$ ls *.txt
appunti.txt note.txt todo.txt
$ ls -d */
Documenti/ Download/ Immagini/Il secondo comando mostra solo le directory: -d evita che ls ne elenchi il contenuto.
Opzioni utili
-l: formato lungo con permessi, proprietario, dimensione e data.-a/-A: include i file nascosti (-Aesclude.e..).-h: dimensioni leggibili (con-l).-t: ordina per data di modifica;-rinverte l'ordine.-S: ordina per dimensione, dal più grande.-R: elenca anche il contenuto delle sottocartelle (ricorsivo).-1: un elemento per riga.-F: aggiunge un simbolo al nome (/directory,*eseguibile,@link).-d: tratta le directory come elementi, senza elencarne il contenuto.
Le opzioni si possono unire: ls -lah equivale a ls -l -a -h.
Attenzione a
- I file nascosti: se una cartella sembra vuota, prova con
ls -a. Negli script: l'output di
lsè pensato per essere letto da una persona e può dare problemi con nomi che contengono spazi o caratteri speciali. Per ciclare sui file è più sicuro usare i caratteri jolly:for f in *.txt; do echo "Elaboro $f" done- Directory enormi: con
-Rin una cartella grande l'output può essere lunghissimo. Puoi limitarlo con| less. - Maiuscole e minuscole: l'ordinamento dipende dalle impostazioni di lingua del sistema, quindi l'ordine può cambiare da una macchina all'altra.
Riepilogo
| Comando | Cosa fa |
|---|---|
ls | Elenca il contenuto della directory corrente |
ls -l | Formato lungo con permessi, proprietario, data |
ls -lh | Come sopra, con dimensioni leggibili |
ls -a | Include i file nascosti |
ls -ltr | Ordina per data, i più recenti in fondo |
ls -d */ | Mostra solo le directory |
ls -R | Elenca anche le sottocartelle |
Nel prossimo articolo: mkdir, il comando per creare nuove directory.