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
1si 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ódigo | Significado |
|---|---|
0 | Éxito |
1 | Error general |
2 | Uso incorrecto de comandos internos del shell |
126 | Permiso denegado |
127 | Comando no encontrado |
128 | Código de salida inválido |
130 | Terminación con Ctrl+C |
137 | Proceso finalizado (generalmente por falta de memoria) |
255 | Có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.