Logo de fravelz

Notas de Hacking

Fravelz

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

Resumen rápido {#resumen-rápido}