O comando look do Linux percorre um arquivo e lista todas as linhas que começam com uma palavra ou frase específica. Mas cuidado! Ele se comporta de maneira diferente em diferentes distribuições do Linux. Este tutorial mostrará como usá-lo.
últimas postagens
O comando do visual do Ubuntu se comporta de maneira diferente
Para um comando simples, mas útil, look certamente me confundiu quando estava pesquisando para este artigo. Havia dois problemas: compatibilidade e documentação.
Este artigo foi verificado usando Ubuntu, Fedora e Manjaro. O look veio junto com cada uma dessas distribuições, o que foi ótimo. O problema era que o comportamento não era o mesmo nos três. A versão do Ubuntu era muito diferente. De acordo com Manpages do Ubuntu, o comportamento deve ser o mesmo.
Eu finalmente descobri. olhar tradicionalmente usa um busca binária, enquanto a aparência do Ubuntu usa um busca linear. As man pages online do Ubuntu para Bionic Beaver (18.04), Cosmic Cuttlefish (18.10) e Disco Dingo (19.04) dizem que a versão Ubuntu usa uma pesquisa binária, o que não é o caso.
Se dermos uma olhada na página de manual local do Ubuntu, vemos que afirma claramente que sua aparência usa uma pesquisa linear. Existe uma opção de linha de comando para forçá-lo a usar uma pesquisa binária. Nenhuma das versões nas outras distribuições tem a opção de escolher entre os métodos de pesquisa.
man look
Percorrendo a página do manual, vemos a seção que descreve esta versão de aparência usando uma pesquisa linear em vez de binária.
A moral da história é verificar as páginas de manual locais primeiro.
Pesquisa linear versus pesquisa binária
O método de pesquisa binária é mais rápido e eficiente do que uma pesquisa linear. Trabalhar com arquivos grandes torna isso muito aparente. A desvantagem da pesquisa binária é que seu arquivo deve ser classificado. Se você não quiser classificar seu arquivo, classifique uma cópia dele e use-a com o look.
Vamos demonstrar isso em outro lugar neste artigo. Esteja ciente de que no Fedora, Manjaro e, provavelmente, no restante do mundo Linux, você precisará criar uma cópia classificada do seu arquivo e trabalhar com ela.
Instalando palavras
look pode funcionar com qualquer arquivo de texto que você escolher, ou pode funcionar com o arquivo de dicionário local “palavras”.
No Manjaro você precisa instalar o arquivo “palavras”. Use este comando:
sudo pacman -Syu words
Usando look
Para este artigo, trabalharemos com um arquivo de texto do Edward Lear poema “The Jumblies”.
Vejamos seu conteúdo com este comando:
less the-jumblies.txt
Aqui está a primeira parte do poema. Observe que estamos usando o Ubuntu, portanto, o arquivo permanece sem classificação. Para Fedora e Manjaro, trabalharíamos com uma cópia classificada do arquivo, que abordaremos posteriormente neste artigo.
Se procurarmos por linhas que começam com a palavra “Eles”, descobriremos um pouco do que os Jumblies fizeram.
look They the-jumblies.txt
look responde listando estas linhas:
Ignorando maiúsculas e minúsculas
Para fazer com que a aparência ignore as diferenças entre maiúsculas e minúsculas, use a opção -f (ignorar maiúsculas e minúsculas). Usamos “they” como a palavra de pesquisa novamente, mas desta vez, está em letras minúsculas.
look -f they the-jumblies.txt
Desta vez, os resultados incluem uma linha extra.
A linha que começa com “ELES” foi perdida no último conjunto de resultados porque está em letras maiúsculas e não corresponde ao nosso termo de pesquisa, “Eles”.
Ignorar maiúsculas e minúsculas permite que o look inclua nos resultados.
Usando a aparência com um arquivo classificado
Se sua distribuição Linux tem uma versão de aparência que segue o comportamento tradicional de usar uma pesquisa binária, você deve classificar seu arquivo ou trabalhar com uma cópia classificada dele.
Vamos repetir o comando para procurar “Eles”, mas desta vez em Manjaro.
Como você pode ver, nenhum resultado foi retornado. Mas sabemos que há versos no poema que começam com a palavra “Eles”.
Vamos fazer uma cópia ordenada do arquivo. Se for usar as opções -f (ignorar maiúsculas e minúsculas) ou -d (caracteres alfanuméricos e espaços apenas) com look, você deve usá-las ao classificar o arquivo.
A opção -o (saída) permite que você especifique o nome do arquivo ao qual as linhas classificadas devem ser adicionadas. Neste exemplo, é “ordenado.txt”.
sort -f -d the-jumblies.txt -o sorted.txt
Vamos examinar o arquivo Sort.txt e, em seguida, usar as opções -f e -d.
Agora, obtemos os resultados que esperávamos.
Considere apenas espaços e alfanuméricos
Para fazer parecer ignorar qualquer coisa que não seja um Caractere alfanumerico ou um espaço, use a opção -d (alfanumérico).
Vamos ver se há alguma palavra que comece com “Oh”.
look -f oh the-jumblies.txt
Nenhum resultado é retornado pela aparência.
Vamos tentar novamente e dizer ao look para ignorar qualquer coisa que não seja caracteres alfanuméricos e espaços. Isso significa que caracteres e símbolos, como pontuação, serão ignorados.
look -f -d oh the-jumblies.txt
Desta vez, obtemos um resultado. Não encontramos essa linha antes porque as aspas e o ponto de exclamação confundiram a pesquisa.
Especificando o caractere de terminação
Você pode dizer ao look para usar um caractere específico como caractere de terminação. Normalmente, espaços e finais de linhas são usados como caractere de terminação.
A opção -t (encerrar caractere) nos permite especificar o caractere que gostaríamos de usar. Neste exemplo, vamos usar o caractere apóstrofo. Precisamos citá-lo com uma barra invertida para que a aparência saiba que não estamos abrindo uma string.
Também citamos o termo de pesquisa porque inclui um espaço. Estamos procurando por duas palavras.
look -f -t ' "they call" the-jumblies.txt
Os resultados correspondem ao termo de pesquisa, terminado pelo apóstrofo que usamos como caractere de terminação.
Usando o look sem um arquivo
Se você não fornecer um nome de arquivo na linha de comando, olhe usa o arquivo de palavras.
O comando:
dá estes resultados:
Essas são todas as palavras do arquivo que começam com a palavra “círculo”.
não procure mais
Isso é tudo que há para olhar.
É muito fácil, uma vez que você sabe que existem diferentes comportamentos em diferentes distribuições do Linux, e você concluiu se sua versão usa uma pesquisa binária ou linear.