¿Cómo busco los códigos de salida para las aplicaciones?

Tengo dificultades para encontrar una list completa y actualizada de los códigos de error de Bash. p.ej:

$ udevadm info /dev/sdx; echo Exit code $? Unknown device, --name=, --path=, or absolute path in /dev/ or /sys expected. Exit code 4 

¿Cómo se supone que uno busque estos códigos de salida?

tl; dr Los códigos de salida son específicos de la aplicación.

Hay algunas convenciones sueltas. false y cualquier cosa exitosa con prefijo ! (como ! true ) en las shells POSIX devuelven el código de salida 1, pero un desarrollador puede usar cualquier código de salida entre 0 y 255 para lo que quiera. En última instancia, debe ver su documentation (en el mejor de los casos) o el código (en el peor de los casos) para saber lo que significa. Para los progtwigs con páginas man códigos de salida a menudo se enumeran en una sección llamada EXIT STATUS (herramientas GNU como find ).

Algunos significados populares se enumeran en /usr/include/sysexits.h – Intento usarlos siempre que sea posible. Como señala @AnsgarEsztermann , estas no son una reference Bash, o incluso una reference de aplicación, excepto para aquellos que eligen usarla (desarrolladores C / C ++ principalmente de acuerdo con el ABS ).

Hay un puñado de códigos de salida con significados especiales reservados :

  Salir Código Número Significado
 1 Catchall para errores generales
 2 Uso incorrecto de shell builtins (según la documentation de Bash)
 126 El command invocado no se puede ejecutar
 127 "command no encontrado"
 128 + n Señal de error fatal "n"
 130 Script terminado por Ctrl-C
 255 * Estado de salida fuera de range 

Todo lo que está por debajo de 125 es un juego justo para los desarrolladores, y realmente solo se puede adivinar, como l0b0 notas en su respuesta , leyendo la página de man de la aplicación, o el código fuente, para determinar qué significa el código (si, de hecho, es documentado en absoluto).