Como usar o comando ls para listar arquivos e diretórios no Linux

Uma janela de terminal em um laptop Linux.
Fatmawati Achmad Zaenuri / Shutterstock

Usamos o lscomando Linux todos os dias sem pensar nisso. É uma pena. Preste atenção e você encontrará muitas opções úteis – incluindo algumas que você deve adicionar ao seu arsenal de linha de comando.

ls lista arquivos e diretórios

O ls comando é provavelmente o primeiro comando que a maioria dos usuários do Linux encontra. Aqueles de nós que usam a linha de comando a usam dia após dia, sem nem mesmo pensar a respeito. Isso pode explicar por que esse comando é mais do que a maioria dos usuários imagina. Listamos arquivos com ele para ver o que há em um diretório. Listamos arquivos em formato longo quando desejamos verificar as permissões de um arquivo. Além disso, recebe pouca consideração.

O lscomando é um daqueles comandos com inúmeras opções. Talvez isso seja parte do problema. Existem tantas opções, como você as examina para encontrar as úteis? E tendo-os encontrado, como você se lembra deles?

Permutações úteis do lscomando com suas cadeias de opções e parâmetros são os candidatos perfeitos para aliases . Na verdade, na maioria das distribuições, o que você chama de lscomando “nu” é na verdade um apelido. Entre outras coisas, o type comando pode ser usado para mostrar a definição subjacente de apelidos . Vejamos a definição de ls:

tipo ls

digite ls em uma janela de terminal

Os --color=autoparâmetros são incluídos automaticamente sempre que você usa o lscomando. Isso é o que fornece as diferentes cores para os diferentes tipos de arquivo nas listas.

Listagens ls simples

Todo mundo que já passou algum tempo usando o terminal Linux sabe que, por padrão, lslista os arquivos e diretórios no diretório atual.

ls

está em uma janela de terminal

Se você deseja que sua listagem seja produzida em uma única coluna, use a opção -1(um arquivo por linha):

ls -1

ls -1 em uma janela de terminal

Discutiremos esse nome de arquivo de aparência estranha no topo da lista em um minuto.

Usando ls em diretórios diferentes

Para lslistar os arquivos em um diretório diferente do diretório atual, passe o caminho para o diretório lsna linha de comando. Você também pode passar mais de um diretório para lse listá-los um após o outro. Aqui, estamos pedindo lspara listar os arquivos em dois diretórios, um chamado “Help” e o outro chamado “gc_help”.

ls Help gc_help

ls Help gc_help em uma janela de terminal

Quando lstiver listado o conteúdo do primeiro diretório, ele listará o conteúdo do segundo. Ele imprime o nome de cada diretório à medida que os processa:

Nome do diretório sendo exibido por ls antes que o conteúdo seja listado.

Usando padrões de arquivo

Para listar seletivamente um conjunto de arquivos, use a correspondência de padrões. O ponto de interrogação “ ?” representará qualquer caractere único e o asterisco “ *” representará qualquer sequência de caracteres. Para listar quaisquer arquivos ou diretórios que tenham nomes começando com “ip_”, use este formato:

ls ip_ *

ls ip_ * em uma janela de terminal

Para listar arquivos com extensões “.c”, use este formato:

ls * .c

ls * .c em uma janela de terminal

Você também pode usar lscom grepe uso grepde recursos de padrão de correspondência . Vamos procurar qualquer arquivo que tenha a string “_pin_” no nome:

ls | grep _pin_

ls |  grep _pin_ em uma janela de terminal

Isso é quase o mesmo que usar lssozinho, com dois curingas:

ls | grep _pin_
ls * _pin_ *

ls |  grep _pin_ em uma janela de terminal

Por que  quase o mesmo? Observe os diferentes layouts. grepforça a saída para um único nome de arquivo por formato de linha.

Recomendado:  Como medir mais do que etapas usando o aplicativo de saúde do iPhone

Caracteres não imprimíveis

É possível encontrar um nome de arquivo que tenha um caractere não imprimível ou de controle em seu nome. Normalmente, isso pode acontecer quando você expande um arquivo que baixou da web ou recuperou um repositório git , e o autor original cometeu um erro ao criar um arquivo, mas não o localizou.

Nosso arquivo estranho é um destes:

Nome do arquivo com caractere de controle em uma janela de terminal

