====== Topic 105: Shells and Shell Scripting ====== Perteneciente a [[informatica:certificaciones:lpic:lpic-1|LPIC-1]] Veremos cómo configurar y usar el shell mediante el cual interactuamos con el sistema. En la segunda parte investigamos. * [[informatica:certificaciones:lpic:lpic-1:105_shells_and_shell_scripting:105.1_customize_and_use_the_shell_environment|105.1 Customize and use the shell environment]] (4) * [[informatica:certificaciones:lpic:lpic-1:105_shells_and_shell_scripting:105.2_customize_or_write_simple_scripts|105.2 Customize or write simple scripts]] (4) ===== Ejercicios ===== **Ejercicio 1: Scripting** **Sube un documento con las respuestas a las siguientes actividades: Adjunte capturas de pantalla para ver los resultados ** ==== PARTE I ==== **Cree un script generador de ficheros que haga lo siguiente:** **1. nos pida un nombre de fichero y una ruta de destino** echo "Nombre de fichero: " read filename echo "Ruta de creación: " read path **2. nos pida un numero de ficheros** echo "Número de ficheros a crear:" read num_files **3. nos cree ese número de ficheros, con el nombre especificado seguido de un número, en la ruta especificada** i=1 while [ $i -le $num_files ] do touch $path/$filename-$i let i=i+1 done Script final: #!/bin/bash echo "Nombre de fichero: " read filename echo "Ruta de creación: " read path echo "Número de ficheros a crear:" read num_files i=1 while [ $i -le $num_files ] do touch $path/$filename-$i let i=i+1 done ==== PARTE II ==== **Cree un script de shell que haga lo siguiente:** **1. mostrará una lista completa y completa (recursiva) del contenido de cualquier directorio que se le pase en la línea de comando** dir=$1 find $dir -print **2. mostrará un mensaje de error si el parámetro que le das no es un directorio.** if [ -d $dir ] then find $dir -print else echo "$dir no es un directorio" fi **3. Probar el script para que muestre los resultados con un directorio válido y y forzar el error con un nombre de directorio no existente** Script completo: #!/bin/bash dir=$1 # Comprobar si es un directorio if [ -d $dir ] then find $dir -print else echo "$dir no es un directorio" exit 1 fi ===== Test ===== **Every shell script intended to run within a bash environment, should have what identifier at the top of the script file?** * ''#/bin/bash'' * ''!/bin/bash'' * ''!#/bin/bash'' * ''#!/bin/bash'' (**solución**) **Of the following conditional statements within a shell script, which one will test for the existence of a file called 'mytest.txt' in the current directory?** * ''if [[$FILE is 'mytest.txt' ]];then'' * ''if [[ $1='mytest.txt' ]];then'' * ''if [[ -f mytest.txt ]];'' (**solución**) * ''if [[ filename='mytest.txt' ]]; then'' **What user script (if it exists) is run, from a user's home directory, every time they log into a system? (select 2)** * ''~/.bash_profile'' (**solución**) * ''/etc/rc.local'' * ''/etc/rc.local'' * ''~/.bashrc'' (**solución**) **Which of the following special shells that, when assigned to a user account as the default shell, will prevent that account from being able to log in? (Choose the 2 correct answers)** * ''. /etc/users.deny'' * ''/sbin/nologin'' (**solución**) * ''/etc/users.allow'' * ''/bin/false'' (**solución**) **Which of the following variable definitions will be available to subshells in the environment?** * ''export MYVAR="Some Value"'' (**solución**) * ''MYVAR="Some Value"'' * ''env MYVAR="Some Value"'' * None of the Above