Ls (Unix)
ls è un comando dei sistemi operativi Unix e Unix-like che elenca informazioni su file ed il contenuto delle directory.
Il comando ls è definito nelle specifiche POSIX e dalla Single UNIX Specification.
Storia
Il comando ls è apparso nella versione originale di Unix dell'AT&T. Il suo nome deriva da un analogo comando di Multics che elencava i segmenti di memoria (in Multics file e segmenti di memoria erano tra loro sinonimi).
Al giorno d'oggi esistono varie implementazioni di ls. Due implementazioni particolarmente popolari sono:
- la versione inclusa nel pacchetto GNU Coreutils della Free Software Foundation, disponibile come software libero;
- la versione per le varianti di BSD come FreeBSD, OpenBSD, NetBSD e Darwin per i computer Apple, disponibili come software open source.
Sintassi
La sintassi generale di ls è la seguente:
ls [opzioni] [--] [file_o_directory1 …]
I parametri file_o_directory specificano i file e/o le directory da elencare. In loro assenza sono elencati i file presenti nella directory corrente (ovvero la directory corrente del processo che avvia ls, tipicamente una shell testuale).
Il doppio trattino -- (facoltativo) indica che i parametri successivi non sono da considerarsi opzioni.
Se non indicato diversamente, l'elenco è ordinato alfabeticamente. Se lo standard output di ls è un terminale interattivo, ls produce un elenco compatto dei soli nomi dei file distribuiti su più colonne in modo da occupare la larghezza del terminale, altrimenti (quando ad esempio usato in una pipeline software) produce un elenco dei soli nomi su un'unica colonna (un nome per linea).
Tra le opzioni significative vi sono:
- -a
- Include nell'elenco anche i file e directory il cui nome inizia per punto (che, per convenzione, non sono normalmente mostrati).
- -d
- Elenca le proprietà delle directory specificate come parametri invece di elencare il loro contenuto.
- -n
- Indica proprietario e gruppo assegnato usando rispettivamente lo User identifier ed il Group identifier numerici invece dei loro nomi.
- -l
- Produce un elenco esteso, una linea per ogni file, indicando da sinistra a destra:
- i permessi
- il numero di collegamenti fisici al particolare file o directory
- il proprietario
- il gruppo assegnato
- le dimensioni apparenti in byte (quelle reali possono essere inferiori in caso di file sparsi), oppure il major number ed il minor number che caratterizzano un dispositivo a blocchi o un dispositivo a caratteri
- la data di ultima modifica in forma compatta
- il nome
- in caso di collegamenti simbolici, "->" e la destinazione del collegamento
- -F
- Aggiunge in coda a ciascuno dei nomi dei file elencati un carattere che ne rivela la natura:
- * – indica un file eseguibile
- / – indica una directory
- | – indica una named pipe
- @ – indica un collegamento simbolico
- = – indica un socket in dominio Unix
- I file normali non eseguibili non hanno alcun suffisso.
- -R
- Elenca ricorsivamente anche il contenuto di eventuali subdirectory incontrate.
- -r
- Inverte il senso di ordinamento dell'elenco.
- -t
- Ordina l'elenco per data e ora di ultima modifica anziché alfabeticamente.
In alcuni sistemi l'uso dell'opzione --color (per GNU ls), o -G (FreeBSD ls) fa in modo che ls evidenzi i file con un colore diverso a seconda del loro tipo (a differenza dei caratteri usati dall'opzione -F). Per determinare il colore da usare per un file, GNU ls ne controlla il tipo, i permessi e l'estensione, mentre in FreeBSD viene controllato soltanto il tipo di file ed i permessi. Il risultato potrebbe essere simile al seguente:
brw-r--r-- 1 unixguy staff 64, 64 Jan 27 05:52 block
crw-r--r-- 1 unixguy staff 64, 255 Jan 26 13:57 character
-rw-r--r-- 1 unixguy staff 290 Jan 26 14:08 compressed.gz
-rw-r--r-- 1 unixguy staff 331836 Jan 26 14:06 data.ppm
drwxrwx—x 2 unixguy staff 48 Jan 26 11:28 directory
-rwxrwx—x 1 unixguy staff 29 Jan 26 14:03 executable
prw-r--r-- 1 unixguy staff 0 Jan 26 11:50 fifo
lrwxrwxrwx 1 unixguy staff 3 Jan 26 11:44 link -> dir
-rw-rw---- 1 unixguy staff 217 Jan 26 14:08 regularfile
Visualizzazione dei file nascosti
Il comportamento predefinito di ls nel presentare il contenuto di una directory prevede di non elencare i file e directory il cui nome inizia per punto ("."), ad esempio ".profile" o ".emacs".
Tali file sono detti file nascosti, e per visualizzare anch'essi è necessario usare l'opzione -a.
Uno dei motivi che stanno alla base di questo comportamento deriva dalla grande quantità di file e directory di configurazione che i programmi collocano nelle home directory degli utenti per memorizzare le impostazioni utente, unitamente al fatto che, a differenza ad esempio dei sistemi MS-DOS o Microsoft Windows, non vi è un meccanismo specifico per nascondere dei file con nomi arbitrari.
Il meccanismo dei file nascosti è semplice, ben compreso e rispettato anche dalle interfacce grafiche, e permette di evitare di appesantire inutilmente gli elenchi dei file contenuti nella home directory dell'utente (o di qualsiasi altra directory).
Esempi
Elenca il contenuto della directory corrente con il formato esteso:
$ ls -l totale 44 drwxr—r-- 2 fred fred 48 25 mag 22:11 drafts -r-xr-xr-x 1 fred fred 8460 25 mag 22:12 edit -rw-r--r-- 1 fred fred 30405 25 mag 22:12 edition-32 lrwxrwxrwx 1 fred fred 4 25 mag 22:16 editor -> edit
Elenca il contenuto della directory corrente con il formato esteso visualizzando anche i file nascosti:
$ ls -la totale 60 drwxr-xr-x 4 fred fred 312 25 mag 22:19 . drwxrwsr-x 10 root staff 248 25 mag 22:11 .. -rw-r--r-- 1 fred fred 220 25 mag 22:11 .bash_logout -rw-r--r-- 1 fred fred 414 25 mag 22:11 .bash_profile -rw-r--r-- 1 fred fred 2227 25 mag 22:11 .bashrc drwxr-xr-x 2 fred fred 48 25 mag 22:19 .directory_nascosta drwxr—r-- 2 fred fred 48 25 mag 22:19 drafts -r-xr-xr-x 1 fred fred 8460 25 mag 22:12 edit -rw-r--r-- 1 fred fred 30405 25 mag 22:12 edition-32 lrwxrwxrwx 1 fred fred 4 25 mag 22:16 editor -> edit -rw-r--r-- 1 fred fred 6 25 mag 22:19 .file_nascosto
Elenca il contenuto della directory corrente con il formato compatto e con i caratteri che indicano il tipo di file:
$ ls -F drafts/ edit* edition-32 editor@
Elenca il contenuto della subdirectory drafts col formato esteso:
$ ls -l drafts totale 12 -rw-r--r-- 1 fred fred 8 25 mag 22:21 doc1.txt -rw-r--r-- 1 fred fred 19 25 mag 22:21 doc2.txt -rw-r--r-- 1 fred fred 34 25 mag 22:22 doc3.txt
Elenca la directory drafts in sé invece del suo contenuto:
$ ls -ld drafts drwxr—r-- 2 fred fred 120 25 mag 22:22 drafts/
Elenca gli ultimi dieci file o directory modificati più di recente in una directory molto affollata (più di duemila voci); ls produce l'elenco ordinato per data di modifica, e viene posto in pipeline software con il comando tail per visualizzare solo le ultime dieci linee dell'elenco:
$ ls -lrt /usr/lib | tail -rw-r--r-- 1 root root 1379652 8 mag 20:40 libcrypto.so.0.9.8 -rw-r--r-- 1 root root 2200134 8 mag 20:40 libcrypto.a lrwxrwxrwx 1 root root 15 18 mag 10:18 libssl.so -> libssl.so.0.9.8 lrwxrwxrwx 1 root root 18 18 mag 10:18 libcrypto.so -> libcrypto.so.0.9.8 drwxr-xr-x 4 root root 3280 18 mag 10:18 pkgconfig drwxr-xr-x 2 root root 192 18 mag 10:18 i586 drwxr-xr-x 2 root root 192 18 mag 10:18 i486 lrwxrwxrwx 1 root root 19 18 mag 10:18 sftp-server -> openssh/sftp-server drwxr-xr-x 2 root root 112 18 mag 10:18 openssh drwxr-xr-x 3 root root 136 1 giu 11:14 squeak
Abbreviazioni ed aliases
Su alcuni sistemi (ad esempio predefinitamente in PCLinuxOS), ls può essere abbreviato in "l". Tale comportamento può essere esteso su altri sistemi mediante la creazione di un alias nella shell testuale, di un collegamento simbolico al file eseguibile "/bin/ls", o di uno script chiamato "l" che invochi ls passandogli tutti i suoi parametri.
Note
Voci correlate
- Alias (Unix)
- Chown – Modifica il proprietario ed il gruppo assegnato a file e/o directory.
- Chmod – Modifica i permessi di file e/o directory.
- Chgrp – Cambia il gruppo assegnato a file e/o directory.
- Du (Unix) – Calcola lo spazio occupato dai file.
- Group identifier
- Lspci
- Shell (informatica)
- User identifier
Altri progetti
Altri progetti
- Wikimedia Commons
Wikimedia Commons contiene immagini o altri file su ls
Collegamenti esterni
- (EN) ls: List directory contents, su GNU Coreutils manual. URL consultato il 25 maggio 2008.
- (EN) ls nella wiki di LinuxQuestions.org.
- (EN) ls.c – Codice sorgente dell'implementazione di ls presente in Unix Seventh Edition source code.
- (EN) ls.c – Codice sorgente dell'implementazione di ls presente nella versione 5 di UNIX.
- (EN) newbie ls – Codice sorgente di un'implementazione di ls scritta in modo tale da poter essere compresa facilmente.
- (EN) Codice sorgente di GNU ls – Un componente delle GNU Coreutils.
- (EN) Computer Hope: Linux / UNIX, Informazioni sul comando Linux / UNIX ls., su xmission.com. URL consultato il 7 aprile 2007 (archiviato dall'url originale l'8 marzo 2007).
V · D · M | ||
---|---|---|
File system | cat · cd · chattr · chmod · chown · chgrp · cksum · cmp · cp · du · df · fdisk · file · fsck · fuser · gzip · ln · ls · lsattr · lsof · mkdir · mknod · mount · mv · pwd · rm · rmdir · split · tar · touch · umount · umask | ![]() |
Processi | at · chroot · crontab · exit · kill · killall · nice · nohup · pgrep · pidof · pkill · ps · pstree · sleep · time · top · wait | |
Ambiente utente | alias · env · export · finger · id · logname · mesg · newgrp · passwd · su · sudo · uname · uptime · w · wall · who · whoami · write | |
Elaborazione testo | awk · comm · cut · diff · ed · ex · fmt · head · iconv · join · less · more · paste · sed · sort · tail · tr · uniq · vi · wc · xargs | |
Script di shell | basename · dirname · echo · expr · false · printf · test · true · unset | |
Rete | dig · nslookup · ifconfig · netstat · ping · rcp · rlogin · route · netcat · traceroute | |
Ricerche | find · grep · strings | |
Amministrazione | dmesg · groupadd · groupdel · groupmod · mdadm · shutdown · useradd · userdel · usermod | |
Altri | banner · bc · cal · clear · date · dd · lp · man · size · tee · tput · yes |
![](http://upload.wikimedia.org/wikipedia/commons/thumb/7/77/Computer_n_screen.svg/24px-Computer_n_screen.svg.png)
![](http://upload.wikimedia.org/wikipedia/commons/thumb/1/12/Nuvola_apps_emacs.svg/25px-Nuvola_apps_emacs.svg.png)