Entradas y Salidas en Bash Script
Este documento explica como usar la redirección de contenido en bash script de (entradas y salidas y errores en bash).
Descriptores de archivos {#descriptores-de-archivos}
En Bash hay 3 descriptores de archivos principales:
Los descriptores 3, 4, 5, … son opcionales y se usan en programas más avanzados. Para referirse a un descriptor se usa su número (por ejemplo 2> archivo). Para el descriptor 1, el número puede omitirse (> equivale a 1>).
1 Entrada: redirigir desde un archivo < {#1-entrada-redirigir-desde-un-archivo-}
cat < ./4.estControl.sh
2 Salida: redirigir la salida normal > y >> {#2-salida-redirigir-la-salida-normal—y-}
echo "hola," > ./salida.txt # Sobrescribe el archivo
echo "mundo!" >> ./salida.txt # Agrega al final
3 Errores: redirigir errores 2> {#3-errores-redirigir-errores-2}
ls noExiste 2> errores.txt
Juntar salida y errores {#juntar-salida-y-errores}
comando > todo.txt 2>&1
Esto significa:
- El descriptor 1 (salida estándar) se envía al archivo todo.txt.
- El descriptor 2 (errores) se redirige hacia donde va la salida estándar (&1).
En resumen:
“Manda los errores al mismo lugar donde está yendo la salida normal”.
Pipes (|) {#pipes}
ls | grep .txt
Envía la salida de ls al comando grep, que muestra solo los archivos .txt.
Redirección combinada &> {#redirección-combinada}
ls carpeta_inexistente &> salida.txt
Equivale a:
ls carpeta_inexistente > salida.txt 2>&1
Comando cat (concatenate) {#comando-cat-concatenate}
cat ./1.comandosBash/5.EntradaYSalida.sh # Mostrar un archivo
cat a.txt b.txt > c.txt # Unir archivos
cat a.txt >> b.txt # Añadir uno al final del otro
También puedes crear un archivo nuevo escribiendo directamente:
cat > nuevo.txt
Hola
Mundo
# (Presiona CTRL+D para terminar)
Comando tee {#comando-tee}
El comando tee guarda la salida en archivos y también la muestra en pantalla.
echo "Hola mundo" | tee salida.txt # Guardar y mostrar
ls | tee -a lista.txt # Modo append
ls | tee archivo1.txt archivo2.txt # Guardar en varios archivos