O comando LS de A a Z

O comando ls é fundamental para os amantes do uso do terminal. Sem ele, esqueça! Não é possível verificar os arquivos existentes nos diretórios. Sua eficiência está no poder de listar arquivos de diversas formas, bem como listar arquivos em ordem alfabética, arquivos ocultos, entre muitas outras opções.

[ Hits: 246.551 ]

Por: José Cleydson Ferreira da Silva em 19/03/2010


Introdução



O software ls é fundamental para os amantes do uso de terminal. Sem ele, esqueça! Não é possível verificar os arquivos existentes nos diretórios. Sua eficiência está no poder de listar arquivos de diversas formas, bem como listar arquivos em ordem alfabética, arquivos ocultos, apresentar resultados na saída padrão de forma colorida distinguindo subdiretórios de arquivos, entre outras opções. Embora o ls aparente ser um simples comando, suas funcionalidades são de extrema importância e de alta complexidade na manipulação de visualização de arquivos em diretórios, esse software por sua vez possibilita a listagem de arquivos em diretórios por meio do comando ls.

No GNU/Linux há um pacote chamado coreutils que disponibiliza uma série de utilitários importantes para os sistema, como o comando cd para desbravar diretórios, cp para copiar arquivos, mv para mover arquivos e o próprio ls para listar arquivos em diretórios.

Sua licença está vinculada a GNU GPLv3 (General Public License versão 3), o que o caracteriza como um software livre e de código aberto, que dispõe-se das quatro liberdades: usar, estudar, modificar e distribuir.

Atualmente seu desenvolvimento é mantido por Michael Stone (mstone@debian.org). Houve-se casos em que esses comandos não funcionaram ou apresentavam problemas devido a ausência desse pacote. Em seguida iremos conhecer as formas e opções de para a manipulação de listagem de arquivos.
Linux: O comando LS de A à Z

Manipulando o ls

A sintaxe do comando ls consiste em iniciar com o próprio comando seguido de opções ou parâmetros que por sua vez podem representar diversas situações e requisitos. Haverá diversas necessidades de se obter conhecimento de determinado arquivo em diretório, portanto a tabela abaixo apresenta uma série de argumentos e situações que podem ser encontradas no dia-a-dia de administradores de sistemas.

Tabela de parâmetros:

