Linha de Comando em Linux: Find – Parte 02, Opções Verdadeiras -H -L -P

Na parte 01  vimos a estrutura do comando find.

find + opções verdadeiras + opções de depuração ou debug +  níveis de otimização + caminho da pasta a ser pesquisa + expressões:

find [-H] [-L] [-P] [-D debug_opções] [-O nível] [Caminho…] [expressão] 

Como dito anteriormente, como find contem opções tanto antes do caminho como nas expressões, a man page denomina de “opções verdadeiras” as que vêm  antes  do caminho.

A explicação das opções verdadeiras já foi feita no post anterior. Aqui irei apenas praticá-las.

Iremos realizar laboratório dessa ferramenta por partes. Começaremos com as opções verdadeiras -H, -L, -P.

Ambiente de Trabalho

Trabalharei dentro da pasta  “/home/elder/Labs” que tem os seguintes aquivos:

/home/elder/Labs/
├── .arquivoOculto.txt
├── link_para_tree -> ./tree.html
├── link_para_tree02_quebrado -> ./tree02.html
├── lista_de_nomes_LINK.txt -> /home/elder/Labs/pastaLabs/lista_de_nomes.txt
├── .pasta
├── pastaLabs
│   └── lista_de_nomes.txt
├── tree.html
└── Tree.html

Obs.: Poderia usar cd para acessar a caminho   “/home/elder/Labs”  e asssim não precisar digitá-lo, mas para facilitar propositadamente irei ficar digitando. Lembrando que  posso substituir   “/home/elder/Labs”   por “~/Labs” 🙂

 

 

Opções verdadeiras para Links Simbólicos: -H, -L, -P

 

Como sabemos, por padrão, find nunca segue links simbólicos. Isto é, ele exibe informações do link e não do arquivo para o qual o link aponta.

  1. Dentro do caminho “/home/elder/Labs” encontre arquivos com “lista_de_arquivos” em seus nomes. Use -name para o nome do arquivo e -ls para listar suas propriedades.
    [elder@centos65 ~]$ find  /home/elder/Labs/  -name "lista_de_nomes*"   -ls
    136534    0 -rw-rw-rw-   1 elder    elder           0 Out 24 11:46 /home/elder/Labs/pastaLabs/lista_de_nomes.txt
      6475    0 lrwxrwxrwx   1 elder    elder          45 Out 24 11:47 /home/elder/Labs/lista_de_nomes_LINK.txt -> /home/elder/Labs/pastaLabs/lista_de_nomes.txt

    O segundo arquivo encontrado é um link simbólico. Se abrirmos o arquivo “lista_de_nomes_LINK.txt”  estaremos abrindo “lista_de_nomes.txt“. Conforme o exibido abaixo. O link aponta para o outro arquivo.

    /home/elder/Labs/lista_de_nomes_LINK.txt -> /home/elder/Labs/pastaLabs/lista_de_nomes.txt

    A letra L em “lrwxrwxrwx” é de link. Foram exibidas as propriedades do link e não do arquivo para o qual ele aponta; podemos observar isso ao vermos as permissões do link “lrwxrwxrwx” enquanto as permissões do arquivo para o qual ele aponta são “-rw-rw-rw-”

    Os inodes também são diferentes; Um é 136534 e o outro 6475.

  2. Agora, usando a opção -L, no caminho “/home/elder/Labs”, encontre arquivos com “lista_de_arquivos” em seus nomes. Use -name para o nome do arquivo e -ls para listar suas propriedades.
    [elder@centos65 ~]$ find  -L /home/elder/Labs/  -name "lista_de_nomes*"   -ls
    136534    0 -rw-rw-rw-   1 elder    elder           0 Out 24 11:46 /home/elder/Labs/pastaLabs/lista_de_nomes.txt
    136534    0 -rw-rw-rw-   1 elder    elder           0 Out 24 11:46 /home/elder/Labs/lista_de_nomes_LINK.txt
    

    Com -L vemos que find seguiu o link simbólico e acabou trazendo as propriedades do arquivo para o qual ele aponta e não do link em si. Permissões “-rw-rw-rw” e inode 136534 são iguais.

    Também não exibiu o apontamento com a seta “->” que indica que o arquivo é um link,  para  outro.

A opção -H

diz: “A única exceção para esse comportamento é quando um arquivo especificado na linha de comando é um link simbólico”

a opção -H do find é um pouco confusa para entendermos. Segundo o manual, com “find  -H” os links continuarão sem serem seguidos. A única exceção é quando o arquivo especificado no   comando é um link simbólico.

Por exemplo, “pastaLabs_LINK” é um link para “../pastaLabs”

[elder@centos65 minhaPasta]$ ls -l | tail  -n1
lrwxrwxrwx  1 elder elder   12 Out 24 18:43 pastaLabs_LINK -> ../pastaLabs

Se executarmos find em  “pastaLabs_LINK” teremos as propriedades o link

[elder@centos65 minhaPasta]$ find ./pastaLabs_LINK  -ls
136549    0 lrwxrwxrwx   1 elder    elder          12 Out 24 18:43 ./pastaLabs_LINK -> ../pastaLabs

mas se fizermos a mesma coisa usando a opção -H teremos as propriedades e informações de “../pastaLabs”.

[elder@centos65 minhaPasta]$ find -H ./pastaLabs_LINK  -ls
136529    8 drwxrwx---   2 elder    elder        4096 Out 25 10:36 ./pastaLabs_LINK
136550    0 lrwxrwxrwx   1 elder    elder          12 Out 25 10:36 ./pastaLabs_LINK/tree_link.txt -> ../tree.html
136534    0 -rw-rw-rw-   1 elder    elder           0 Out 24 11:46 ./pastaLabs_LINK/lista_de_nomes.txt

“./pastaLabs_LINK” foi especificado na linha de comando acima.

Bom, muito confuso e precisamos de mais detalhes para entendermos essa opção.

 

Conclusão

find [-H] [-L] [-P] [-D debug_opções] [-O nível] [Caminho…] [expressão] 

Já o comando find sendo executado sozinho e as opções -H, -P e -L. Iremos estudar em nosso próximo laboratório sobre debugs, usando para isso a opção referente(-D)

 

Leitor voraz e um dos administradores do GNU/Linux Brasil no Whatsapp, facebook, youtube e nesse dito site: www.gnulinuxbrasil.com.br

One thought on “Linha de Comando em Linux: Find – Parte 02, Opções Verdadeiras -H -L -P

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *