Cómo usar el comando look en Linux

Terminal Linux que se ejecuta en un entorno de escritorio con temática de Ubuntu.
Fatmawati Achmad Zaenuri / Shutterstock

El lookcomando de Linux recorre un archivo y enumera todas las líneas que comienzan con una palabra o frase en particular. ¡Pero cuidado! Se comporta de manera diferente en diferentes distribuciones de Linux. Este tutorial le mostrará cómo usarlo.

El comando Look de Ubuntu se comporta de manera diferente

Para un comando simple, pero útil, lookciertamente me dio un vuelco cuando estaba investigando este artículo. Hubo dos problemas: compatibilidad y documentación.

Este artículo se verificó con Ubuntu, Fedora y Manjaro. lookse incluyó con cada una de esas distribuciones, lo cual fue genial. El problema era que el comportamiento no era el mismo en los tres. La versión de Ubuntu era muy diferente. Según las páginas de manual de Ubuntu , el comportamiento debería ser el mismo.

Eventualmente lo descubrí. look tradicionalmente usa una búsqueda binaria , mientras que Ubuntu lookusa una búsqueda lineal . Las páginas de manual de Ubuntu en línea para Bionic Beaver (18.04), Cosmic Cuttlefish (18.10) y Disco Dingo (19.04) dicen que la versión de Ubuntu usa una búsqueda binaria, lo cual no es el caso.

Si echamos un vistazo a la página de manual local de Ubuntu, vemos que claramente indica que lookutiliza una búsqueda lineal. Hay una opción en la línea de comandos para forzarlo a usar una búsqueda binaria. Ninguna de las versiones de las otras distribuciones tiene una opción para elegir entre los métodos de búsqueda.

hombre mira

"mirada de hombre" en una ventana de terminal.

Desplazándose hacia abajo por la página de manual, vemos la sección que describe esta versión del   lookuso de una búsqueda lineal en lugar de binaria.

Relacionado:  Cómo crear alias y funciones de shell en Linux

Ubuntu mira la página de manual en una ventana de terminal.

La moraleja de la historia es comprobar primero las páginas del manual local.

Búsqueda lineal versus búsqueda binaria

El método de búsqueda binaria es más rápido y eficiente que una búsqueda lineal. Trabajar con archivos grandes hace que esto sea muy evidente. La desventaja de la búsqueda binaria es que su archivo debe estar ordenado. Si no desea ordenar su archivo, ordene una copia y luego úselo con look.

Demostraremos esto en otra parte de este artículo. Solo tenga en cuenta que en Fedora, Manjaro y espero que la mayoría del resto del mundo Linux, deberá crear una copia ordenada de su archivo y trabajar con eso.

Instalando palabras

look puede funcionar con cualquier archivo de texto que elija, o puede funcionar con el archivo de diccionario local «palabras».

En Manjaro necesitas instalar el archivo «palabras». Utilice este comando:

sudo pacman -Syu palabras

"sudo pacman -Syu palabras" en una ventana de terminal.

Usando mirada

Para este artículo, trabajaremos con un archivo de texto del poema de Edward Lear «The Jumblies».

Veamos su contenido con este comando:

menos los-jumblies.txt

"menos los-jumblies.txt" en una ventana de terminal.

Aquí está la primera parte del poema. Tenga en cuenta que estamos usando Ubuntu, por lo que el archivo permanece sin clasificar. Para Fedora y Manjaro, trabajaríamos con una copia ordenada del archivo, que cubriremos más adelante en este artículo.

"The Jumblies" en menos en una ventana de terminal.

Si buscamos líneas que comiencen con la palabra “Ellos”, descubriremos algo de lo que hicieron los Jumblies.

mira ellos los-jumblies.txt

"mira They the-jumblies.txt" en una ventana de terminal.

look responde enumerando estas líneas:

Salida de "look They the-jumblies.txt" en una ventana de terminal.

Ignorar el caso del personaje

Para lookignorar las diferencias entre mayúsculas y minúsculas, use la -fopción (ignorar mayúsculas y minúsculas ). Hemos vuelto a utilizar «ellos» como palabra de búsqueda, pero esta vez está en minúsculas.

mira -si ellos-los-jumblies.txt

