Optimiza tu experiencia en la terminal de Linux midiendo el tiempo de tus comandos y adoptando atajos, alias y funciones que agilicen tu trabajo diario.
Usar Linux desde hace años es como un viaje interminable de descubrimiento. Siempre hay una manera más rápida de hacer las cosas. Así que decidí sumergirme en optimizar mi vida en la terminal.
Ahora, al medir los tiempos de mis comandos, mi día a día en Linux se va volviendo una máquina bien aceitada. Así es como lo estoy logrando.
Inicia temporizando tus comandos
Identificando los "perdidos de tiempo"
La forma más sencilla para medir un comando es usando time. Funciona bien si buscas optimizar un comando o script específicos.
Sin embargo, usar time como herramienta de informe resulta incómodo. Quería una forma más directa de entender cómo gasto el tiempo en la terminal. Con zsh, puedes engancharte a dos eventos: preexec, que se ejecuta justo antes de que el terminal procese un comando, y precmd, justo antes de volver al aviso.
timer_preexec() { TIMER_START=$EPOCHREALTIME } timer_precmd() { if [ -n "$TIMER_START" ]; then local duration=$(( EPOCHREALTIME - TIMER_START )) # haz algo útil con $duration aquí unset TIMER_START fi } add-zsh-hook preexec timer_preexec add-zsh-hook precmd timer_precmd En la versión completa de este script, ajusto la variable PROMPT en time_precmd si un comando tarda más de un umbral. Solo es el principio; podrías llevar un control más exhaustivo si así lo decides.
Otra estrategia es aprovechar la variable REPORTTIME de zsh para ejecutar automáticamente time con cada comando:
export REPORTTIME=0 Establecer REPORTTIME en un número de segundos te permite filtrar los comandos que tardan más.
Acelerando tu uso diario de la terminal
Siempre hay una forma más rápida
Optimizar la velocidad también implica usar atajos. Aunque parezcan insignificantes, se acumulan y aligeran la carga diaria.
Deja de usar la flecha hacia arriba
Repetir o reescribir comandos anteriores me robaba demasiado tiempo. La función de historial de tu terminal lo facilita: presiona Flecha arriba para reencontrar un comando o edítalo usando Flecha izquierda, Flecha derecha y Retroceso. Seguro ya saltaste al principio de la línea con Ctrl + A.
Sin embargo, mucha de esta escritura es redundante. Por ejemplo, !$ expande al último argumento del comando anterior, lo que permite hacer cosas como:
mkdir -p my/new/directory cd !$ Es bastante útil al ejecutar un comando que acabas de hacer ejecutable, aunque asegúrate de anteponer ./ si no está en tu PATH:
chmod +x foo.sh ./!$ Tienes un montón de atajos de expansión de historial, como !!, que te devuelve al comando anterior:
apt install something # ups, necesito ser root... sudo !! Pero estas técnicas son solo un inicio. Hay mucho más en el arte de reescribir comandos.
Pasados. Un enfoque más eficiente —y mi recomendación— es usar la sustitución de caret:
$ cd my/new/directry
cd: no such file or directory
$ ^tr^tor
cd my/new/directory Con esta sintaxis, tu terminal toma el comando anterior, reemplaza la primera instancia de la cadena original y ejecuta el resultado. Me estoy forzando a adoptar esta técnica en vez de recurrir a la flecha hacia arriba, y estoy sorprendido de lo rápido que es. Ahora que lo tengo claro, el proceso se siente ágil.
El comando fc podría ser el más útil que aún no usas. Abre el último comando en tu editor de terminal y ejecuta los cambios al salir. Para modificaciones más profundas, es más rápido que la sustitución de caret, los atajos de historial o mover manualmente el cursor.
Uso de alias y funciones
Hay comandos que ejecutas en piloto automático. Tal vez lo haces con tanta frecuencia que podrías optimizarlo. Si repites un comando, crea un alias.
Los alias sustituyen texto; en lugar de escribir ls -lh para listar archivos, usa:
llConfigúralo en un archivo como .bashrc. Usa el comando alias, elige una combinación corta de letras y define el comando:
alias ll='ls -lh' Las ganancias son pequeñas, pero se acumulan con el tiempo. Personalmente, uso eza en vez de ls, así que mi alias es:
alias ll='eza --long --sort=size --reverse' Eso ahorra bastante tiempo, ya que lo utilizo varias veces al día.
Si tus alias se complican, opta por una función. Las funciones permiten usar parámetros y controlar el flujo, además de ser llamadas desde scripts de shell.
Una función que siempre defino es:
mkd() { mkdir -p -- "$1" && cd -P -- "$1" || exit } El nombre es más corto que mkdir; un ahorro en cada creación de directorio. Además, hace lo que normalmente haría: entrar al nuevo directorio.
Uso la opción -p en mkdir por defecto para crear directorios intermedios, como en "mkd docs/finance".
Hay desventajas menores al usar -p, ya que algunos errores podrían pasar desapercibidos. Pero un verdadero velocista no se preocupa por esos detalles; todo va más rápido.
Aunque las herramientas fundamentales de Linux son sólidas, hay alternativas. Muchas, escritas en lenguajes más modernos como Rust, son rápidas y seguras.
Algunas mejores herramientas de línea de comandos incluyen tmux para la gestión de sesiones, fzf y fd como alternativas rápidas a find/grep, y zoxide, que mejora la navegación respecto a cd.
Conoce tus limitaciones — ¡y deshazte de ellas!
Tu shell está repleta de funciones potentes que no solo miden tu productividad, sino que la elevan. La finalización de tabulación, los procesos en segundo plano y la cadena de comandos son solo algunas características útiles que no he mencionado aquí.
Si deseas encontrar artículos similares a Cómo convertí mis sesiones de terminal Linux en desafíos diarios de speedrun, te sugerimos revisar la categoría Linux.

Deja una respuesta