Tengo un comando: mywritercmd -f /tmp/test 2>&1 > log.txt
lo ejecuto en una terminal bash, el comando regresaerror: could not open output file "/tmp/test": Permission denied
Sin embargo, este mensaje de error no está escrito en elregistro.txtarchivo, se queda vacío...
¿Por qué?
Habría adivinado que este mensaje debería ir a stderr y luego al archivo, pero de alguna manera no es así.
Respuesta1
Hacer el pedido causa la diferencia. La línea de comando se evalúa de izquierda a derecha. Cuando llega 2>&1
, la instrucción es entregar stderr a donde quiera que vaya stdout. En este punto, la > log.txt
pieza aún no ha sido evaluada. Como resultado, el stderr permanece en el valor predeterminado, que es enviarlo al terminal.
mywritercmd -f /tmp/test > log.txt 2>&1
dará como resultado el comportamiento que desea y hará que el mensaje de error se escriba en el archivo log.txt.