Semana 4 y 5 la shell bash guia de ejercicios resuelta

  • 291 views
Uploaded on

 

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
    Be the first to like this
No Downloads

Views

Total Views
291
On Slideshare
0
From Embeds
0
Number of Embeds
2

Actions

Shares
Downloads
18
Comments
0
Likes
0

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. La shell bash 1 Capítulo 1 Introducción a Bash Conceptos clave • La shell por defecto en Red Hat Enterprise Linux es la shell bash. • La shell bash se puede utilizar de modo interactivo o como un lenguaje de escritura de gran alcance. • Tras el arranque, bash ejecuta comandos hallados en el archivo ~/.bashrc, permitiéndole a los usuarios personalizar su shell. • La shell bash guarda el historial de las líneas de comando ejecutadas. La líneas de comando se pueden recuperar desde el historial mediante varias expansiones de historial que comienzan por "!". Preguntas Question 1 ¿Cuál es la shell predeterminada en Red Hat Enterprise Linux? A. /bin/conch B. /bin/sh C. /usr/bin/tcsh D. /bin/bash E. None of the above Question 2 ¿Qué podría interpretarse como un comentario de una shell bash? A. /* blagh */ B. % blagh C. # blagh D. B and C E. None of the above Question 3
  • 2. La shell bash 2 ¿Para cuál de las siguientes tareas la shell bash se utiliza más? A. Ejecutar comandos para usuarios de modo interactivo B. Cálculos numéricos C. Ejecución automática de comandos desde scripts D. A y C E. Todas las anteriores Question 4 Tras arrancar, ¿desde qué archivo bash ejecuta automáticamente los comandos? A. ~/bash_startup B. ~/.bash_startup C. ~/.bash D. ~/.bashrc E. None of the above Utilice la siguiente salida del comando history para contestar las siguientes 4 preguntas. Para cada pregunta, asuma que el comando se teclea directamente después del comando history como se muestra a continuación. [elvis@station elvis]$ history 4 cd .. 5 ls 6 cd doc/ 7 ls ... 977 xmms & 978 ls -al /tmp/.esd/socket 979 rm /tmp/.esd/socket 980 ps aux | grep karen 981 pgrep -u karen 982 rm /tmp/.esd/socket 983 su 984 ls 985 ls -l /tmp/.esd/ 986 ls -ld /tmp/.esd/ 987 s u 988 su 989 history Question 5
  • 3. La shell bash 3 ¿Qué comando se sustituiría si elvis después tecleara !5? A. xmms & B. rm /tmp/.esd/socket C. ls D. historial E. None of the above Question 6 ¿Qué comando se sustituiría si elvis después tecleara !!? A. xmms & B. cd .. C. su D. ls E. None of the above Question 7 ¿Qué comando se sustituiría si elvis después tecleara !-5? A. xmms & B. ls C. ls -l /tmp/.esd/ D. historial E. None of the above Question 8
  • 4. La shell bash 4 ¿Qué comando se sustituiría si elvis después tecleara !p? A. ps aux | grep karen B. pgrep -u karen C. ps aux D. pico /etc/hosts E. La sustitución no se puede determinar a partir de la información provista. Question 9 ¿Qué secuencias se pueden utilizar para acceder a partes del historial de comandos de bash? A. ESC-. B. CTRL-. C. CTRL-H D. CTRL-ALT-F3 E. None of the above Question 10 ¿Qué comando se utiliza para listar el historial de comandos de bash? A. historial
  • 5. La shell bash 5 B. hist C. h D. command E. A y D Capítulo 2 Listas de comandos y scripts Conceptos clave • Comandos múltiples se pueden separar con un ;. • Tras la salida, cada comando devuelve un entero a su padre denominado valor de retorno. • La variable de shell $? se expande al valor de retorno de un comando ejecutado previamente. • && y || separan condicionalmentecomandos múltiples. Preguntas Después de ejecutar una línea de comando desde un inteŕprete de comandos interactivo bash se presentarán los siguientes mensajes: bash: timelog: Permission denied timestamp failed Question 1 ¿Cuál de los siguientes comandos pudieron haber producido los mensajes? A. date >> timelog || echo timestamp failed
  • 6. La shell bash 6 B. date >> timelog && echo timestamp failed C. date >> timelog ; echo timestamp failed D. A y C E. Todas las anteriores Question 2 ¿Qué expresión mostrará el valor de retorno de la shell actual en ejecución? A. echo $? B. echo $$ C. echo $RET_VAL D. A y C E. The question is misconceived, because the current shell does not have a return value until it exits. Use the following transcript to answer the next 2 questions. [elvis@station elvis]$ echo "stomp" > blue_suede_shoes [elvis@station elvis]$ chmod 600 blue_suede_shoes [elvis@station elvis]$ cat blue_suede_shoes stomp Question 3 ¿Qué comando podría ejecutar elvis para ver el valor de retorno del comando cat? A. echo $! B. echo $$ C. echo $? D. A y C E. None of the above Question 4 ¿Qué comando podría ejecutar elvis para visualizar el valor de retorno del comando chmod? A. echo $!
  • 7. La shell bash 7 B. echo $-$ C. echo $$ D. echo $RET_chmod E. None of the above Question 5 ¿Qué ejecutaría el comando chmod sólo si el comando mkdir tiene éxito? A. mkdir mail || chmod 700 mail B. mkdir mail && chmod 700 mail C. mkdir mail ; chmod 700 mail D. mkdir mail | chmod 700 mail E. None of the above Question 6 ¿Qué ejecutaría el comando chmod sólo si el comando mkdir falla? A. mkdir mail | chmod 700 mail B. mkdir mail && chmod 700 mail C. mkdir mail ; chmod 700 mail D. mkdir mail or chmod 700 mail E. None of the above Question 7 ¿Qué ejecutaría el comando chmod sin importar el éxito o fracaso del comando mkdir? A. mkdir mail | chmod 700 mail B. mkdir mail && chmod 700 mail C. mkdir mail ; chmod 700 mail D. mkdir mail or chmod 700 mail E. None of the above Question 8
  • 8. La shell bash 8 ¿Cuál es la forma correcta de ejecutar los comandos cd y ls en una sola subshell? A. cd /etc && ls B. ( cd /etc ; ls) C. { cd /etc ; ls} D. ${ cd /etc ; ls} E. None of the above Question 9 Después de ejecutar con éxito el comando de la pregunta anterior, ¿cuál sería su directorio actual de trabajo? A. / B. ~ C. La pregunta es debatible. Ninguna de los comandos de la pregunta anterior es correcta. D. /etc E. The same directory from which the command line was executed. The current shell's working directory would not change. Question 10 Después de ejecutar la línea de comandos cd /tmp; ls, ¿cuál es su directorio de trabajo actual? A. / B. ~ C. /ls D. /etc E. /tmp Capítulo 3 Variable de bash Conceptos clave • Las variables de la shell se asignan mediante una sintaxis A=apple.
  • 9. La shell bash 9 • Las variables se examinan ("desreferencian") con el caracter $ como en echo $A. • En el nivel de kernel, cada proceso tiene una colección de variables de entorno que los procesos hijos heredan. • El comando export convierte una variable de shell en una variable de entorno. • Los comandos set y env listan las variables de shell y las variables de entorno, respectivamente. Preguntas Question 1 ¿Qué no se utiliza como nombre de variable de shell? A. NAME B. PHONE_1 C. Addr2 D. ZipCode E. All of the above could be used as the name of a shell variable. Question 2 ¿Cuál de los siguientes no puede utilizarse como nombre de una variable de entorno? A. NAME B. PHONE_1 C. Addr2 D. ZipCode E. All of the above could be used as the name of a environment variable. El usuario elvis lee el siguiente párrafo desde la página de manual date(1). ENVIRONMENT TZ Specifies the timezone, unless overridden by command line param- eters. If neither is specified, the setting from /etc/localtime is used. Al ejecutar el comando date descubre que la zona horaria actual es EDT.
  • 10. La shell bash 10 [elvis@station elvis]$ date Fri Sep 5 15:46:02 EDT 2003 En un esfuerzo por configurar su zona horaria como MDT, elvis agrega la siguiente línea al archivo .bashrc en su directorio de inicio. TZ=MDT Question 3 El usuario elvis inicia una nueva subshell y ejecuta el comando date, esperando ver la fecha reportada en la zona horariaMDT. No obstante, el comando date aún reporta la fecha en la zona horaria EDT. ¿Qué hizo mal elvis? A. The variable TZ is being set as a shell variable, not an environment variable. B. Para que los cambios en el archivo ~/.bashrc surtan efecto, elvis debe salir y reiniciar (en vez de iniciar una nueva subshell). C. elvis debe establecer permisos ejecutables en el archivo .bashrc en su directorio de inicio. D. elvis utilizó una sintaxis errada y debería haber agregado la línea TZ = MDT en su lugar. E. Ninguna explica de forma adecuada el error que cometió elvis. Question 4 ¿Qué cambio debería hacer elvis para corregir su error? A. Debería modificar la línea agregada a .bashrc para leer export TZ=MDT B. Ejecutar el comandochmod a+x ~/.bashrc C. Debería modificar la línea agregada a .bashrc para que lea TZ=MDT; export TZ D. Either A or C E. Ninguno de estos pasos resolvería el problema. Question 5 ¿Qué establecería correctamente la variable de shell ADDR como 123 Elm St.? A. ADDR= 123_Elm_St. B. ADDR = 123 Elm St. C. ADDR="123 Elm St."
  • 11. La shell bash 11 D. ADDR=123_Elm_St. E. None of the above. Question 6 ¿Cuál de las siguientes no es una característica de las variables de entorno? A. Todos los procesos usan variables de entorno, no sólo aquellos que ejecutan la shell bash. B. La variables de entorno son heredadas por defecto por los procesos hijos. C. Upon startup, the bash shell clears all previously defined environment variables. D. Las variables de entorno pueden examinarse mediante archivos que se encuentran en el sistema de archivos /proc. E. Las variables de entorno poseen todas las características. Question 7 ¿Qué comando presentaría el id (pid) del proceso de la shell actual? A. echo $$ B. echo $! C. echo $PID D. echo $BASH_PID E. None of the above. Question 8 ¿Cuál de los siguientes comandos crearía un archivo llamado jan_reports.txt? A. MONTH=jan; touch ${MONTH}_report.txt B. MONTH=jan; touch $MONTH_report.txt C. MONTH= jan; touch $MONTH_report.txt D. MONTH= jan; touch $"MONTH"_report.txt E. A y B Question 9
  • 12. La shell bash 12 ¿Cuál de los siguientes comandos agregaría el directorio /opt/bin al valor actual de la variable de entorno PATH? A. PATH=$PATH:/opt/bin B. PATH+=/opt/bin C. PATH=${PATH}+"/opt/bin" D. A y B E. Todas las anteriores El usuario elvis ejecuta el siguiente comando. [elvis@station elvis]$ STYLE=terse Question 10 ¿Cuál de los siguientes comandos podría utilizarse para examinar el valor de STYLE? A. set B. env C. cat /proc/$$/environ D. export E. A y C Capítulo 4 Expansión de la línea de comandos Conceptos clave • La shell bash expande ciertos metacaracteres de línea de comandos antes de interpretar el comando. • La expansión con la tilde amplía los símbolos que comienzan por una tilde (~) a los directorios de inicio de usuarios. • La expansión de llaves amplía los símbolos con corchetes ({}) en palabras múltiples, cada una contiene una sola palabra a partir de la lista especificada. • La sustitución de comandos expande el texto delimitado por comillas invertidas (``) o "dólar paréntesis" ($()) en la salida producida por el comando encerrado. • Las comillas dobles ("..." ), las comillas sencillas ('...') y el caracter de barra invertida pueden usarse para evitar que la shell expanda los caracteres.
  • 13. La shell bash 13 Preguntas Question 1 ¿Qué signo de puntuación no está asociado con la expansión de la línea de comandos bash? A. { } B. ~ C. $ D. * E. % Question 2 Cuando es evaluado por la shell bash, ¿ a cuántas palabras se expandirá lo siguiente? {jan,feb,mar}.{data,report}.{txt,html} A. 3 B. 8 C. 9 D. 12 E. 24 Question 3 ¿Cuál de las siguientes líneas de comando crearían un archivo llamado make $ at home! A. touch "make $ at home"! B. touch 'make $ at home!' C. touch 'make $' at home! D. A y C E. Todas las anteriores Question 4
  • 14. La shell bash 14 En una instalación predeterminada de Red Hat Enterprise Linux, el símbolo ~aristotle muy probablemente se expandirá a qué directorio? A. /home B. /home/aristotle C. /tmp/aristotle D. /aristotle E. None of the above Question 5 Cuando el usuario plato ejecuta el siguiente comando, ¿cuál es el nombre del archivo en que se escribe? cal > calendar.$(id -un).txt A. calendar.txt B. calendar.plato.txt C. calendar.id -un.txt D. calendar.512.txt E. None of the above Question 6 Si asumimos que prince es un miembro de los grupos prince y music, ¿cuál de los siguientes comandos produciría la siguiente salida? I am a member of: prince music A. echo "I am a member of: $(id -Gn)" B. echo 'I am a member of: $(id -Gn)' C. echo I am a member of: "id -Gn" D. echo I am a member of: `id -Gn` E. A y D
  • 15. La shell bash 15 En la siguiente transcripción, prince está tratando de crear un archivo cuyo nombre de archivo contenga la hora actual, tal como timestamp.10.23.43. Use la siguiente transcripción para contestar las dos preguntas a continuación. [prince@station prince]$ touch timestamp.'date +%H.%M.%S' [prince@station prince]$ ls timestamp.date +%H.%M.%S Question 7 ¿Cuál de las siguientes razones explican mejor el porqué prince no creó el nombre de archivo que deseaba? A. Porque como el comando date (y su argumento) contiene un espacio, prince tenía que haber utilizado comillas dobles. B. La shell bash no pudo localizar el comando date y por lo tanto dejó el comando "tal como está" en lugar de ejecutar una sustitución de comandos. C. Porque como los caracteres de porcentaje en date no se escaparon,bash no ejecutó sustitución de comandos. D. The user prince did not use the correct syntax for command substitution. E. None of the above. Question 8 ¿Cuál de las siguientes líneas ejecutarían correctamente la operación de prince? A. touch timestamp.$(date +%H.%M.%S) B. touch timestamp.$((date +%H.%M.%S)) C. touch timestamp.`date +%H.%M.%S` D. A y C E. None of the above Use the following transcript to answer the next two questions. [prince@station prince]$ COLOR=red [prince@station prince]$ ls Question 9
  • 16. La shell bash 16 Si prince fuera luego a ejecutar el siguiente comando, ¿qué salida se produciría? echo "My favorite colors are {blue,green,$COLOR} !!" A. My favorite colors are {blue,green,red} ls B. My favorite colors are blue green red !! C. My favorite colors are blue green $COLOR ls D. My favorite colors are {blue,green,$COLOR} !! E. My favorite colors are {blue,green,red} Question 10 Si prince fuera luego a ejecutar el siguiente comando, ¿qué salida se produciría? echo 'My favorite colors are {blue,green,$COLOR} !!' A. My favorite colors are {blue,green,red} ls B. My favorite colors are {blue,green,$COLOR} !! C. My favorite colors are blue green red !! D. My favorite colors are blue green $COLOR ls E. None of the above Capítulo 5 Personalización de la shell Conceptos clave • La shell bash internamente implementa ciertos comandos sencillos que están muy ligados con la conducta de la shell. Estos se conocen como los comandos incorporados. • Los alias de shell crean comandos aparentes que expanden a texto arbitrario. • Los alias de shell se establecen y examinan con el comando alias. • Los alias de shell se remueven con el comando unalias. • El intérprete de comandos de la shell bash se puede personalizar mediante la variable PS1. • Las banderas de shell se pueden establecer con el comando set -f y se limpian con set +f. • Las opciones de shell se examinan, establecen y se anulan con el comando shopt.
  • 17. La shell bash 17 Preguntas A title El usuario prince está tratando de hallar el ejecutable para el comando cd. Use la transcripción acontinuación para contestar la siguiente pregunta. [prince@station prince]$ which cd /usr/bin/which: no cd in (/bin:/usr/bin:/usr/local/bin:/usr/bin/X11:/usr/X11R6/b in:/home/prince/bin) Question 1 ¿Cuál es la mejor razón por la cual no se encontró el ejecutable para el comando cd? A. El paquete RPM coreutils no está instalado en el sistema. B. El comando vive fuera de la ruta de prince. C. The command is a bash builtin command. D. La variable PATH está mal configurada (los directorios listados deberían ir separados por espacios, no comas). E. None of the above. Question 2 ¿cuál de los siguientes crearía un alias llamado tf el cual se expandiría a la frase tail - f ? A. alias tf=tail -f B. tf=tail -f C. alias tf="tail -f" D. alias tf = "tail -f" E. C y D Question 3 ¿Cuál de los siguientes se podría utilizar para examinar los alias actuales para tf? A. alias -s tf
  • 18. La shell bash 18 B. alias tf C. showalias tf D. alias -d tf E. None of the above Question 4 ¿Cuál de los siguientes suprimiría el alias tf? A. unalias tf B. alias tf C. rmalias tf D. alias -d tf E. None of the above Question 5 El usuario prince ha personalizado su prompt para que aparezca de la siguiente manera. El tiempo es la hora actual y el número 613 es el número de historial del comando actual. ¿Cuál de los siguientes comandos configuraría la variable PS1 correctamente? (02Sep03-11:11:53) [prince@tation ~] 613 $ A. PS1="(d) [u@h w] !# " B. PS1="($(date)) [u@h] ! $ " C. PS1="(d) [$(whoami)] ! $ " D. PS1="($(date --iso-8601)) [u@h w] ! $ " E. None of the above La siguiente transcripción muestra a prince tratando de iniciar sesión en una consola virtual. Refiérase a esto cuando conteste la siguiente pregunta. Red Hat Enterprise Linux release 3 (Taroon) Kernel 2.4.20-4ES on an i686 station login: prince Password: Last login: Tue Sep 9 08:43:15 on tty3 login: prince -bash: prince: command not found
  • 19. La shell bash 19 login: Question 6 ¿Cuál de las siguientes sería la explicación maś adecuada al problema de prince? A. No hay ninguna cuenta para el usuario prince. B. Hay un error de sintaxis en el archivo ~/.bashrc, por lo tanto la shell está saliendo en el arranque. C. El usuario no tiene un directorio de inicio en la máquina local. D. El usuario prince ha olvidado su contraseña. E. The file ~/.bashrc contains the line PS1="nlogin: " Use the following transcript to answer the next 3 questions. [prince@station prince]$ ls / + ls --color=tty -w80 / bin data du.out home lib misc opt rha RPMS tmp var boot dev etc initrd lost+found mnt proc root sbin usr web ++ echo -ne '033]0;prince@station:~007' [prince@station prince]$ Question 7 ¿Qué esperaría prince que el comando alias ls retornara? A. alias ls='ls --color=tty' B. alias ls='ls --color=tty -w80' C. alias ls='ls --color=tty -w80 /' D. alias ls='ls -w80 ' E. -bash: alias: ls: not found Question 8 ¿Qué comando ejecutó aparentemente prince para habilitar los comandos que han sido impresos en la pantalla?
  • 20. La shell bash 20 A. shopt -x B. set +x C. shopt x D. set -x E. None of the above Question 9 Si prince estuviera cansado de ver que sus comandos se impriman en la pantalla, ¿qué comando debería ejecutar? A. set -x B. set +x C. shopt x D. shopt -s x E. None of the above Question 10 ¿Cuál de los siguientes comandos habilitaría la opción de shell extglobbash? A. shopt -s extglob B. shopt extglob=yes C. shopt extglob D. shopt +extglob E. None of the above Capítulo 6 Lectura de scripts de shell e inicialización de shell Conceptos clave • Los scripts de shell son leídos con el comando source o con .. • Todos los scripts de shell se ejecutan en la misma shell que lee el script. • Las shells bash pueden ser tanto shells de inicio como de no inicio. • Las shells bash pueden ser tanto shells interactivas como no-interactivas. • /etc/profile, archivos dentro del directorio /etc/profile.d y ~/.bash_profile leídos en el arranque de cada shell de inicio de sesión.
  • 21. La shell bash 21 • /etc/bashrc y ~/.bashrc se leen en el arranque de cada shell de inicio. • ~/.bash_logout es leída por cada salida de shell de inicio de sesión. Preguntas Question 1 ¿Cuál de las siguientes líneas de comandos podrían utilizarse para leer el archivo config.script? A. .. config.script B. source config.script C. < config.script D. bash config.script E. None of the above Question 2 ¿Cuál de los siguientes comados aplicaría los cambios hechos al archivo ~/.bashrc a la shell shell actual? A. . ~/.bashrc B. . ~/.bash_profile C. A y B D. . /etc/profile E. Todas las anteriores Question 3 ¿Cuál de los siguientes archivos se leen cuando se cierra una shell de inicio de sesión? A. ~/.bash_logout B. ~/.bash_profile C. /etc/bash_logout D. A y C E. None of the above Question 4
  • 22. La shell bash 22 ¿Cuáles archivos las shells iniciadas leen para implementar la sustitución de comandos? A. ~/.bashrc B. No files are sourced. C. /etc/profile D. /etc/bashrc E. A y D Question 5 ¿Cuál de los archivos siguientes se lee cuando un usuario ingresa desde una consola virtual? A. /etc/profile B. /etc/profile.d/less.sh C. ~/.bashrc D. Todas las anteriores E. None of the above Question 6 Después de instalar un nuevo paquete RPM, se agrega un nuevo archivo al directorio /etc/profile.d. ¿Cuál de los siguientes comandos aplicaría la configuración del archivo a la shell actual? A. source /etc/profile B. . ~/.bashrc C. bash /etc/bashrc D. Todas las anteriores E. None of the above La usuaria blondie agrega las siguientes líneas a las versiones predeterminadas de Red Hat Enterprise Linux de los archivos ~/.bashrc y ~/.bash_profile. [blondie@station blondie]$ echo 'echo "sourcing ~/.bashrc"' >> ~/.bashrc [blondie@station blondie]$ echo 'echo "sourcing ~/.bash_profile"' >> ~/.bash_profile
  • 23. La shell bash 23 Luego inicia una nueva subshell bash. [blondie@station blondie]$ bash sourcing ~/.bashrc [blondie@station blondie]$ Question 7 ¿Por qué blondie no vio la línea sourcing ~/.bash_profile? A. Ella olvidó agregar permisos de ejecución al archivo ~/.bash_profile. B. Because the subshell is a non-login shell, the file ~/.bash_profile does not get sourced. C. Para que sus cambios se efectúen, blondie debe salir e ingresar de nuevo. D. Al aplicar comillas a echo a la línea de comandos, blondie por error utilizó la sustitución de comandos. E. None of the above reasons apply. Al ingresar desde una consola virtual, blondie ve lo siguiente. Red Hat Enterprise Linux release 3 (Taroon) Kernel 2.4.20-4ES on an i686 station login: blondie Password: Last login: Wed Sep 3 09:54:31 on tty2 sourcing ~/.bashrc sourcing ~/.bash_profile [blondie@station blondie]$ Question 8 ¿Por qué el archivo ~/.bashrc se pudo leer antes que ~/.bash_profile? A. Esa es la conducta del ejecutable de bash para las shells de inicio. B. Los dos archivos se leen en orden de tiempo de modificación y el archivo ~/.bashrc tuvo el tiempo de modificación menos reciente. C. The file ~/.bashrc is not sourced first. For login shells, the bash shell only sources the file ~/.bash_profile directly. In the default Red Hat Linux configuration, this file sources the file ~/.bashrc. The line sourcing ~/.bashrc comes before the line containing the echo command blondie added above. D. Ninguno de los archivos es leído por bash directamente. En cambio, el archivo /etc/login los lee en el orden sugerido arriba. E. Ninguna de las anteriores.
  • 24. La shell bash 24 Question 9 ¿Qué permisos se necesitan en un archivo para que sea leído? A. ejecuta permisos B. read permissions C. escribe permisos D. A y B E. Todas las anteriores Question 10 Cuando se lee un archivo con el comando interno source, ¿qué tipo de subshell se invoca? A. Una shell de inicio de sesión no-interactiva B. Una shell interactiva de no-inicio de sesión C. Una shell no interactiva de no-inicio de sesión D. The question is misguided, because no subshell is invoked when sourcing a file (the commands in the file execute in the current shell). E. None of the above