Opção Especificação
-a, --allNão ignora entradas começando com .
-A, --almost-allNão lista as entradas implícitas . e ..
--authorCom -l, emite o autor de cada arquivo
-b, --escapeEmite escapes em octal para caracteres não-gráficos
--block-size=TAMANHOUsa blocos de TAMANHO bytes
-B, --ignore-backupsNão lista as entradas implícitas terminadas com ~
-cCom -lt: ordena por, e mostra, ctime. Com -l: mostra o ctime e ordena por nome
-CLista as entradas em colunas
--color[=QUANDO]Controla se usa cores para distinguir os tipos de arquivo. QUANDO pode ser "never" (nunca), "always" (sempre) ou "auto" (automaticamente)
-d , --directory Lista os diretório em vez de seu conteúdo e não interpreta ligações simbólicas
-D, --diredGera a saída projetada para modo "dired" do Emacs
-f Não ordena, habilita -aU, desabilita -ls --color
-F, --classify Anexa indicador (um dos */=>@|) às entradas
--file-typeSimilar, exceto que não anexa "*"
--format=PALAVRA"across" (-x), "commas" (-m), "horizontal" (-x), "long" (-l), "single-column" (-1), "verbose" (-l), "vertical" (-C)
--full-timeO mesmo que -l --time-style=full-iso
--group-directories-firstLista os diretórios antes de listar os arquivos. Permite usar a opção --sort, mas o uso de --sort=none (-U) desabilita o agrupamento de diretórios.
-G, --no-groupEm lista longa (-l), não emite os nomes de grupo
-h, --human-readableCom -l, emite os tamanhos em formato inteligível
--siSimilar, mas usa potências de 1000, e não de 1024
-H, --dereference-command-lineSegue as ligações simbólicas listadas na linha de comando
--dereference-command-line-symlink-to-dirSegue toda ligação simbólica da linha de comando que apontar para um diretório
--hide=PADRÃONão lista entradas implícitas que coincidam com o PADRÃO em sintaxe shell (ignorado quando se usa -a ou -A)
--indicator-style=PALAVRAAnexa o indicador de tipo no estilo PALAVRA para os nomes das entradas: "none" (nenhum, padrão), "slash" (-p), "file-type" (--file-type), "classify" (-F) "file-type" (--file-type), "classify" (-F)
-i, --inodeEmite o número de índice de cada arquivo
-I, --ignore=PADRÃONão lista as entradas implícitas que coincidam com o PADRÃO (em sintaxe shell)
-kO mesmo que –block-size=1K
-lUsa o formato de lista longa
-L, --dereferenceQuando mostrar informações de uma ligação simbólica, mostra as do arquivo a quem ela referencia, e não do arquivo tipo ligação em si
-mPreenche toda a largura com uma lista de entradas separadas por vírgula
-n, --numeric-uid-gidComo -l, mas lista usuário e grupo em números ID
-N, --literalEmite nomes de entradas de forma crua (não trata, por exemplo, caracteres de controle de forma especial)
-oComo -l, mas não lista informações sobre o grupo
-p, --indicator-style=slashAnexa o indicador / aos diretórios
-q, --hide-control-charsEmite ? ao invés de caracteres não gráficos
--show-control-charsEmite caracteres não gráficos como são (padrão seja um terminal)
-Q, --quote-nameColoca os nomes das entradas entre aspas
--quoting-style=PALAVRAUsa estilo de citação PALAVRA para os nomes das entradas: Palavra = literal, locale, shell, shell-always, c, escape
-r, --reverseInverte a ordem de ordenação
-R, --recursiveLista subdiretórios recursivamente
-s, --sizeMostra o tamanho alocado para cada arquivo, em blocos
--sort=PALAVRAOrdena por PALAVRA em vez de pelo nome: none -U, extension -X, size -S, time -t, version -v (nenhum, extensão, tamanho, hora, versão)
--time=PALAVRACom -l, mostra a hora como PALAVRA em vez do horário de modificação: Palavra: atime -u, access -u, use -u: último acesso, ctime -c, status -c: última modificação; usa o horário especificado como chave de ordenação se --sort=time
--time-style=ESTILOCom -l, emite os horários usando o estilo ESTILO: FORMATO é interpretado como em "date"; se for FORMATO1, FORMATO2, FORMATO1 se aplica a arquivos não recentes, e FORMATO2 aos recentes; se ESTILO tem como prefixo "posix-", ESTILO só faz efeito fora da localidade POSIX
-tOrdena pelo horário de modificação
-T --tabsize=COLAssume paradas de tabulação a cada COLS em vez de 8
-ucom -lt: ordena e exibe por data de acesso com -l: exibe o tempo de acesso e ordena por nome sem nenhum parâmetro, ordena por data de acesso
-UNão ordenar; exibe as entradas na ordem do diretório
-vOrdena pela ordem natural dos números de versão dentro do texto
-w, --width=COLSAssume a largura da tela como COLS
-xLista as entradas por linha em vez de por coluna
-XOrdena por ordem alfabética das extensões das entradas
-Z, --contextEmite qualquer contexto de segurança SELinux de cada arquivo
-1Lista arquivos por linha
--helpExibe a ajuda
--versionInforma a versão


Pode-se encontrar algumas situações em que o uso avançado do comando ls poderá ajudar na resolução de diversas tarefas que aparecem no nosso cotidiano, portanto será necessário conhecer de forma completa ou parcial para que as mesmas possam ser executadas resultando em minimizar esforços ou até mesmo solucionar problemas complexos que se baseavam em detalhes pouco observados.

Há momentos que precisaremos de modificar ou configurar arquivos no sistema que estão ocultos ou até mesmo listar arquivos em diretórios que estão ocultos, vale lembrar que arquivos ocultos e diretórios ocultos começam com um . (ponto) no início. Mas como eu posso encontrar arquivos ocultos em meus sistema? Simples! O seu diretório /home/usuário possui diversos arquivos que são responsáveis por manter as configurações de softwares e perfil do usuário, portanto será necessário usar um parâmetro especial para lista-los, o -a. Dê o seguinte comando no terminal para listar os arquivos e diretórios ocultos.

ls -a
.
.adobe
.aMule
.fontconfig
.profile
...

Como podem ver esse exemplo, os arquivos (o resultado está resumido) e diretório com . (ponto) estão ocultos, que naturalmente não estão visíveis na HOME do usuário. A opção -b apresenta na saída padrão todos os arquivos que contém escapes. Escapes são caracteres não gráficos que separam as palavras no nome de arquivos. Por exemplo: quando vemos arquivos em modo gráfico naturalmente não vemos os caracteres de escapes, se víssemos o nome do arquivo em modo gráfico seria visto da seguinte maneira:

Visto em modo gráfico:

Implementando Servidor de Aplicações PHP com Zend Framework.odt

Em modo texto com a opção -b:

Implementando\ Servidor\ de\ Aplicações\ PHP\ com\ Zend\ Framework.odt

Portanto essa opção é valida para situações em que é necessário verificar quais arquivos possuem caracteres de escapes.

Em algumas distribuições GNU/Linux o comando ls não faz distinção de cores em arquivos e diretórios, porém o parâmetro --color pode ter três argumentos: nunca colorir (none), sempre colorir (always), colorir automaticamente, que exige o parâmetro auto e surtirá efeito desde que a saída padrão esteja associada a um terminal (tty).

