Guia do Linux/Iniciante+Intermediário/Comandos diversos/ls

Na linha de comando do sistema operacional Unix, o ls é um comando usado para listar arquivos e diretórios. Sua função é análoga ao comando dir do MS-DOS.

Este comando pode obter informações sobre o nome do arquivo, seu tamanho e sua data de modificação. Informações sobre seu tipo são obtidas pelo comando file.

O comando ls é um programa por si só, enquando que o dir do MS-DOS está embutido no interpretador de comandos.

Alguns linuxes, como o por exemplo Ubuntu, têm um comando dir semelhante ao ls.

Sintaxe

editar
ls <opções>... <lista de arquivos ou diretórios>...

Opções

editar

O comando ls possui inumeras opções, de entre elas as mais comuns são:

* -a, --all                  não esconde ficheiros começados por .
* -A, --almost-all           não mostra os ficheiros implicitos . e ..
* -d, --directory            lista os nomes dos directorios em vez do seu conteudo
* -l                         usa o formato lista longa (com mais detalhes)
* -full                      usa o formato lista longa (com mais detalhes) e sem esconder os ficheiros começados por .
* -t                         ordena por data
* -r                         inverte a ordem
* -R, --recursive            lista subdiretórios recursivamente
* -h, --human-readable       lista tamanhos em formato legível para humanos (por exemplo, 1K 234M 2G)

Exemplo de listagem

editar

Este exemplo foi tirado de uma máquina Linux (com Mandrake 10.1):

[root@linux /]# ls
bin/   dev/  home/    lib/  opt/   root/  sys/  usr/
boot/  etc/  initrd/  mnt/  proc/  sbin/  tmp/  var/  

[root@linux /]# ls -a
./   .autofsck  boot/  etc/   initrd/  mnt/  proc/  root/  sys/  usr/
../  bin/       dev/   home/  lib/     opt/  .rnd   sbin/  tmp/  var/

[root@linux /]# ls -A
.autofsck  boot/  etc/   initrd/  mnt/  proc/  root/  sys/  usr/
bin/       dev/   home/  lib/     opt/  .rnd   sbin/  tmp/  var/

[root@linux /]# ls -l
total 52
drwxr-xr-x   2 root root 4096 Dez 30  2004 bin/
drwxr-xr-x   3 root root 4096 Jan 10  2005 boot/
drwxr-xr-x  16 root root 3420 Jan 10  2005 dev/
drwxr-xr-x  61 root root 4096 Jan 15  2005 etc/
drwxr-xr-x   3 root root 4096 Dez 30  2004 home/
drwxr-xr-x   2 root root 4096 Dez 30  2004 initrd/
drwxr-xr-x  13 root root 4096 Jan 10  2005 lib/
drwxr-xr-x   4 root root 4096 Jan  5  2004 mnt/
drwxr-xr-x   2 root root 4096 Jan  5  2004 opt/
dr-xr-xr-x  70 root root    0 Jan 10  2005 proc/
drwx------   8 root root 4096 Jan  5  2005 root/
drwxr-xr-x   2 root root 4096 Jan  5  2005 sbin/
drwxr-xr-x   9 root root    0 Jan 10  2005 sys/
drwxrwxrwt   5 root root 4096 Dez  2 07:11 tmp/
drwxr-xr-x  12 root root 4096 Dez 30  2004 usr/
drwxr-xr-x  20 root root 4096 Dez 30  2004 var/

Nos sistemas Unix, as opções podem ser agrupadas, usando várias em conjunto

[root@linux /]# ls -la
total 64
drwxr-xr-x  18 root root 4096 Jan 10  2005 ./
drwxr-xr-x  18 root root 4096 Jan 10  2005 ../
-rw-r--r--   1 root root    0 Jan 10  2005 .autofsck
drwxr-xr-x   2 root root 4096 Dez 30  2004 bin/
drwxr-xr-x   3 root root 4096 Jan 10  2005 boot/
drwxr-xr-x  16 root root 3420 Jan 10  2005 dev/
drwxr-xr-x  61 root root 4096 Jan 15  2005 etc/
drwxr-xr-x   3 root root 4096 Dez 30  2004 home/
drwxr-xr-x   2 root root 4096 Dez 30  2004 initrd/
drwxr-xr-x  13 root root 4096 Jan 10  2005 lib/
drwxr-xr-x   4 root root 4096 Jan  5  2004 mnt/
drwxr-xr-x   2 root root 4096 Jan  5  2004 opt/
dr-xr-xr-x  73 root root    0 Jan 10  2005 proc/
-rw-------   1 root root 1024 Dez 30  2004 .rnd
drwx------   8 root root 4096 Jan  5  2005 root/
drwxr-xr-x   2 root root 4096 Jan  5  2005 sbin/
drwxr-xr-x   9 root root    0 Jan 10  2005 sys/
drwxrwxrwt   5 root root 4096 Dez  2 07:11 tmp/
drwxr-xr-x  12 root root 4096 Dez 30  2004 usr/
drwxr-xr-x  20 root root 4096 Dez 30  2004 var/

Exemplo

editar

Não existe nenhum comando simples do Linux que obtém apenas a data ou apenas o tamanho do arquivo - mas, com um pouco de prática, é possível simular estas operações usando bash.

Por exemplo, seja $arq a variável que contém o nome de um arquivo (que existe). Então o comando:

ls $arq -lt --time-style=full-iso

lista informações sobre tamanho e data do arquivo. Estas informações, porém, estão desorganizadas, sendo necessário extraí-las desta linha. O comando cut é ideal para isto. Assim, obtém-se a data do arquivo (formato ISO, ideal para comparar, já que as datas vem sortadas em ordem lexicográfica) com:

data_arq=`ls $arq -lt --time-style=full-iso | cut -d" " -f 6,7`

e o tamanho do arquivo com:

tam_arq=`ls $arq -lt --time-style=full-iso | cut -d" " -f 5`

Ver também

editar
 
Wikipedia
A Wikipédia tem mais sobre este assunto:
Ls