diferencia entre las siguientes redirecciones [Solucionado]
Publicado: 24 Abril, 2012 - 01:16 diferencia entre las siguientes redirecciones [Solucionado]
Hola gente creo un nuevo post para ver si alguien me puede finalmente explicar la diferencia entre hacer
comando &> /dev/nully
comando > /dev/null 2>&1Entiendo que en la primera redirijo stderr y stdout a /dev/null y en la segunda redirijo stdout a /dev/null y luego lo que no me queda claro es:
2>&1veo que redirijo stderr a stdout pero de que?
Espero que se haya entendido la duda.
Saludos!
- Inicie sesión o regístrese para enviar comentarios
- 301 lecturas


comando &> /dev/null # en este caso envias el STDERR a /dev/nullcomando > /dev/null # en este caso envias STDOUT a /dev/null
comando > /dev/null 2>&1 # en este caso envias STDOUT a /dev/null y luego STDERR a STDOUT lo cual lo envia a /dev/null
Para comprobar las opciones , hace un ejercicio ,reemplaza /dev/null por un archivo cualquiera y berifica que se guarda cada vez en dicho archivo
$ touch /un_archivo$ orden > /un_archivo
$ cat /un_archivo
Y así vas probando todas las opciones.
yo tenia entendido por las bibliografias que &> redirige tanto STDOUT como STDERR. De ahí mi duda, por qué producen resultados diferentes? Si hacer > /dev/null 2>&1 es igual a > /dev/null 2> /dev/null o estoy equivocado?
Gracias por la respuesta!
Edito..
Ejemplo
roma@roma-desktop:~$ ls /root/ls: no se puede abrir el directorio /root/: Permiso denegado
roma@roma-desktop:~$ ls /root/ &> /dev/null
roma@roma-desktop:~$ ls /root/ > /dev/null
ls: no se puede abrir el directorio /root/: Permiso denegado
roma@roma-desktop:~$ ls /root/ > /dev/null 2>&1
roma@roma-desktop:~$ ls /root/ > /dev/null 2> /dev/null
roma@roma-desktop:~$
http://www.xaprb.com/blog/2006/06/06/what-does-devnull-21-mean/
http://rm-rf.es/stdin-stdout-y-stderr-redirigir-en-unixlinux/
comando &> archivo y comando > archivo 2>&1 son equivalentes, en ambos casos se está redirecionando la salida standard y el error standard juntos a lo que sea que se ponga a la derecha.
EDITO:
http://www.gnu.org/software/bash/manual/bashref.html
http://www.xaprb.com/blog/2006/06/06/what-does-devnull-21-mean/
http://rm-rf.es/stdin-stdout-y-stderr-redirigir-en-unixlinux/
A ver... lo que estoy viendo de mis pruebas es que
roma@roma-desktop:~$ ls -3 > fichero.log 2>&1roma@roma-desktop:~$ cat fichero.log
ls: invalid option -- '3'
Pruebe `ls --help' para más información.
es exactamente lo mismo que
roma@roma-desktop:~$ ls -3 &> fichero.txtroma@roma-desktop:~$ cat fichero.txt
ls: invalid option -- '3'
Pruebe `ls --help' para más información.
Mi pregunta para que hacer lo primero si lo segundo a mi entender resulta mas legible y fácil de entender?
A no ser que no produzcan el mismo resultado como se vio en el post de jlazkano bash script con szap
Por que? esa es la pregunta!!
Gracias por los links ya los habia leído!
comando &> archivo y comando > archivo 2>&1 son equivalentes, en ambos casos se está redirecionando la salida standard y el error standard juntos a lo que sea que se ponga a la derecha.
Yo entiendo que es lo mismo tambien pero evidentemente no siempre producen el mismo resultado.
Ejemplo: el post que nombro de jlazkano bash script con szap
Yo entiendo que es lo mismo tambien pero evidentemente no siempre producen el mismo resultado.
Ejemplo: el post que nombro de jlazkano bash script con szap
En el caso qeu citas el problema era otro , necesitaba ejecutar un comando y en paralelo el siguiente por eso ,el '&' al final ,que era lo que le faltaba .( creo que es a lo que te referís )
Es la misma situacion cuando queres ejecutar algo en el terminar y mandarlo a background liberando la terminal para seguir con otra cosa
$ comando &Yo entiendo que es lo mismo tambien pero evidentemente no siempre producen el mismo resultado.
Ejemplo: el post que nombro de jlazkano bash script con szap
En el caso qeu citas el problema era otro , necesitaba ejecutar un comando y en paralelo el siguiente por eso ,el '&' al final ,que era lo que le faltaba .( creo que es a lo que te referís )
Es la misma situacion cuando queres ejecutar algo en el terminar y mandarlo a background liberando la terminal para seguir con otra cosa
$ comando &No hay dudas sobre el & al final.
En el enlace que paso pato dice claramente que &> y 2>&1 son equivalentes.
Yo personalmente me inclino por usar &>
Marco el tema como solucionado.
Saludos y gracias a todos por los comentarios!!