Sendo assim o comando "ls --color=none" não fará a distinção de cores, para que isso aconteça é preciso usar o argumento always da seguinte forma: "ls --color=always" ou usar a opção auto.

Similar e mais complexo que o parâmetro none, podemos usar a "ls -f", que desabilitará o suporte a cores e exibirá arquivos ocultos, nada mais é do que a junção de "ls -aU" e "ls --color=none". Também com a opção -F pode-se anexar indicadores nos arquivos classificando-os com símbolos que pode caracterizar arquivos e diretórios, os caracteres usados são:
  • * - Arquivos executáveis
  • / - Para diretórios
  • > - Aponta de onde está vindo link simbólico
  • @ - Para link simbólico
  • = - Soquete

Utilizando o comando "ls --classify" ele informará no final do arquivo em qual classe se em enquadra o arquivo, por isso é importante saber os caracteres acima. A opção --file-type possui o mesmo papel, porém não exibe os arquivos executáveis. Usar o --format=Palavra exigirá o uso de argumentos que podem corresponder a opções de separação por vírgula (commas), ordenar em uma única (1), como mostra a tabela abaixo:

ArgumentoExemplo
"across" (-x)ls --format= across
"commas" (-m)ls --format= commas
"horizontal" (-x)ls --format= horizontal
"long" (-l)ls --format=long
"single-column" (-1)ls --format=single-column
"verbose" (-l)"ls --format= verbose
"vertical"ls --format= vertical


A opção --full-time é semelhante à opção -l, mas não lista o dono do arquivo.

Na maioria das situações nos deparamos com a necessidade de saber qual é o tamanho dos arquivos, seja para fazer uma transferência via rede, ou movê-lo para um outro diretório qualquer, neste caso a opção -h irá acrescentar uma coluna na saída padrão do comando contendo o tamanho do arquivo, porém é necessário usar o parâmetro -l para que a coluna apareça. Abaixo se as opções de uso e os respectivos argumentos:

O argumento -i refere-se ao número de índice de cada arquivo no sistema que são chamados de inodes, ou seja, cada arquivo é identificado por um número. Eles estão em um local reservado em seu disco rígido. Na figura abaixo a primeira coluna mostra o número identificador do arquivo.
Linux: O comando LS de A à Z
Podemos usar argumentos para verificar o tamanho de arquivos desejados. Especificando o tamanho do arquivo podemos encontrar dentre vários arquivos um arquivo com o tamanho especificado. Por exemplo: entre vários arquivos em um diretório é possível listar somente os que possuem tamanho de 10k com o seguinte argumento --block-size=10K.

Descrever o uso do tradicional parâmetro -l é bem simples, embora seu resultado na saída padrão mostra-nos uma série de informações avançadas a respeito do arquivo. Possui o parâmetro -l, por caracterizar uma lista longa com formatos colunares. Em casos de necessidade de obter-se o resultado na saída padrão em formato de separação por vírgula (;) usa-se o parâmetro -m, como de costume o uso do formato colunar na saída padrão, essa opção é obtida de forma linear na saída padrão.

Pode-se usar várias formas na saída padrão e portanto podemos colocar na saída padrão o caractere entre aspas duplas usando o parâmetro -Q, esse tipo de procedimento pode ser usado em scripts que envolvam a possibilidade de usar os caracteres para algum fim específico.

A ordem de listagem pode ser apresentada de forma recursiva usando a opção de -r e -R. Também há a possibilidade de verificar o tamanho do espaço em disco reservado para o arquivo, a saída padrão é ordenada pelo tamanho do arquivo caso utilize a opção -s. Se houver a necessidade de ordenar a coluna por horário de modificação pode-se usar o parâmetro -t.

Também há um interessante parâmetro, o -Z, que referencia qualquer contexto de segurança SELinux de cada arquivo.

Finalizando, geralmente a exibição na saída padrão é feita em colunas que possuem informações importantes, bem como data e hora de alteração, usuário e grupo em que pertence o arquivo ou diretório, entre outras informações, dependendo da opção que subsequente ao comando.

Usualmente escrever comandos extensos podem nos custar tempo e esforço, portando pode-se customizar essas tarefas colocando comandos complexos em comandos curtos chamados alias. Um modelo pré-definido pode ser encontrado dentro do arquivo de configuração global para o alias no final do arquivo /root/.bashrc, como mostra o exemplo abaixo.

# some more ls aliases
#alias ll='ls -l'
#alias la='ls -A'
#alias l='ls -CF'

# enable programmable completion features (you don't need to enable
# this, if it's already enabled in /etc/bash.bashrc and /etc/profile
# sources /etc/bash.bashrc).
#if [ -f /etc/bash_completion ]; then
#    . /etc/bash_completion
#fi

