3 comandos de Linux que has pasado por alto durante demasiado tiempo (pero que puedes memorizar en segundos) 1

3 comandos de Linux que has pasado por alto durante demasiado tiempo (pero que puedes memorizar en segundos)

Índice
  1. Tac — Leer archivos en reversa
    1. Invierte cualquier archivo para que las líneas nuevas vengan primeras
  2. Shuf — Randomiza tus entradas
    1. Elige, mezcla y muestrea líneas sin escribir scripts
  3. timeout — Coloca un reloj en los comandos
    1. Deten comandos descontrolados antes de que cuelguen tu terminal
    2. Tres pequeños comandos que ahorran tiempo cada día

Descubre tres comandos de Linux: tac, shuf y timeout. Con solo unos segundos de aprendizaje, optimiza tu flujo de trabajo y resuelve problemas cotidianos de manera eficaz.

Linux esconde un arsenal de utilidades que muchos ignoran. Entre ellas, tac, shuf y timeout son comandos que resuelven problemas comunes en una línea, ¡y aprender a utilizarlos lleva solo segundos! Vale la pena incorporar estos salvavidas a tu repertorio.

Tac — Leer archivos en reversa

Invierte cualquier archivo para que las líneas nuevas vengan primeras

El nombre lo dice todo: tac es cat al revés. Imprime las líneas de un archivo desde la última hasta la primera. Incluido en GNU coreutils, está presente en casi todas las distribuciones de Linux.

¿Para qué sirve? Ideal para leer registros. Los archivos de log añaden entradas al final. ¿Cómo acceder a la información más reciente en un mar de líneas? Con tac /var/log/syslog | less, las entradas más recientes aparecen arriba. Listo, sin desplazamientos innecesarios.

Además, funciona a la perfección con otras herramientas. Si lo envías a grep con la opción -m, como en tac access.log | grep -m 5 "404", obtienes las últimas cinco coincidencias sin revisar el archivo completo. Tac también lee desde la entrada estándar, lo que lo hace versátil para canalizar salidas de otros comandos, como seq 1 5 | tac.

Adicionalmente, la opción -s te permite cambiar el separador de entrada, útil para datos que no están separados por saltos de línea. Con -r, ese separador se convierte en expresión regular, permitiendo invertir registros en texto estructurado.

Sin embargo, hay que tener en cuenta sus limitaciones. Tac invierte líneas, no caracteres, así que no reemplaza a rev, que altera el texto dentro de cada línea. Además, necesita leer toda la entrada antes de imprimir, lo que lo hace poco efectivo para flujos infinitos. Si solo requieres las últimas líneas, tail es más rápido. Y en macOS y BSD, tac suele brillar por su ausencia, aunque tail -r ofrece una función similar.

Shuf — Randomiza tus entradas

Elige, mezcla y muestrea líneas sin escribir scripts

shuf crea permutaciones aleatorias. Proporciona un archivo y obtendrás las líneas en un orden desordenado con shuf names.txt. También forma parte de GNU coreutils, así que funciona tanto con archivos como en tuberías.

Su utilidad se destaca en el muestreo. La opción -n limita las líneas que obtendrás: shuf -n 1 quotes.txt elige una cita al azar y shuf -n 10 dataset.csv saca diez líneas de un archivo extenso. Ideal para revisar datos sin abrir una hoja de cálculo.

La opción -e trata los argumentos de línea como entrada, permitiendo mezclar palabras directamente: shuf -e pizza sushi tacos -n 1 para resolver debates sobre la cena en un instante. Con -i, puedes generar un rango numérico: shuf -i 1-100 -n 5 obtiene cinco números únicos. Agregar -r permite repeticiones, convirtiéndolo en un lanzador de dados simple.

shuf tiene aplicaciones prácticas también en scripts. Un script con shell puedes elegir un fondo de pantalla aleatorio de una carpeta usando ls canalizado en shuf -n 1. También puedes reproducir tu lista de reproducción al azar o generar datos de prueba variados. Si necesitas mezclar un archivo, la opción -o te permite nombrar el archivo de salida. A diferencia de una redirección simple, trata de modo seguro el caso en que entrada y salida son el mismo archivo.

Sin embargo, hay un detalle a considerar. Por defecto, shuf utiliza la fuente aleatoria del sistema. Esto funciona para tareas cotidianas, pero no es adecuado para necesidades criptográficas, como generar contraseñas. Para resultados repetibles, usa --random-source.

Esta opción te permite proporcionar un archivo de bytes y así reproducir el mismo desorden.

timeout — Coloca un reloj en los comandos

Deten comandos descontrolados antes de que cuelguen tu terminal

timeout ejecuta un comando y lo termina si excede el límite de tiempo que estableces. La sintaxis es clara: primero la duración, luego el comando, por ejemplo, timeout 10 ping example.com. Las duraciones son en segundos, pero puedes usar sufijos: m para minutos, h para horas, y d para días.

¿Por qué es crucial? Algunos comandos tienden a colgarse. Una solicitud de red puede esperar un servidor que no responde, un script puede quedar detenido en un recurso bloqueado o un trabajo de respaldo puede demorar más de lo previsto. En terminal interactiva, puedes presionar Ctrl+C. Pero en un trabajo cron o un script automatizado, nadie está allí para intervenir. Un proceso atascado puede acumularse o bloquear otras tareas. Envolver el comando arriesgado en timeout facilita que el script siga avanzando.

Cuando se cumple el tiempo, timeout envía la señal TERM para cerrar el proceso de manera educada. Pero algunos programas pueden ignorarla, por eso existe la opción -k, que añade un segundo límite tras el cual se envía KILL, una señal que no se ignora. Un ejemplo: timeout -k 5 30 ./long-task.sh le da al script treinta segundos, y cinco adicionales para salir limpiamente antes de forzar su detención. La opción -s te permite elegir otra señal, si lo prefieres.

El estado de salida también importa. Si un comando es detenido por exceder su límite, timeout devuelve el estado 124. Los scripts pueden verificar este valor para distinguir entre un timeout y un fallo normal, facilitando reintentos o registrando advertencias. Agregar --preserve-status permite que timeout devuelva el estado de salida original del comando.

Un aspecto a tener en cuenta: por defecto, timeout ejecuta el comando en un grupo de procesos en segundo plano. Esto puede causar comportamientos extraños en programas interactivos que esperan entrada del teclado. La opción --foreground soluciona esto, y vale la pena probar cualquier comando que lea de la terminal antes de confiar en su comportamiento.

Tres pequeños comandos que ahorran tiempo cada día

Tac, shuf y timeout cumplen funciones específicas con eficacia. Leer registros al revés, muestrear líneas aleatorias y limitar procesos descontrolados son tareas comunes. Lo mejor: estos tres comandos ya están instalados en la mayoría de los sistemas Linux. No hay necesidad de configuraciones previas.

Si deseas encontrar artículos similares a 3 comandos de Linux que has pasado por alto durante demasiado tiempo (pero que puedes memorizar en segundos), te sugerimos revisar la categoría Linux.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Subir