Na linha de comando do sistema operacional Unix, o ls (derivado das primeiras consoantes da palavra inglesa list) é um comando usado para listar arquivos e diretórios. Sua função é análoga ao comando dir do MS-DOS.[1]
ls possui chaves que afetam os arquivos que são listados, inclusive o nível do detalhamento, a sua ordem bem como o número de colunas. A maior parte das distribuições Linux, determina padrões para o comando ls. O sistema Red Hat, tem as chaves -q
e -F
habilitadas como padrão. De acordo com a visão de escrita de scripts, não é seguro utilizar o comando ls em um script sem detalhar as chaves adequadas, pois não se pode ter certeza de quais padrões uma determinada distribuição utiliza.[2]
O ls oculta os arquivos que começam com um ponto (.
). Esse é o padrão Linux para arquivos de configuração, arquivos de históricos e de outros tipos dos quais um usuário não estariam interessados em ver. Para visualizar é necessário o uso da chave -A
de all e -a
(absolutely all) para mostrar os arquivos que começam com um ou dois pontos (..
).[2]
Os nomes dos arquivos podem ser exibidos em cores para mostrar qual tipo de arquivos eles são. As cores são determinadas em um arquivo /etc/DIR_COLORS
. É também possível personalizar eles utilizando .dir_colors
no próprio diretório do usuário. O seu formato é descrito em /etc/DIR_COLORS
.[2]
Para não mostrar as cores os arquivos e usar símbolos no lugar delas, deve ser utilizado as chaves -color
e -classify
ou (-F)
. Na maioria das distribuições Linux, esse tipo de função pode ser habilitado usando o comando aliases.[2]
Os símbolos -classify
são diretórios (/
), programas (*
), ligações simbólicas (@
), redirecionamentos (|
) e os arquivos de socket de domínio Unix (=
). Esses símbolos não fazem parte do nome - são dicas sobre o tipo do arquivo. Uma outra chave relevante é o -hide-control-charts
ou o -q
Os nomes dos arquivos podem ter qualquer caractere, incluindo o caractere de controle. Também podem criar um nome de arquivo com caracteres ocultos. Nessa ocasião, não é permitido apagar ou renomeá-lo, ao menos que saiba quais são os caracteres ocultos. Ao contrário do que o nome do comando diz, ele mostra os caracteres não imprimíveis no nome do arquivo como pontos de interrogação, transformando visíveis suas localizações.[2]
Sintaxe
ls <opções>... <lista de arquivos ou diretórios>...
Opções
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
Exemplo de listagem
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/
Notas e Referências