Cómo usar los Códigos de Salida de Linux para Solucionar diferentes Problemas

Los códigos de salida en Linux (también llamados códigos de retorno o estados de salida) son señales numéricas que los comandos, programas o scripts envían al sistema operativo cuando terminan de ejecutarse.

Estos códigos permiten identificar rápidamente si algo salió bien o mal, sin necesidad de revisar archivos de registro extensos.

¿Qué Significan los Códigos de Salida?

  • 0 → Éxito (todo funcionó correctamente)
  • Distinto de 0 (1–255) → Error (algo salió mal)

Para verificar el código de salida del último comando ejecutado, usa:

echo $?

Ejemplo:

ls /directorio_inexistente
echo $?
# Salida: 2 (u otro valor distinto de cero indicando error)

Depuración de Scripts con Códigos de Salida

Puedes usar códigos de salida para controlar la lógica de un script y manejar errores.

Ejemplo: Script de Respaldo

#!/bin/bash

cp archivo_importante.txt respaldo/

if [ $? -eq 0 ]; then
    echo "¡Respaldo exitoso!"
else
    echo "Fallo en el respaldo con código de salida $?"
    exit 1
fi
  • $? captura el código de salida del último comando.
  • El script finaliza con 1 si el respaldo falla.

Definiendo tus Propios Códigos de Salida

Puedes establecer códigos de salida personalizados para que tus scripts sean más claros:

#!/bin/bash

if [ -z "$1" ]; then
    echo "Uso: $0 <archivo>"
    exit 1  # No se proporcionó argumento
fi

if [ ! -f "$1" ]; then
    echo "Error: Archivo no encontrado"
    exit 2  # El archivo no existe
fi

Cada código de salida comunica un tipo específico de error.

Códigos de Salida Más Comunes

CódigoSignificado
0Éxito
1Error general
2Uso incorrecto de comandos internos del shell
126Permiso denegado
127Comando no encontrado
128Código de salida inválido
130Terminación con Ctrl+C
137Proceso finalizado (generalmente por falta de memoria)
255Código de salida fuera del rango permitido

Ejemplo con grep:
0 si encuentra coincidencias
1 si no encuentra nada
2 si ocurre un error

Cómo Encadenar Comandos Según el Resultado

Puedes usar && y || para ejecutar comandos condicionalmente:

mkdir nueva_carpeta && cd nueva_carpeta || echo "No se pudo crear/acceder al directorio"
  • &&: ejecuta el siguiente comando solo si el anterior fue exitoso
  • ||: ejecuta el siguiente comando solo si el anterior falló

Conclusión

Los códigos de salida son una forma poderosa de:

  • Depurar comandos que fallan (echo $?)
  • Escribir scripts más robustos e inteligentes
  • Automatizar procesos correctamente
  • Comprender rápidamente el comportamiento de un programa

Último Consejo: Si estás empezando con la terminal, acostúmbrate a revisar echo $? cuando algo no funcione como esperabas y eso te ahorrará tiempo.