Se olharmos para ele no navegador de arquivos e pressionarmos “F2” para renomeá-lo, os caracteres não imprimíveis são representados por um símbolo estranho.

Nome do arquivo com um caractere de controle, na janela de diálogo de renomeação

Você pode usar a -bopção (escape) para permitir que você veja o que o nome do arquivo realmente contém. Esta opção faz lscom que use as sequências de escape da linguagem de programação C para representar os caracteres de controle.

ls -ba *

ls -ba * em uma janela de terminal

O personagem misterioso é revelado como um personagem de nova linha, representado em C como “\ n”.

Ignorando arquivos

Para omitir certos arquivos de uma lista, use a --hideopção. Suponha que você não queira ver os arquivos “.bak” de backup na lista. Você pode usar este comando:

ls
ls --hide = *. bak

ls --hide = *. bak em uma janela de terminal

Os arquivos “.bak” não estão incluídos na segunda lista.

A lista de formato longo

A opção -l(lista longa) lsfornece informações detalhadas sobre cada arquivo.

ls -l

ls -l em uma janela de terminal

Há muitas informações aqui, então vamos examiná-las.

A primeira coisa a ser lsexibida é o tamanho total de todos os arquivos da listagem. Em seguida, cada arquivo ou diretório é exibido em uma linha por si só.

O primeiro conjunto de dez letras e travessões é o tipo de arquivo e o proprietário, grupo e outras permissões de arquivo.

O primeiro caractere representa o tipo de arquivo. Será um dos seguintes:

  • : Um arquivo normal.
  • b : Um arquivo especial de bloco.
  • c : Um arquivo especial de caracteres.
  • d : um diretório.
  • l : Um link simbólico.
  • n : um arquivo de rede.
  • p : Um pipe nomeado.
  • s : um soquete.

Os próximos nove caracteres são três grupos de três caracteres exibidos de forma contígua. Cada grupo de três representa as permissões de leitura, gravação e execução, nessa ordem. Se a permissão for concedida, haverá uma r, wou xpresente. Se a permissão não for concedida, um hífen -será mostrado.

Recomendado:  Como carregar os controladores Oculus Quest 2

O primeiro conjunto de três caracteres são as permissões para o proprietário do arquivo. O segundo conjunto de três permissões é para membros do grupo e o último conjunto de três permissões é para outros.

Às vezes, a permissão de execução para o proprietário é representada por um s. Este é o bit setuid . Se estiver presente, significa que o arquivo é executado com os privilégios do proprietário do arquivo, não do usuário que está executando o arquivo.

A permissão de execução para o grupo também pode ser um s. Este é o bit setgid . Quando isso é aplicado a um arquivo, significa que o arquivo será executado com os privilégios do grupo da ower. Quando usado com um diretório, qualquer arquivo criado dentro dele terá suas permissões de grupo do diretório em que estão sendo criados, não do usuário que está criando o arquivo.

A permissão de execução para os outros às vezes pode ser representada por a t. Esta é a parte pegajosa . Geralmente é aplicado a diretórios. Se isso for definido, independentemente dos privilégios de gravação e executável definidos nos arquivos no diretório, apenas o proprietário do arquivo, o proprietário do diretório ou o usuário root podem renomear ou excluir arquivos no diretório.

Um uso comum para o sticky bit é em pastas como “/ tmp”. Todos os usuários do computador podem gravá-lo. A parte fixa no diretório garante que os usuários – e os processos iniciados pelos usuários – só possam renomear ou excluir seus próprios arquivos temporários.

Podemos ver o sticky bit no diretório “/ tmp”. Observe o uso da -dopção (diretório). Isso faz lscom que o relatório sobre os detalhes do diretório. Sem esta opção, lsirá relatar sobre os arquivos dentro do diretório.

ls -l -d / tmp

ls -l -d / tmp em uma janela de terminal

O número após as permissões é o número de links físicos para o arquivo ou diretório. Para um arquivo, geralmente é um, mas se outros links físicos forem criados, esse número aumentará. Um diretório normalmente tem pelo menos dois links físicos. Um é um link para ele mesmo e o outro é sua entrada no diretório pai.

O nome do proprietário e do grupo são exibidos a seguir. Eles são seguidos pelo tamanho do arquivo e pela data da última modificação do arquivo. Finalmente, o nome do arquivo é fornecido.

Tamanhos de arquivo legíveis por humanos

