-Salida estándar (STDOUT) : Pantalla
-Error estándar (STDERR) : Pantalla
A continuación se muestra una tabla con los operadores de redirección:
Operador | Acción |
> | Redirecciona la salida a un archivo |
>> | Agrega la salida a un archivo |
2> | Redirecciona la salida de error estándar a un archivo |
2>> | Agrega a un archivo la salida de error estándar |
< | Envia un archivo como entrada de un comando |
Veamos algunos ejemplos:
En este ejemplo la salida del comando cat se redireccionará al archivo passwd-backup (si el archivo no existe lo crea).
mi-usuario@maquina:~$ cat /etc/passwd > passwd-backup
mi-usuario@maquina:~$
Ahora vamos a ver el contenido del archivo passwd-backup
mi-usuario@maquina:~$ cat passwd-backup
cat passwd-backup
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/bin/sh
bin:x:2:2:bin:/bin:/bin/sh
sys:x:3:3:sys:/dev:/bin/sh
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/bin/sh
man:x:6:12:man:/var/cache/man:/bin/sh
- - El resto de la salida de este comando se omite - -
Vamos a agregar contenido al archivo passwd-backup
mi-usuario@maquina:~$ cat /etc/hosts >> passwd-backup
mi-usuario@maquina:~$
Si vuelves a leer el contenido del archivo passwd-backup encontrarás que se agregó el contenido del archivo /etc/hosts, hay que fijarnos que el operador que utizamos fue el de agregar la salida (>>), si hubieramos ocupado el operador de redirección de la salida (>) el contenido del archivo passwd-backup se hubiera sobrescrito, es decir el contenido actual (del archivo /etc/passwd) se borraría y se reemplazaría por el contenido del archivo nuevo (/etc/hosts).
Ahora vamos a producir a propósito un error, vamos a utilizar el comando touch sin argumentos, por lo cual nos debería salir un error en pantalla (STDERR), pero lo vamos a redireccionar a un archivo.
mi-usuario@maquina:~$ touch 2> archivo-errores
mi-usuario@maquina:~$ A continuación vamos a abrir el contenido del archivo archivo-errores:
mi-usuario@maquina:~$ cat archivo-errores
touch: falta un archivo como argumento
Pruebe `touch --help' para más información.
Como te puedes dar cuenta el contenido de archivo-errores es el error producido por el comando touch, solo que se ha redireccionado a un archivo. Ahora prueba agregando (2>>) el error estandar que produce el comando mkdir al archivo archivo-errores.
Ahora vamos a ver como pasar un archivo como entrada estándar a un comando:
Primero vamos a crear un archivo con el mensaje "Texto dentro del archivo mensaje ":
mi-usuario@maquina:~$ echo "Texto dentro del archivo mensaje" > mensaje
mi-usuario@maquina:~$
Leemos el contenido de ese archivo para checar que el contenido se haya guardado correctamente:
mi-usuario@maquina:~$ cat mensaje
Texto dentro del archivo mensaje
Ahora vamos a pasarle el archivo mensaje como entrada estándar al comando cat, el cual leera el contenido de ese archivo:
mi-usuario@maquina:~$ cat < mensaje
Texto dentro del archivo mensaje
Como te darás cuenta leímos el contenido del archivo mensaje, ahora prueba el comando anterior con los comandos less y echo.
Piping
El piping es redireccionar la salida de un comando como entrada de otro comando, estos comandos se redireccionan mediante la tecla pipe ( | ), yo la escribo prsionando la tecla ALTGR+2 pero puede variar dependiendo de la distriución de cada teclado:
comando-1 | comando-2
Veamos unos ejemplos:
En este ejemplo la salida del comando echo (pantalla) la vamos a redirecionar como entrada del comando cat
mi-usuario@maquina:~$ echo "este mensaje se redirecciona al comando cat" | cateste mensaje se redirecciona al comando cat
El siguiente ejemplo la salida del comando cat (pantalla) la vamos a redireccionar como entrada del comando less
mi-usuario@maquina:~$ cat /etc/passwd | less- - Inicio de salida omitida - -
pulse:x:109:114:PulseAudio daemon,,,:/var/run/pulse:/bin/false
rtkit:x:110:117:RealtimeKit,,,:/proc:/bin/false
saned:x:111:118::/home/saned:/bin/false
hplip:x:112:7:HPLIP system user,,,:/var/run/hplip:/bin/false
gdm:x:113:120:Gnome Display Manager:/var/lib/gdm:/bin/false
eddye:x:1000:1000:eddye,,,:/home/eddye:/bin/bash
haldaemon:x:114:124:Hardware abstraction layer,,,:/var/run/hald:/bin/false
zend:x:1001:1001::/home/eddye/Escritorio/ZendServer-5.1.0_Tarball_B7-php5.3.5-linux-glibc23-x86_64/usr/zend/gui/lighttpd:/sbin/nologin
mysql:x:115:125:MySQL Server,,,:/nonexistent:/bin/false
sshd:x:116:65534::/var/run/sshd:/usr/sbin/nologin
carmeth:x:1003:1004:carmeth,,,,:/home/carmeth:/bin/bash
(END)
No hay comentarios:
Publicar un comentario