Comando Linux ls: Elenca File e Directory

Il comando ls in Linux mostra un elenco di file e sottodirectory in una directory. Usando ls -la, puoi vedere informazioni dettagliate inclusi elementi nascosti, permessi, proprietario, dimensione e ora di modifica.

Elenca la directory corrente o un percorso specificato

L'esecuzione del seguente comando nel terminale mostra gli elementi nella directory di lavoro corrente. La posizione corrente può essere verificata con pwd.

pwd
ls

Per visualizzare il contenuto di un'altra directory, specifica il percorso. È possibile utilizzare sia percorsi assoluti sia percorsi relativi basati sulla posizione corrente.

ls /var

Per impostazione predefinita, gli elementi nascosti il cui nome inizia con un punto sono esclusi dall'elenco. Il nome e l'ordine di visualizzazione dipendono dalle impostazioni del sistema e della lingua. ls è un comando per leggere l'elenco e non elimina né modifica i file.

Visualizza elementi nascosti e informazioni dettagliate

-a include i nomi che iniziano con un punto, e -l visualizza in formato dettagliato. Puoi usare entrambe le opzioni insieme.

ls -a
ls -l
ls -la

ls -a mostra anche . per la directory corrente e .. per la directory genitore. GNU ls -A visualizza gli elementi nascosti ma omette queste due voci. Per mostrare le dimensioni in unità leggibili dall'uomo, aggiungere -h all'elenco dettagliato.

ls -lah

Ad esempio, può essere visualizzato come 1K, 2M. L'output varia a seconda dei file di destinazione e delle impostazioni del sistema.

Lettura di un elenco dettagliato

Il seguente è un esempio che mostra un file normale. Il formato della data, i nomi e i numeri variano a seconda dell'ambiente effettivo.

-rw-r--r-- 1 user group 12 Jan 15 10:30 notes.txt
  • -rw-r--r--: Il primo carattere - è un file normale, e il resto indica i permessi per il proprietario, il gruppo e gli altri. Se inizia con d, è una directory; se inizia con l, è un collegamento simbolico.
  • 1 user group: Numero di collegamenti fisici, proprietario e gruppo proprietario.
  • 12: Dimensione del file (in byte) nella lista dettagliata di base. Usando -h verrà cambiata in un'unità facilmente leggibile.
  • Jan 15 10:30 notes.txt: Per impostazione predefinita, l'ultima data di modifica e il nome. Il formato dell'output dipende dalla localizzazione e dalle opzioni.

La voce di dimensione di una directory non è la somma delle dimensioni dei file al suo interno. Per controllare l'utilizzo del disco dell'intera directory, usa uno strumento come du. Il target del collegamento viene solitamente mostrato in forma name -> target nell'elenco dettagliato.

Controllare l'ordinamento e la directory stessa

-t ordina per impostazione predefinita dalla data di modifica più recente. Usare -r insieme invertirà l'ordine.

ls -lt
ls -ltr

Per controllare i permessi e il proprietario della directory stessa, non dell'elenco al suo interno, usa -d.

ls -ld /var

-R elenca ricorsivamente anche le sottodirectory, quindi l'output può essere grande per alberi di directory grandi. Consulta manuale GNU ls o man ls per significati dettagliati delle opzioni.

Restringere l'elenco con un modello di nome

In Bash, l'asterisco * è un modello di nome che corrisponde a zero o più caratteri. Il seguente comando trova gli elementi in /etc i cui nomi terminano con .conf.

ls -d /etc/*.conf

La shell prima espande i nomi che corrispondono al modello e poi li passa a ls. Poiché è stato inserito -d, mostra il nome della directory stessa anche quando un elemento corrispondente è una directory. Nelle impostazioni tipiche di Bash, gli elementi nascosti che iniziano con un punto non corrispondono automaticamente. Se non ci sono nomi corrispondenti, il risultato può variare a seconda delle opzioni della shell, come un errore o il modello passato così com'è.

Se il percorso contiene spazi, metti il percorso tra virgolette come ls "my folder". Generalmente, se metti tra virgolette anche il modello, la shell non espande l'asterisco. Per dettagli, vedi Documento di espansione dei nomi dei file di Bash.

Controllo dei dispositivi disco e degli errori

ls -l /dev/sd* può mostrare un elenco che corrisponde ai file dei dispositivi che iniziano con il nome sd. Tuttavia, non tutti i dischi e le partizioni usano questo nome. Altri dispositivi, come NVMe, possono mancare dall'elenco, quindi è più appropriato usare lsblk quando si esaminano dispositivi a blocchi e la loro gerarchia.

lsblk

Se l'elenco non appare o viene visualizzato Permission denied, controllare l'esistenza del percorso e i permessi di accesso. Se l'output differisce da quanto ci si aspetta, verificare l'alias della shell come type ls e rivedere anche le descrizioni delle opzioni della distribuzione e ls --help.