Salta al contenuto principale

ls: elenca il contenuto di una directory

Inviato da tuxsa il

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  Scrivania

Esempio 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-enabled

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

Ogni colonna ha un significato:

  • Primo carattere: tipo di elemento (- file, d directory, l link simbolico).
  • Altri nove caratteri: permessi di proprietario, gruppo e altri (lettura r, scrittura w, esecuzione x).
  • 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.txt

Esempio 5: mostrare i file nascosti con -a

$ ls -a
.  ..  .bashrc  .config  Documenti  Download

Compaiono 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 -ltr

Esempio 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 (-A esclude . e ..).
  • -h: dimensioni leggibili (con -l).
  • -t: ordina per data di modifica; -r inverte 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 -R in 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

ComandoCosa fa
lsElenca il contenuto della directory corrente
ls -lFormato lungo con permessi, proprietario, data
ls -lhCome sopra, con dimensioni leggibili
ls -aInclude i file nascosti
ls -ltrOrdina per data, i più recenti in fondo
ls -d */Mostra solo le directory
ls -RElenca anche le sottocartelle

Nel prossimo articolo: mkdir, il comando per creare nuove directory.