Linux/Unix Shell Scripting - duda redirecciones procesos

 
Vista:
sin imagen de perfil
Val: 1
Ha aumentado su posición en 7 puestos en Linux/Unix Shell Scripting (en relación al último mes)
Gráfica de Linux/Unix Shell Scripting

duda redirecciones procesos

Publicado por Jose (1 intervención) el 28/10/2019 04:34:43
Buenas a todos, os quería preguntar la siguiente duda, pues me ha caído en un examen esta pregunta y no dispongo de los conocimientos necesarios para impugnarla. La pregunta en cuestión es:

Si en el intérprete de comandos Linux queremos *forzar* a que un programa llamado "examen" nos imprima en pantalla los errores que consiga durante su ejecución *podemos teclear*:

a) examen 2>&1
b) examen 1>&2
c) examen 2<&2
d) examen 1<&2

A priori sé que la respuesta correcta sería:
*a) examen 2>&1*

Pero, dado que mis conocimientos en redirecciones son muy elementales, las preguntas serían:

*1)* Por favor, en base a examinar minuciosamente el enunciado y dado que textualmente dice *"podemos teclear"* cabe alguna otra posibilidad razonable de las 3 restantes, teniendo además en cuenta que no se especifica el *tipo* de programa que es (si es de correo, si es de escaneo de puertos, si es un keylogger...) para *forzar* que mencionado programa nos imprima en pantalla los errores durante su ejecución?

*2)* en base al enunciado y sus respuestas, se le ocurre alguna manera de impugnar esta pregunta?

Debido a mi desconocimiento es casi seguro que estoy metiendo la pata hablando sin saber y generalizando, pero sólo se me ocurre:

- Comprobar si pudiese influir en la respuesta que en el enunciado de la pregunta se haya cometido alguna imprecisión/ambigüedad (yo, aparte de que no especifica el tipo de programa, no la he conseguido encontrar).

- Carece de sentido *forzar* la redirección por pantalla de la salida de errores de un programa cuando, por defecto, la salida de errores es ya de por sí la pantalla.

- Este tipo de redirecciones se utilizan para redireccionar a ficheros o justamente para lo contrario de lo que se explicita en el enunciado, esto es, para ocultar los errores en pantalla cuando ejecuto un programa en background y no quiero que me molesten sus errores por pantalla.

- o, lo abarcado en esta pregunta es muy complejo y además una solución más idónea sería...(yo no la sé).

Un saludo y muchas gracias de antemano por su tiempo.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

duda redirecciones procesos

Publicado por Tom (361 intervenciones) el 28/10/2019 08:32:46
La pregunta no está muy bien redactada, pero al ver las posibles respuestas propuestas ya se entiende bien. No creo que sea tan imprecisa como para impugnarla.

Lo que sí es cierto es que tanto la opción a) como la b) funcionan, aunque la correcta sea la a). Esto es así porque, como bien dices, la salida de errores ya va también al terminal.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Antoni Masana
Val: 7
Ha aumentado su posición en 2 puestos en Linux/Unix Shell Scripting (en relación al último mes)
Gráfica de Linux/Unix Shell Scripting

duda redirecciones procesos

Publicado por Antoni Masana (2 intervenciones) el 29/10/2019 20:29:53
Buenas José,

Como bien dices no dispones de conocimientos y por esa razón has escrito este correo.

Primero la respuesta correcta es la A.

El tipo de programa es lo de menos, y si te hubiese estudiado habrías visto que las palabras claves de la frase son forzar y errores y ya me díras que fuerzas de los errores en la respuesta B

Vamos a dar un repaso.

Hay tres direccionamientos: el 0, el 1 y el 2

1
2
3
0 - stdin  - signo <      - Es de entrada estandar.
1 - stdout - signo > o 1> - Es de salida estandar.
2 - stderr - signo     2> - Es de salida de errores. stderr

Cuando ponemos 1> o > quiere decir que los mensajes normales se dirijan a lo que esté después del signo, si se omite es la pantalla.
Cuando ponemos 2> quiere decir que los mensajes de error se dirijan a lo que esté después del signo, si se omite es la pantalla.

Cuando se escribe esto: 2>&1 quiere decir que se envíen los mensajes de error al mismo sitio donde este dirigida la Salida Estandar.

Por ejemplo:

1
cat fichero.txt >/dev/tty2 2>&1

En este ejemplo nuestra consola es la tty1 y el ls lo enviamos tty2 y forzamos que si se produce un error también salga por la tty2

Otro Ejemplo:

1
cat fichero.txt 2>/dev/tty2 1>&2

Esto hace lo mismo que la anterior. Re-dirigimos la salida de error ( stderr ) a la tty2 y le decimos que la salida estandar ( stdout ) se la misma que la de error.

y como he dicho el 1 y el 2 son de salida por lo que las respuestas c y d son erróneas.


Haber si estudiamos un poco no es tan difícil de entender.


Saludos.
\\//_
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar