Pipes, redirección, códigos de salida y procesos
Un proceso suele tener tres flujos: stdin para entrada, stdout para salida normal y stderr para diagnósticos. Una pipe conecta la salida de un comando con la entrada del siguiente.
git log --oneline | rg "security"Get-Process | Where-Object CPU -gt 10 | Sort-Object CPU -DescendingPowerShell transmite objetos entre cmdlets; shells como Bash transmiten bytes o texto. Al invocar programas externos desde PowerShell, su salida vuelve a ser texto.
Redirección
Sección titulada «Redirección»command > output.txt # reemplaza stdoutcommand >> output.txt # agrega stdoutcommand 2> errors.txt # redirige stderrcommand > all.txt 2>&1 # combina ambos, el orden importacommand *> all.txtAntes de usar >, verifica que el archivo pueda sobrescribirse. Para logs de producción, prefiere el sistema de logging y rotación de la plataforma.
Código de salida
Sección titulada «Código de salida»Por convención, 0 indica éxito y otro valor indica fallo. La automatización debe comprobarlo:
pnpm test && pnpm buildEl segundo comando solo se ejecuta si el primero termina correctamente. Una pipe puede ocultar el fallo de un comando anterior según el shell; en Bash, set -o pipefail hace que la tubería refleje el error.
Procesos y señales
Sección titulada «Procesos y señales»Ctrl+C envía una interrupción. Un servidor debe manejar el cierre para dejar de aceptar tráfico, terminar solicitudes, cerrar conexiones y salir dentro del límite del orquestador.
process.on("SIGTERM", async () => { server.close() await database.end()})No mates un proceso por PID sin comprobar qué ejecutable y usuario representa; los identificadores pueden reutilizarse.
Datos seguros
Sección titulada «Datos seguros»No pases secretos en argumentos si pueden aparecer en historial o lista de procesos. Usa entrada segura, archivos con permisos limitados o gestores de secretos. Cita rutas y variables para evitar expansión accidental.