Nem sempre é conveniente ter os tamanhos dos arquivos em bytes. Para ver os tamanhos dos arquivos nas unidades mais adequadas (Kilobytes, Megabytes, etc.), use a opção -h (legível):

ls -l -h

ls -l -h em uma janela de terminal

Mostrando arquivos ocultos

Para ver os arquivos ocultos, use a -aopção (todos):

ls -l -a

ls -l -a em uma janela de terminal

As duas entradas “.” e “..” representam o diretório atual e o diretório pai, respectivamente. Um arquivo chamado “.base_settings” agora está visível pela primeira vez.

Omitindo. e .. de listagens

Se você não quiser que sua listagem seja desordenada com o “.” e entradas “..”, mas você deseja ver os arquivos ocultos, use a opção -A(quase todos):

ls -l -A

ls -l -A em uma janela de terminal

O arquivo oculto ainda está listado, mas o “.” e as entradas “..” são suprimidas.

Recomendado:  Thunderbird compartilha a primeira espiada na atualização “Supernova”

Listagem de diretórios recursivamente

Para lslistar os arquivos em todos os subdiretórios, use a -Ropção (recursiva)

ls -l -R

ls -l -R em uma janela de terminal

ls percorre toda a árvore de diretórios abaixo do diretório inicial e lista os arquivos em cada subdiretório.

saída de ls que lista diretórios recursivamente

Exibindo o UID e GID

Para que o ID do usuário e o ID do grupo sejam exibidos em vez do nome do usuário e do grupo, use a opção -n(uid e gid numéricos).

ls -n

ls -n em uma janela de terminal

Classificando as listas

Você pode classificar a lista por extensão, tamanho do arquivo ou hora de modificação. Essas opções não precisam ser usadas com o formato de lista longa, mas geralmente faz sentido fazer isso. Se você estiver classificando por tamanho de arquivo, faz sentido ver os tamanhos dos arquivos na lista. Quando você está classificando por tipo de extensão, o formato de lista longa não é tão importante.

Para classificar por extensão, use a opção -X(classificar por extensão).

ls -X -1

ls -X -1 em uma janela de terminal

Os diretórios são listados primeiro (sem extensões) e o restante segue em ordem alfabética, de acordo com as extensões.

Para classificar por tamanho de arquivo, use a opção -S(classificar por tamanho de arquivo).

ls -l -h -S

ls -l -h -S em uma janela de terminal

A ordem de classificação é do maior para o menor.

Para classificar a lista por hora de modificação, use a opção -t(classificar por hora de modificação).

ls -l -t

ls -l -t em uma janela de terminal

A lista é classificada pela hora da modificação.

Se a hora de modificação do arquivo estiver dentro do ano atual, as informações exibidas são o mês, o dia e a hora. Se a data de modificação não estava no ano atual, as informações exibidas são o mês, o dia e o ano.

Uma maneira rápida de obter os arquivos mais novos e mais antigos em um diretório é usar lscom os comandos heade tail.

Para obter o arquivo ou diretório mais recente, use este comando:

ls -t | cabeça -1

Para obter o arquivo ou diretório mais antigo, use este comando:

ls -t | cauda -1

ls -t |  head -1 em uma janela de terminal

Para reverter a ordem de classificação

Para reverter qualquer uma das ordens de classificação, use a -ropção (reverter).

ls -l -h -S -r

ls -l -h -S -r em uma janela de terminal

A listagem agora está ordenada do menor arquivo para o maior.

E tem mais

Confira a página de homem para lsexistem muitas mais opções . Alguns deles satisfazem casos de uso um tanto obscuros, mas de vez em quando, você ficará feliz em saber sobre eles.

Você precisa ver os carimbos de data / hora do arquivo com a precisão máxima que o Linux pode fornecer? Use a opção de tempo integral:

ls - tempo integral

Talvez você queira ver o número de inode dos arquivos? Use a opção inode:

ls -i

Você está trabalhando em uma tela monocromática e deseja eliminar todo o risco de confundir arquivos para diretórios e links? Use a opção de classificação e lsacrescentará uma delas a cada entrada da lista:

  • / : Um diretório.
  • @ : Um link simbólico.
  • | : Um pipe nomeado.
  • = : Um soquete.
  • * : Um arquivo executável
ls -F

Faça alguma escavação. Você descobrirá que lsé uma veia rica e continuará encontrando joias.