Este documento describe conceptos clave sobre entrada y salida estándar, error estándar y tuberías en sistemas Unix. Explica que la entrada estándar suele estar conectada al teclado, la salida estándar a la pantalla y el error estándar a la pantalla. También describe cómo redirigir estos flujos mediante operadores en la shell como >, >>, 2>, | y cómo examinar los archivos /proc/self/fd para ver a qué archivos están conectados los descriptores de archivo de un proceso. Incluye varias preguntas de opción
1. Standard I/O and Pipes
1
Capítulo 1 HTUEntrada estándar y salida estándarUTH
Conceptos clave
• Los programas basados en la terminal tienden a leer información desde una
fuente y a escribir la información en un destino.
• La fuente desde donde se leen los programas se conoce como una entrada
estándar (TstdinT, del inglés standard in) y suele estar conectada al teclado de la
terminal.
• El destino al que los programas escriben se conoce como una salida estándar
(TstdoutT, del inglés standard out) y suele estar conectada a la pantalla de la
terminal.
• Cuando se utiliza la shell TbashT, la TstdoutT puede redirigirse mediante T>T o T>>T y la
TstdinT puede redirigirse mediante T<T.
HTUPreguntasUTH
Use the following transcript to answer the next 3 questions.
T[prince@station prince]$ whoT
prince tty1 Sep 22 20:02
T[prince@station prince]$ cat < /etc/services >> ~/servicesT
HTUQuestion 1UTH
¿Qué archivo está utlizando el comando TcatT para la entrada estándar?
A. T/dev/tty1T
B. T/etc/servicesT
C. T/dev/nullT
D. T~/servicesT
E. None of the above
HTUQuestion 2UTH
¿Qué archivo está utilizando el comando TcatT para la salida estándar?
A. T~/servicesT
B. T/dev/tty1T
C. T/etc/servicesT
2. Standard I/O and Pipes
2
D. T/dev/nullT
E. None of the above
HTUQuestion 3UTH
¿Qué archivo está utilizando la shell TcatT para la salida estándar?
A. T/dev/tty1T
B. T~/servicesT
C. T/dev/nullT
D. T/etc/servicesT
E. None of the above
HTUQuestion 4UTH
¿Cuáles de las siguientes líneas de comando agregaría líneas al archivo (ya existente)
Tdf.outT?
A. Tdf > df.outT
B. Tdf >+ df.outT
C. Tdf.out << df T
D. Tdf.out +< df T
E. None of the above
Use the following transcript to answer the next 3 questions.
T[prince@station prince]$ psT
PID TTY TIME CMD
1409 pts/0 00:00:00 bash
1542 pts/0 00:00:00 vmstat
1543 pts/0 00:00:00 ps
T[prince@station prince]$ ls -l /proc/1542/fdT
total 6
lrwx------ 1 prince prince 64 Sep 22 20:42 0 ->
/dev/pts/0
l-wx------ 1 prince prince 64 Sep 22 20:42 1 ->
/tmp/vmstat.out
lrwx------ 1 prince prince 64 Sep 22 20:42 2 ->
/dev/pts/0
lr-x------ 1 prince prince 64 Sep 22 20:42 3 ->
/proc/uptime
lr-x------ 1 prince prince 64 Sep 22 20:42 4 ->
/proc/stat
3. Standard I/O and Pipes
3
lr-x------ 1 prince prince 64 Sep 22 20:42 5 ->
/proc/meminfo
HTUQuestion 5UTH
¿Cuáles de las siguientes archivos está utilizando el comando TvmstatT para salida
estándar?
A. T/proc/statT
B. T/dev/tty1T
C. T/dev/pts/0T
D. T/tmp/vmstat.outT
E. There is not enough information provided.
HTUQuestion 6UTH
¿Qué sucedió al iniciarse el comandoTvmstatT?
A. La shell TbashT creó un nuevo archivo.
B. La shell TbashT sobrescribió un archivo ya existente.
C. La shell TbashT agregó a un archivo ya existente.
D. El comando TvmstatT creó un nuevo archivo.
E. There is not enough information provided.
HTUQuestion 7UTH
¿Cuál de los siguientes archivos está utilizando el comando para la entrada estándar?
A. T/proc/statT
B. T/tmp/vmstat.outT
C. T/dev/pts/0T
D. T/dev/tty1T
E. There is not enough information provided.
Use the following transcript to answer the next 3 questions.
T[prince@station prince]$ cal > cal.out
T[prince@station prince]$ ls -l /dev/stdinT
4. Standard I/O and Pipes
4
lrwxrwxrwx 1 root root 17 Apr 1 11:13 /dev/stdin ->
../proc/self/fd/0
T[prince@station prince]$ cat /dev/stdin < cal.outT
September 2003
Su Mo Tu We Th Fr Sa
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
HTUQuestion 8UTH
¿Qué es lo que mejor describe el archivo T/proc/selfT?
A. El archivo es un enlace simbólico que apunta a la shell de inicio actual.
B. El archivo es un enlace simbólico que apunta al directorio raíz.
C. El archivo es un enlace simbólico que apunta a T/dev/stdoutT.
D. El archivo es un enlace simbólico que apunta a T/tmpT.
E.
The file is a symbolic link which resolves to the T/proc/pidT directory
corresponding to the current process.
HTUQuestion 9UTH
Para el proceso TcatT a qué archivo apuntaría el enlace simbólico T/proc/self/fd/0T?
A. T/dev/stdinT
B. Tcal.outT
C. T/dev/tty1T
D. T/tmpT
E. T/proc/selfT
HTUQuestion 10UTH
Para el proceso TcatT, ¿a qué archivo muy probablemente apuntaría el enlace simbólico
T/proc/self/fd/1T?
A. T/proc/selfT
B. T/tmpT
C. Tcal.outT
D. T/dev/stdinT
5. Standard I/O and Pipes
5
E. T/dev/tty1T
Capítulo 2 HTUError estándarUTH
Conceptos clave
• Los programas Unix reportan condiciones de error a un destino llamado error
estándar (TstderrT).
• Usualmente, stderr está conectado a una pantalla de terminal y los mensajes de
error se encuentran entremezclados con las salidas estándar.
• Cuando se utiliza la shell TbashT, el flujo de stderr puede redirigirse a un archivo
mediante T2>T.
• Al utilizar TbashT, el flujo de stderr puede combinarse con el flujo de stdout
mediante T2>&1T o T>&
HTUPreguntasUTH
Use the following transcript to answer the next question.
T[madonna@station madonna]$ cat chmod.errT
chmod: changing permissions of `/tmp/orbit-elvis': Operation not
permitted
chmod: changing permissions of `/tmp/orbit-elvis-a8e8d915': Operation
not permitted
chmod: changing permissions of `/tmp/orbit-hogan': Operation not
permitted
chmod: changing permissions of `/tmp/orbit-root': Operation not
permitted
chmod: changing permissions of `/tmp/orbit-student': Operation not
permitted
HTUQuestion 1UTH
¿Cuál de las siguientes líneas de comando muy probablemente crearon el archivo
Tchmod.errT?
A. Tchmod a+r /tmp/* > chmod.errT
B. Tchmod a+r /tmp/* 2> chmod.errT
C. Tchmod a+r /tmp/* >> chmod.errT
D. Tchmod a+r /tmp/* e> chmod.errT
E. None of the above
6. Standard I/O and Pipes
6
HTUQuestion 2UTH
¿Cuáles de las siguientes líneas de comando combinarían stdout y stderr y redirigirían el
flujo combinado al archivo T/tmp/find.outT?
A. Tfind /etc > /tmp/find.out 2>&1 T
B. Tfind /etc >> /tmp/find.out T
C. Tfind /etc >& /tmp/find.out T
D. Tfind /etc >>& /tmp/find.out T
E. A y C
HTUQuestion 3UTH
¿Cuáles de las siguientes líneas de comando combinarían stdout y stderr y redirigirían el
flujo combinado al archivo T/tmp/find.outT si éste ya existia?
A. Tfind /etc > /tmp/find.out 2>&1 T
B. Tfind /etc >> /tmp/find.out T
C. Tfind /etc >> /tmp/find.out 2>&1 T
D. Tfind /etc >>& /tmp/find.out T
E. A y C
Use the following transcript to answer the next two questions.
T[madonna@station madonna]$ cat /etc/t* > /tmp/cat.out 2> /tmp/cat.errT
[1]+ Stopped cat /etc/t* >/tmp/cat.out 2>/tmp/cat.err
T[madonna@station madonna]$ psT
PID TTY TIME CMD
2419 pts/1 00:00:00 bash
3126 pts/1 00:00:00 cat
3127 pts/1 00:00:00 ps
T[madonna@station madonna]$ ls -l /proc/3126/fdT
total 4
lrwx------ 1 madonna madonna 64 Sep 23 04:15 0 ->
/dev/pts/1
l-wx------ 1 madonna madonna 64 Sep 23 04:15 1 ->
/tmp/cat.out
l-wx------ 1 madonna madonna 64 Sep 23 04:15 2 ->
/tmp/cat.err
lr-x------ 1 madonna madonna 64 Sep 23 04:15 3 ->
/etc/termcap
T[madonna@station madonna]$ fg
T[madonna@station madonna]$ ??????? T
cat: /etc/tomcat4: Is a directory
7. Standard I/O and Pipes
7
HTUQuestion 4UTH
¿Qué archivo descriptor utiliza Linux como error estándar?
A. 0
B. 1
C. 2
D. 3
E. None of the above
HTUQuestion 5UTH
¿Cuáles de las siguientes líneas de comando podrían remplazar los signos de
interrogación como la última línea de comando en la transcripción?
A. Tcat /dev/pts/1T
B. Tcat /tmp/cat.outT
C. Tcat /tmp/cat.errT
D. Tcat /etc/termcapT
E. Tcat /dev/nullT
HTUQuestion 6UTH
¿A cuál de los siguientes archivos esperaría usted que apuntara el enlace simbólico
T/dev/stderrT?
A. T../proc/self/fd/2T
B. T../proc/self/fd/1T
C. T../proc/self/fd/0T
D. T/dev/nullT
E. None of the above
Use the following transcript to answer the next two questions.
T[madonna@station madonna]$ cat groups.shT
#!/bin/bash
if id $1
then
8. Standard I/O and Pipes
8
echo "The user $1 belongs to the following groups: $(id -Gn
$1) "
else
echo "The user $1 does not exist"
fi
T[madonna@station madonna]$ ./groups.sh elvisT
uid=501(elvis) gid=501(elvis)
groups=501(elvis),201(wrestle),202(physics),203(emperors),205(music)
The user elvis belongs to the following groups: elvis wrestle physics
emperors music
T[madonna@station madonna]$ ./groups.sh barneyT
id: barney: No such user
The user barney does not exist
HTUQuestion 7UTH
¿Cuál de los siguientes remplazos para la línea número 3 del archivo Tgroups.shT haría
que el script mostrara una línea sencilla comenzando por "El usuario" en todos los
casos?
A. Tif id -q $1 T
B. Tif id $1 >/dev/null 2>&1T
C. Tif id $1 2> /dev/nullT
D. Tif id $1 > /dev/nullT
E. None of the above
HTUQuestion 8UTH
¿Cuál de los siguientes remplazos de línea número 7 del archivo Tgroups.shT haría que el
script se quejara en el error estándar si el usuario no existe? ¿(En lugar de salida
estándar)?
A. Techo "The user $1 does not exist" > /dev/stderrT
B. Techo -e "The user $1 does not exist" T
C. Techo "The user $1 does not exist" > /proc/self/fd/2T
D. Techo -E "The user $1 does not exist" T
E. A y C
HTUQuestion 9UTH
Asumiendo que TcmdT es un comando sencillo y sus argumentos (pero no los
metacaracteres de shell), ¿qué redirigiría error estándar (únicamente) al archivo
9. Standard I/O and Pipes
9
T/tmp/errorsT, agregando al archivo si ya existió?
A. Tcmd 2> /tmp/errorsT
B. Tcmd >> /tmp/errorsT
C. Tcmd >+ /tmp/errorsT
D. Tcmd 2>+ /tmp/errorsT
E. Tcmd 2>> /tmp/errorsT
HTUQuestion 10UTH
Asumiendo que TcmdT es un comando sencillo y sus argumentos (pero no metacaracteres
de shell), ¿qué garantizaría la ejecución de TcmdT sin generar una salida visible?
A. Tcmd 2> /dev/nullT
B. Tcmd > /dev/nullT
C. T(cmd)T
D. Tcmd > /dev/null 2>&1 T
E. Tsilent (cmd)T
Capítulo 3 HTUTuberíasUTH
Conceptos clave
• El flujo de stdout desde un proceso puede estar conectado al flujo de stdin de
otro proceso mediante lo que Unix llama una "tubería".
• Varios de los comandos en Unix están diseñados para operar como un filtro, leer
la entrada desde stdin y enviar la salida a stdout.
• TbashT usa "|" para crear una tubería entre dos comandos.
HTUPreguntasUTH
HTUQuestion 1UTH
¿Cuáles de las siguientes líneas de comando reducirían la salida del comando Tlocate
confT a solo los archivos cuyos nombres o ruta contengan el texto TpythonT?
A. Tlocate conf >> grep pythonT
10. Standard I/O and Pipes
10
B. Tlocate conf | grep pythonT
C. Tlocate conf < grep pythonT
D. Tlocate conf | grep < pythonT
E. None of the above
HTUQuestion 2UTH
¿Cuáles de las siguientes líneas de comando producirían un listado de todos los
procesos que contengan el texto TsshdT?
A. Tps aux | sort | grep sshdT
B. Tps aux | grep sshd | sortT
C. Tgrep sshd | ps aux | sortT
D. Tsort | ps aux | grep sshdT
E. A or B
Utilice la siguiente transcripción para contestar las 6 preguntas a continuación.
T[elvis@station elvis]$ ls -R / 2> /dev/null | grep etc | lessT
[1]+ Stopped ls --color=tty -R / 2>/dev/null | grep
etc | less
T[elvis@station elvis]$ psT
PID TTY TIME CMD
1603 pts/2 00:00:01 bash
2391 pts/2 00:00:00 ls
2392 pts/2 00:00:00 grep
2393 pts/2 00:00:00 less
2394 pts/2 00:00:00 ps
T[elvis@station elvis]$ ls -l /proc/2391/fdT
total 0
lrwx------ 1 elvis elvis 64 Sep 23 09:49 0 ->
/dev/pts/2
l-wx------ 1 elvis elvis 64 Sep 23 09:49 1 ->
pipe:[20966]
l-wx------ 1 elvis elvis 64 Sep 23 09:49 2 -> /dev/null
HTUQuestion 3UTH
¿Qué archivo (o tubería) está ligada al stderr del proceso TlsT?
A. Una tubería del procesoTgrepT
B. T/dev/nullT
11. Standard I/O and Pipes
11
C. T/dev/pts/2T
D. Una tubería para el proceso TlessT
E. None of the above
HTUQuestion 4UTH
¿Qué archivo (o tubería) está conectado al stderr del proceso TgrepT?
A. T/dev/nullT
B. T/dev/pts/2T
C. Una tubería del procesoTlsT
D. Una tubería para el proceso TlessT
E. None of the above
HTUQuestion 5UTH
¿Qué archivo (o tubería) está ligado al stdin del proceso TgrepT?
A. Una tubería para el proceso TlessT
B. Una tubería del procesoTlsT
C. T/dev/pts/2T
D. T/dev/nullT
E. None of the above
HTUQuestion 6UTH
¿Qué archivo (o tubería) está ligado al stdin del proceso TlessT?
A. Una tubería del procesoTlsT
B. T/dev/pts/2T
C. T/dev/nullT
D. Una tubería del procesoTgrepT
E. None of the above
HTUQuestion 7UTH
12. Standard I/O and Pipes
12
¿A qué expresión apuntaría el enlace simbólico T/proc/2392/fd/0T?
A. T/dev/pts/2T
B. Tpipe:[20966]T
C. T/dev/nullT
D. T/tmpT
E. T/dev/tty2T
HTUQuestion 8UTH
Cuando TbashT reporta el grupo de proceso detenido, el alias TlsT se ha expandido a Tls --
color=ttyT. La opción T--color=ttyT le ordena al comando TlsT generar secuencias de control
de color sólo si su stdout está ligada a la terminal. ¿Cuál es verdadero?
A.
El comando TlsT genera secuencias de control de color que pueden observarse a
través del visualizador de página TlessT.
B. The TlsT command does not generate color control sequences.
C.
El comando TlsT genera secuencias de control de color pero son filtradas por el
comando TgrepT.
D.
El comando TlsT nunca genera secuencias de control de color (el comando T--
color=ttyT está incluído sólo para propósitos de compatibilidad con versiones
anteriores).
E. Ninguna de las anteriores.
HTUQuestion 9UTH
¿Cuál de las siguientes líneas de comando permitirían al paginador TlessT navegar
mensajes de error de TgrepT como también la salida?
A. Tgrep root /etc/* 2>&1 | less T
B. Tgrep root /etc/* | less 2>&1 T
C. Tgrep root /etc/* >>| less T
D. Tgrep root /etc/* 2| less T
E. None of the above
La opción T-jT hace que el comando TpsT genere salida de "un trabajo de control orientado".
Utilice la siguiente transcripción para contestar la próxima pregunta.
T[elvis@station elvis]$ ls -R / | grep etc | lessT
13. Standard I/O and Pipes
13
[1]+ Stopped ls --color=tty -R / | grep etc | less
T[elvis@station elvis]$ ps -jT
PID PGID SID TTY TIME CMD
1215 1215 1215 pts/0 00:00:00 bash
3242 3242 1215 pts/0 00:00:00 ls
3243 3242 1215 pts/0 00:00:00 grep
3244 3242 1215 pts/0 00:00:00 less
3246 3246 1215 pts/0 00:00:00 ps
HTUQuestion 10UTH
¿Cuál sería la expansión más razonable del segundo encabezado de columna, TPGIDT?
A. Process Group ID
B. ID de generación padre
C. ID de género del proceso
D. ID de góndola Powder
E. None of the above