LPIC

Guía extraoficial de estudio

Archivos en la Categoría: – Flujos estándares y su redirección

Flujos estándares y su redirección

De entre los diferentes tipos de flujo, definiremos los tres que destacan:

  • Entrada estándar (stdin): Es la utilizada para recoger información. En la mayoría de los casos es a través del teclado.
  • Salida estándar (stdout): Se usa para enviar información al exterior. Suele ser el monitor.
  • Error estándar (stderr) : Es utilizada para llevar los mensajes  de error y de alta prioridad.

Ahora veamos una tabla con los operadores comunes de redirección:

Operador Efecto
> Crea un fichero que contiene la salida estándar. Si el fichero existe, se sobrescribe.
>> Añade al fichero la salida estándar. Si el fichero no existe, se sobrescribe.
2> Crea un fichero con la salida de error estándar. Si el fichero no  existe, se crea.
2>> Añade a un fichero la salida de error estándar. Si el fichero no existe, se crea.
&> Crea un fichero que contiene tanto el error estándar como la salida estándar. Si el fichero existe, se reemplaza.
<> El fichero especificado se  utiliza tanto para la salida estándar como para la entrada estándar.
< El contenido del fichero especificado se envía para utilizarlo como entrada estándar
<< Acepta el texto de las siguientes lineas como entrada estándar.

Veamos ejemplos:

  • Operador “>”:
super@linux-jweh:~> echo envio frase a fichero  >  fichero.txt
super@linux-jweh:~> cat fichero.txt
envio frase a fichero
  • Operador “>>”:

En este ejemplo, vemos como el resultado de ejecutar la orden “ls Descargas” se añade a fichero.txt:

super@linux-jweh:~> ls Descargas >> fichero.txt
super@linux-jweh:~> cat fichero.txt
envio frase a fichero
299859_10150486380139606_800839605_11184435_1607766419_n.jpg
bbgf126.wmv
gbbm12.jpg
gbbm25.jpg
gbbm26.jpg
install-apt4suse.rpm
libapt-pkg-libc6_9-6-2-0.5.15lorg3.2-123.12.i586.rpm
Public
Public.zip
  • Operador “2>”:

Ahora vamos a intentar listar una carpeta que no existe, y enviar los errores a un fichero:

super@linux-jweh:~> ls carpeta_no_existe >> fichero.txt 2>errores.txt
super@linux-jweh:~> cat errores.txt
ls: no se puede acceder a carpeta_no_existe: No existe el fichero o el directorio

Como vemos, no muestra ningún error por pantalla diciendo que la carpeta no existe, ya que hemos redirigido la salida de error al fichero “errores.txt”

  • Operador “2>>”:

Este comando haría exactamente lo mismo que el anterior, solo que las lineas de error se añadirían a las ya existentes.

  • Operador “&>”:

Podríamos decir que este operador actúa como “>” y “2>” a la vez. Vamos a listar una carpeta que existe y otra que no, redirigiendo su salida a fichero.txt.

super@linux-jweh:~> ls carpeta_no_existe Descargas/ &> fichero.txt
super@linux-jweh:~> cat fichero.txt
ls: no se puede acceder a carpeta_no_existe: No existe el fichero o el directorio
Descargas/:
299859_10150486380139606_800839605_11184435_1607766419_n.jpg
bbgf126.wmv
gbbm12.jpg
gbbm25.jpg
gbbm26.jpg
install-apt4suse.rpm
libapt-pkg-libc6_9-6-2-0.5.15lorg3.2-123.12.i586.rpm
Public
Public.zip

Vemos que tanto los errores como el resultado de “ls Descargas” se guardan en el mismo fichero.

  • Operador “<>”:

Utilizamos fichero.txt para tanto para la salida estándar como para la entrada estándar.

super@linux-jweh:~> <> fichero.txt
  • Operador “<“:

En el siguiente ejemplo vemos como cambiamos a al vez la entrada y salida estándar de un programa. Cogemos el contenido de “fichero.txt” y lo enviamos a “fichero2.txt”.

super@linux-jweh:~> cat < fichero.txt > fichero2.txt

Podríamos haber omitido el uso de “<” y en este caso el resultado hubiera sido el mismo. Unix dispone de un gran número de comandos que leen de la entrada estándar, realizan la operación con el texto y escriben en la salida estándar: cat, grep, soft, cut, sed, tr…

  • Operador “<<“:

Hacemos que “programa” acepte la entrada hasta que vea una linea que contiene solo EOF:

 super@linux-jweh:~> programa << EOF
> hola
> EOF