mira -si son los-jumblies.txt en una ventana de terminal.

Esta vez, los resultados incluyen una línea adicional.

Relacionado:  Cómo usar Port Knocking en Linux (y por qué no debería)

Salida de "look -f they the-jumblies.txt" en una ventana de terminal.

La línea que comienza con «ELLOS» se omitió en el último conjunto de resultados porque está en mayúsculas y no coincide con nuestro término de búsqueda, «Ellos».

Ignorar el caso permite lookincluirlo en los resultados.

Usar apariencia con un archivo ordenado

Si su distribución de Linux tiene una versión lookque sigue el comportamiento tradicional de usar una búsqueda binaria, debe ordenar su archivo o trabajar con una copia ordenada del mismo.

Repitamos el comando para buscar “Ellos”, pero esta vez en Manjaro.

mira They the-jumblies.txt en una ventana de terminal.

Como puede ver, no se devolvieron resultados. Pero sabemos que hay líneas en el poema que comienzan con la palabra «Ellos».

Hagamos una copia ordenada del archivo. Si va a usar las opciones -f(ignorar mayúsculas y minúsculas) o -d(solo caracteres alfanuméricos y espacios) con look, debe usarlas al ordenar el archivo.

La -oopción (salida) le permite especificar el nombre del archivo al que se deben agregar las líneas ordenadas. En este ejemplo, es «sorted.txt».

sort -f -d los-jumblies.txt -o sorted.txt

sort -f -d the-jumblies.txt -o sorted.txt en una ventana de terminal.

Vamos a usar looken el archivo sorted.txt y, a continuación, utilizar el -fy -dopciones.

sort -f -d the-jumblies.txt -o sorted.txt en una ventana de terminal.

Ahora, obtenemos los resultados que esperábamos.

Considere solo espacios y alfanuméricos

Para que parezca ignorar cualquier cosa que no sea un carácter alfanumérico o un espacio, use la -dopción (alfanumérica).

Veamos si hay palabras que empiecen con «Oh».

mira -f oh the-jumblies.txt

mira -f oh the-jumblies.txt en una ventana de terminal.

No se devuelven resultados por look.

Intentemos de nuevo y digamos a look que ignore cualquier cosa que no sean caracteres alfanuméricos y espacios. Eso significa que los caracteres y símbolos, como la puntuación, se ignorarán.

mira -f -d oh the-jumblies.txt

mira -f -d oh the-jumblies.txt en una ventana de terminal.

Esta vez, obtenemos un resultado. No encontramos esta línea antes porque las comillas y el signo de exclamación confundían la búsqueda.

Relacionado:  Cómo ejecutar un programa de Linux al inicio con systemd

Salida de "look -f -d oh the-jumblies.txt" en una ventana de terminal.

Especificar el carácter de terminación

Puedes decirle lookque uses un personaje específico como personaje final. Por lo general, los espacios y el final de las líneas se utilizan como carácter final.

La -topción (terminar carácter) nos permite especificar el carácter que nos gustaría usar. En este ejemplo, usaremos el carácter de apóstrofe. Necesitamos citarlo con una barra inclinada hacia atrás para que looksepamos que no estamos abriendo una cadena.

También estamos citando el término de búsqueda porque incluye un espacio. Buscamos dos palabras.

look -f -t \ '"ellos llaman" the-jumblies.txt

look -f -t \ '"ellos llaman" the-jumblies.txt en una ventana de terminal.

Los resultados coinciden con el término de búsqueda, terminado por el apóstrofe que usamos como carácter final.

Salida de "look -f -t \ '" que llaman "the-jumblies.txt" en una ventana de terminal.

Usar mirada sin archivo

Si no proporciona un nombre de archivo en la línea de comando, look usa el archivo de palabras .

El comando:

"círculo de mirada" en una ventana de terminal.

da estos resultados:

"look circle" da como resultado una ventana de terminal.

Estas son todas las palabras del archivo que comienzan con la palabra «círculo».

no busque más

Eso es todo lo que hay que hacer look.

Es bastante fácil una vez que sabe que hay diferentes comportamientos en las diferentes distribuciones de Linux y ha tocado fondo si su versión utiliza una búsqueda binaria o lineal.