Las redirecciónes nos permiten en Linux redirigir la entrada o salida estándar desde o hacia un fichero, respectivamente. La tubería nos permite usar la salida de un comando como entrada para otro, permitiendo concatenar comandos.
Redirecciones
Primero señalar que en cuando hablamos de la entrada estándar se hace referencia, normalmente, a lo escrito a través del teclado y como salida estándar a lo envíado a la pantalla, aunque pueden ser otros los dispositivos definidos como estándar en algún caso especial. Las redirecciones se realizan con los símbolos >
y <
usando su similitud con unas flechas. Así con el símbolo >
podemos redirigir la salida estándar desde un comando hacia un fichero. La redirección es muy útil cuando la salida es muy larga y no nos cabe en pantalla, cuando necesitamos o nos es conveniente guardarla en un fichero, etc. Veamos un ejemplo.
$ echo "Hola mundo" Hola mundo $ echo "Hola mundo" > saludo $ cat saludo Hola mundo
Como vemos en el ejemplo con el comando echo
mandamos a pantalla un mensaje, pero si usamos la redirección > mandamos el mensaje al fichero saludo
. Luego con el comando cat
hemos mostrado el contenido del fichero que hemos creado. Para añadir información a un fichero existente, sin sobreescribirlo se usa >>
. Veamos otro ejemplo:
$ echo "Hola mundo" Hola mundo $ echo "Hola mundo" > saludo $ cat saludo Hola mundo $ echo "Ahora he sobreescrito el fichero saludo" > saludo $ cat saludo Ahora he sobreescrito el fichero saludo $ echo "Pero ahora le he añadido otra línea" > saludo $ cat saludo Ahora he sobreescrito el fichero saludo Pero ahora le he añadido otra línea
Como vemos en este ejemplo >
destruye el contenido del fichero si existe pero >>
añade la información al final.
El símbolo <
permite enviar el contenido de un fichero como entrada estándar. Esto es útil, por ejemplo, en programas o comandos en los que introducimos o podemos introducir los argumentos por el teclado, de tal manera que podemos sustituirlos por un fichero. Un ejemplo tirivial con cat
es:
$ echo "Hola mundo" > saludo $ cat < saludo Hola mundo
Tuberías
Las tubería es una redirección especial que nos permite enviar la salida de un comando como entrada de otro, para ellos se usa el símbolo |
. Su gran útilidad es que nos permite concatenar comandos enriqueciendo mucho la programación. Veamos unos sencillos ejemplos con seq
y head
:
$ seq 1 5 |head -2
1 2
Redirecciones, avanzado
También exite la salida de error que va por otro ‘canal’ diferente. Así por ejemplo si el fichero file1
existe y el file2
no tenemos el siguiente comportamiento
$ ls file1 file2 ls: no se puede acceder a file2: No existe el archivo o el directorio file1 $ ls file1 file2 > salida ls: no se puede acceder a file2: No existe el archivo o el directorio $ cat salida file1
Como vemos, cuando hemos redirigido la salida al fichero salida
, el mensaje de error que nos informa que el fichero file2
no existe sigue saliendo por pantalla. Para poder redireccinar también la salida de error tenemos que usar &>
que nos dice que redireccionemos ambas salidas, así:
$ ls file1 file2 &> salida $ cat salida ls: no se puede acceder a file2: No existe el archivo o el directorio file1
De hecho la salida estándar suele ir identificada con 1
(o &1
si va despues de > para diferenciarla de un fichero con nombre 1), y la salida de error con 2
(o &2
) para poder hacer redirecciones individuales. Así, es equivalente a redirigir la sólo salida el siguiente comando:
$ ls file1 file2 1> salida ls: no se puede acceder a file2: No existe el archivo o el directorio $ cat salida file1
Para redirigir la salida de error a un fichero
$ ls file1 file2 2> salida file1 $ cat salida ls: no se puede acceder a file2: No existe el archivo o el directorio
2>&1
o 1>&2
sirven para redirigir la salida de error a la estandar o viceversa para luego, por ejemplo, enviarla con una tubería a otro comando.
$ ls file1 file2 2>&1 salida |wc -l 2
[…] del directorio actual terminados en txt con el comando ls, le pasaremos el resultado con una tubería (|) al comando wc y contaremos con este el número de ficheros Para tratar la salida de un comando como […]
What’s up, I wish for to subscribe for this website to take newest
updates, thus where can i do it please help out.