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
editarls <opções>... <lista de arquivos ou diretórios>...
Opções
editarO 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
editarEste 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
editarNã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`