Existem várias formas de se obter resultados de listagem de diretórios com o ls, bastando que os parâmetros sejam anexados um ao outro para obter um relatório contextualizado a sua necessidade. Em caso de necessidades de se obter algum tipo de informação pode-se usar o parâmetros de ajuda do próprio programa:

ls --help

O download desse arquivo pode ser feito aqui:

Sobre o autor

José Cleydson Ferreira da Silva
Técnico em Tecnologia da Informação formado pela Escola Técnica de Viçosa-MG (ETEV), Bacharelando em Sistemas de Informação - FDV Viçosa-MG, usuário do GNU/Linux por filosofia, acredito que os padrões abertos podem mudar os rumos do mercado de TI.

Contatos:

Web site: www.cleysinho.blogspot.com
Web site: www.gnu-lia.org
Email, gtalk: cleysinhonv@gmail.com
Twitter: @cleysinhonv
Outros artigos: http://www.vivaolinux.com.br/artigos/userview.php?login=cleysinhonv

   

Páginas do artigo
   1. Introdução
Outros artigos deste autor

Compiz e as estações do ano

Bing: Medindo velocidade da conexão no Linux

[Estudo de caso] Ferramentas Open Source tem sido um caso de sucesso na Biotecnologia e Bioinformática

Os novos plugins do Compiz

Implementando servidor web Java com Tomcat no Linux

Leitura recomendada

Como instalar pacotes no Sabayon

Compiz e as estações do ano

Isoqlog no Debian - Analisando os logs do seu MTA

Instale já o Audacity na sua máquina!

Shockwave Plugin no Linux via Wine

  
Comentários
[1] Comentário enviado por paulinhoart em 19/03/2010 - 14:44h

Excelente..Parabens Cleydson, obrigado

[2] Comentário enviado por albfneto em 19/03/2010 - 15:05h

é muito bom! útil aos avançados e também aos iniciantes.
o comando ls é importantíssimo, como cd, cp, mv e rm.... os mais essenciais comandos dos nossos Linux!

[3] Comentário enviado por cleysinhonv em 19/03/2010 - 16:04h

Olá Paulo Roberto, Alberto Neto

Esses comandos sem dúvida são os que "tormam o uso do terminal" viável sem ele o que seriam de nós, são simples e possuem um serie de parâmetros que nos dá avançadas formas no momento em que esstamos explorando os diretórios.

Obrigado um abraço!

[4] Comentário enviado por removido em 19/03/2010 - 17:41h

muito bom

[5] Comentário enviado por cleysinhonv em 19/03/2010 - 17:45h

Valeu Cehasli!

[6] Comentário enviado por meinhardt_jgbr em 20/03/2010 - 12:33h

Parabéns pelo conteúdo publicado!!
Digno de manter salvo em local de fácil acesso para consulta rápida.

[7] Comentário enviado por cleysinhonv em 20/03/2010 - 14:32h

Olá meinhardt,

Obrigado, espero escrever mais artigos dessa natureza!

Um abraço!

[8] Comentário enviado por Teixeira em 20/03/2010 - 19:05h

Muito bom e bastante didático.
Vai para os meus favoritos e servirá de "livro de cabeceira".
Afinal, no Basic Linux é interessante fazermos aliases, que facilitam bastante a nossa vida.

[9] Comentário enviado por cleysinhonv em 21/03/2010 - 14:54h

Olá Teixeira,

É bom escevemos artigos didaticos, fica mais fácil no entendimento de quem o lê.
Um abraço!

[10] Comentário enviado por lcnrj em 17/10/2010 - 08:07h

Olá! Sabe se tem como o comando listar mostrar apenas os cinco primeiros arquivos de uma pasta ou um intervalo de arquivos, tipo, dos quinto ao sexto arquivo da pasta?

[11] Comentário enviado por kurtz01 em 07/05/2011 - 10:59h

Muito bom o artigo

[12] Comentário enviado por krllus em 09/06/2011 - 10:28h

otimo post mas...
preciso de uma ajudinha. assim preciso listar os arquivos em um txt, porem apenas o nome do arquivo nao sua extensao. alguem me ajuda

[13] Comentário enviado por marcosnakamine em 15/10/2012 - 10:18h

Ótimo artigo

[14] Comentário enviado por souzarm em 24/11/2012 - 11:54h

Obrigado!

Excelente artigo.
Tudo foi muito bem detalhado.

[15] Comentário enviado por blogodorio em 21/12/2016 - 20:20h

Cara, não dá pra ler direito com seus anúncios...!

[16] Comentário enviado por lord_tatu em 16/03/2017 - 21:41h

Excelente! muito obrigado

[17] Comentário enviado por danielbf em 04/02/2021 - 21:24h

Parabens pelo artigo!!


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts