Atajos y trucos de productividad (RSA-16)

La ruta del SysAdmin 15 de jul. de 2025

Este capítulo incluye:

  • Atajos de teclado en terminal
  • Reutilización rápida de comandos
  • Alias y funciones personalizadas
  • Multiproceso y multitarea en bash
  • Historia, autocompletado y edición de comandos
  • Expresiones de patrón y globbing

1. Atajos de teclado en la terminal

AtajoAcción
Ctrl + AIr al inicio de la línea
Ctrl + EIr al final de la línea
Ctrl + UBorrar desde cursor al inicio
Ctrl + KBorrar desde cursor al final
Ctrl + WBorrar palabra anterior
Ctrl + RBuscar comando anterior (historia)
Ctrl + LLimpiar pantalla (clear)
Alt + .Insertar último argumento del comando anterior
Ctrl + TIntercambiar letras bajo y antes del cursor

2. Reutilizar comandos y argumentos

!!                # Repite el último comando
!n                # Repite el comando número n del historial
!sudo             # Ejecuta último comando que empezó con 'sudo'
!tar:p            # Muestra el comando sin ejecutarlo (modo seguro)

→ Puedes usar fc para editar un comando anterior en tu editor:

$ fc

3. Historia y búsqueda avanzada

$ history                # Ver comandos anteriores
$ history | grep apt     # Buscar comandos por palabra clave
$ !123                   # Ejecutar comando número 123
$ !!:1                   # Primer argumento del último comando

→ La historia se guarda en ~/.bash_history


4. Alias para comandos frecuentes

Definir en ~/.bashrc o ~/.bash_aliases:

alias ll='ls -la'
alias actualizar='sudo apt update && sudo apt upgrade'
alias buscar='apt-cache search'
alias topmem='ps aux --sort=-%mem | head -n 10'

Aplicar:

$ source ~/.bashrc

5. Funciones avanzadas en bash

Ejemplo: eliminar archivos grandes automáticamente

function limpiar_grandes() {
    find "$1" -type f -size +100M -exec rm -i {} \;
}

→ Uso: limpiar_grandes /var/log


6. Trabajar en segundo plano y multitarea

$ comando &                # Ejecuta en segundo plano
$ jobs                    # Ver procesos activos
$ fg %1                   # Traer tarea 1 al frente
$ disown                  # Desvincula proceso del terminal

Multiproceso con xargs o parallel:

$ ls *.jpg | xargs -n1 -P4 convert

7. Autocompletado y comodines (globbing)

Comodines comunes

  • * → cualquier número de caracteres
  • ? → un solo carácter
  • [abc] → cualquiera de esos caracteres

Ejemplo:

ls *.log        # Archivos terminados en .log
ls reporte[1-5].txt

Autocompletado y tabulador

  • Usa TAB para completar comandos, rutas o nombres
  • Usa doble TAB para mostrar opciones disponibles
  • En muchos sistemas, está gestionado por bash-completion

Instalación:

# apt install bash-completion

8. Redirecciones útiles

comando > salida.txt            # Redirige salida estándar
comando >> salida.txt           # Añade al final
comando 2> errores.txt          # Redirige errores
comando &> todo.txt             # Salida + errores

9. Comandos encadenados

comando1 && comando2      # Solo si comando1 fue exitoso
comando1 || comando2      # Solo si comando1 falla
comando1; comando2        # Ejecutar ambos sin importar el estado

10. Ejecución sobre múltiples archivos

Ejemplo con bucles:

for f in *.txt; do
    grep "ERROR" "$f"
done

O usando find:

find . -name "*.log" -exec grep "fallo" {} +

sed y awk: edición y análisis en terminal

Parte final dedicada a las potentes herramientas sed y awk.

Son dos herramientas fundamentales en la línea de comandos de Linux para manipulación y análisis de texto.

sed: editor de flujo

sed permite editar texto línea por línea sin abrir archivos en un editor. Se usa para buscar, reemplazar, eliminar, insertar o mostrar contenido.


Ejemplos básicos de sed

Reemplazar texto:

sed 's/error/ERROR/' archivo.txt         # Solo primera ocurrencia por línea
sed 's/error/ERROR/g' archivo.txt        # Todas las ocurrencias

Eliminar líneas:

sed '/^$/d' archivo.txt                  # Eliminar líneas vacías
sed '/#TODO/d' script.sh                 # Eliminar líneas que contienen #TODO

Mostrar líneas específicas:

sed -n '5p' archivo.txt                  # Mostrar solo línea 5
sed -n '5,10p' archivo.txt               # Mostrar líneas 5 a 10

Insertar líneas antes o después:

sed '/Servidor/a\\Configuración avanzada' archivo.txt  # Añadir después
sed '/Servidor/i\\Inicio del bloque' archivo.txt       # Añadir antes

Cambiar contenido en múltiples archivos:

find . -name "*.conf" -exec sed -i 's/puerto=80/puerto=8080/g' {} +

Ejemplos avanzados de sed

Reemplazar solo si aparece en contexto:

sed '/nginx/ s/error/ERROR/' log.txt    # Solo si línea contiene nginx

Eliminar líneas duplicadas consecutivas:

sed '$!N; /^\(.*\)\n\1$/d; P; D' archivo.txt

Cambiar delimitador de CSV:

sed 's/,/|/g' datos.csv

Transformar minúsculas en mayúsculas (GNU sed):

sed 's/[a-z]/\U&/g' archivo.txt

awk: procesador de textos estructurados

awk permite dividir líneas en campos, aplicar condiciones, calcular expresiones y generar reportes. Ideal para archivos con columnas como logs, CSV o tablas.


Ejemplos básicos de awk

Mostrar columna específica:

awk '{print $1}' archivo.txt             # Primer campo
awk -F, '{print $2}' archivo.csv         # Segundo campo, usando coma

Filtrar líneas por valor de campo:

awk '$3 > 80' notas.txt                  # Tercer campo mayor a 80

Sumar valores de una columna:

awk '{s+=$2} END {print s}' datos.txt    # Suma total del segundo campo

Contar ocurrencias de un valor:

awk '$1 == "ERROR" {c++} END {print c}' log.txt

Ejemplos avanzados de awk

Formato de salida personalizado:

awk '{printf "%-10s %s\n", $1, $2}' datos.txt

Calcular promedio de valores:

awk '{s+=$2} END {print "Promedio:", s/NR}' datos.txt

Procesar archivo tipo CSV y calcular totales por campo:

awk -F, '{ventas[$1]+=$2} END {for (v in ventas) print v, ventas[v]}' ventas.csv

Combinar filtrado y cálculo:

awk '$3 >= 90 {print $1, "excelente"}' notas.txt

Contar palabras únicas:

awk '{for(i=1;i<=NF;i++) w[$i]++} END {for (i in w) print i, w[i]}' texto.txt

Etiquetas

Luis GuLo

🐧 SysAdmin GNU/Linux - 🐳 Docker - 🖥️ Bash Scripting - 🐪 Perl - 🐬 MySQL - 👥 Formador de TI - 👥 Formador de SysAdmin's - 💢 Ansible - ☁️ Cloud Computing - ❤️ Debian GNU/Linux