Monografias.com > Sin categoría
Descargar Imprimir Comentar Ver trabajos relacionados

Ejercicios de Shell Script resueltos (página 2)




Enviado por jaimemontoya



Partes: 1, 2

3. Escribir un script que
imprima todas las variables predefinidas de
shell estándar de Linux.

Abrir un editor de textos y escribir el script:
#!/bin/bash # "#!/bin/bash" no es comentario sino que con ello se
especifica que este es un script que se ejecutara en "bash".
# Este script imprime todas las variables predefinidas de Shell
estándar de Linux.
echo $BASH
echo $BASH_ENV
echo $BASH_VERSION
echo $BASH_VERSINFO
echo $BASH_VERSINFO[0]
echo $BASH_VERSINFO[1]
echo $BASH_VERSINFO[3]
echo $BASH_VERSINFO[4]
echo $BASH_VERSINFO[5]
echo $CDPATH
echo $COLUMNS
echo $COMP_WORDS
echo $COMP_CWORD
echo $COMP_LINE
echo $COMP_POINT
echo $COMPREPLY
echo $DIRSTACK
echo $EUID
echo $FCEDIT
echo $FIGNORE
echo $FUNCNAME
echo $GLOBIGNORE
echo $GROUPS
echo $HISTCMD
echo $HISTCONTROL
echo $HISTFILE
echo $HISTFILESIZE
echo $HISTIGNORE
echo $HISTSIZE
echo $HOSTNAME
echo $HOSTTYPE
echo $HOME
echo $IGNOREEOF
echo $IFS
echo $INPUTRC
echo $LANG
echo $LC_ALL
echo $LC_COLLATE
echo $LC_CTYPE
echo $LC_MESSAGES
echo $LINENO
echo $LINES
echo $MACHTYPE
echo $MAIL
echo $MAILCHECK
echo $MAILPATH
echo $OSTYPE
echo $OLDPWD
echo $OPTERR
echo $PATH
echo $PIPESTATUS
echo $PPID
echo $PROMPT_COMMAND
echo $PS1
echo $PS2
echo $PS3
echo $PS4
echo $PWD
echo $RANDOM
echo $OPTARG
echo $OPTIND
echo $SECONDS
echo $SHELL
echo $SHELLOPTS
echo $SHLVL
echo $TIMEFORMAT
echo $TMOUT
echo $UID
echo $_ETC_PROFILE
echo $DISPLAY
echo $CVSROOT
echo $EDITOR
echo $KDEDIR
echo $HOST
echo $INPUTRC
echo $LESS
echo $LESSOPEN
echo $LESSCHARSET
echo $LS_COLORS
echo $LOGNAME
echo $ORGANIZATION
echo $PRINTER
echo $QTDIR
echo $PAGER
echo $TEMPDIR
echo $TERM
echo $USER
echo $VISUAL
echo $WINDOWMANAGER
Luego guardar ese archivo poniéndole un nombre
pero sin extensión, por ejemplo "3". Por ejemplo si se
guardara en /home/jaime/work, la dirección final del
archivo que contiene el script será /home/jaime/work/3. Para
ejecutar el script lo que se tiene que hacer es primeramente
asignarle permisos de ejecución, lo cual se haría con
"chmod 777 /home/jaime/work/3". Luego moverse hasta el directorio
donde se encuentra el script, escribiendo en este caso "cd /home/jaime/work". Luego
escribir "./3" y se ejecutará el script.
Ejemplo del script en ejecución:
hppaviliona600n@hppaviliona600n:/home/jaime/work$ ./3
/bin/bash
3.1.17(1)-release
3
3[0]
3[1]
3[3]
3[4]
3[5]
/home/jaime/work
1000
1000
1
ignoredups
hppaviliona600n
i486
/home/hppaviliona600n
es_SV.UTF-8
43
i486-pc-linux-gnu
linux-gnu
1
/usr/local/bin:/usr/bin:/bin:/usr/bin/X11:/usr/games
0
5029
+
/home/jaime/work
28133
1
0
/bin/bash
braceexpand:hashall:interactive-comments
2
1000
:0.0
no=00:fi=00:di=01;34:ln=01;36:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:su=37;41:sg=30;43:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arj=01;31:*.taz=01;31:*.lzh=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.gz=01;31:*.bz2=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.jpg=01;35:*.jpeg=01;35:*.gif=01;35:*.bmp=01;35
:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.avi=01;35:*.fli=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.flac=01;35:*.mp3=01;35:*.mpc=01;35:*.ogg=01;35:*.wav=01;35:

hppaviliona600n
xterm
hppaviliona600n

4. Escribir un script que al
pasarle por argumento un parámetro, determine si es archivo,
directorio, o si el parametro no existe.

Abrir un editor de textos y escribir el script:
#!/bin/bash
# Este script recibe un argumento y determina si es archivo o
directorio.
Error(){
echo "Error. Sintaxis de uso: $0/ archivo | directorio"
}
if test $# -lt 1 # Si el número
de parámetros posicionales o argumentos que se le dan al
script es menor que 1, donde "-lt" significa "lower than" y es
equivalente a lo que en otros lenguajes se utiliza como
"<".
then
Error
elif test -d $1 # Si el parámetro posicional "$1" existe y
es un directorio.
then
echo "$1 es un directorio."
elif test -f $1 # Si el parámetro posicional "$1" existe y
es un archivo regular.
then
echo "$1 es un archivo."
else
echo "$1 no existe."
fi
Luego guardar ese archivo poniéndole un nombre pero sin
extensión, por ejemplo "4". Por ejemplo si se guardara en
/home/jaime/work, la dirección final del archivo que
contiene el script será /home/jaime/work/4. Para ejecutar el
script lo que se tiene que hacer es primeramente asignarle
permisos de ejecución, lo cual se haría con "chmod 777
/home/jaime/work/4". Luego moverse hasta el directorio donde se
encuentra el script, escribiendo en este caso "cd
/home/jaime/work". Luego escribir "./4" y se ejecutará el
script.
Ejemplos de este script en ejecución se muestran a
continuación:
hppaviliona600n@hppaviliona600n:/home/jaime/work$ ./4
/home/jaime/work/
/home/jaime/work/ es un directorio.
hppaviliona600n@hppaviliona600n:/home/jaime/work$ ./4
/home/jaime/work/1.txt
/home/jaime/work/1.txt es un archivo.
hppaviliona600n@hppaviliona600n:/home/jaime/work$ ./4
/home/jaime/work/1.txtabc
/home/jaime/work/1.txtabc no existe.
Si se le dan más parámetros posicionales, no habrá
error, pues el script se ha programado para trabajar
únicamente tomando en cuenta el primer parámetro
posicional o $1, de manera que los demás parámetros
posicionales ($2, $3, $4,…) simplemente no se toman en cuenta y
el script no dará error, tal como se muestra en esta ejecución
del script:
hppaviliona600n@hppaviliona600n:/home/jaime/work$ ./4
/home/jaime/work/1.txt nuevavariable variable3
/home/jaime/work/1.txt es un archivo.

5. Escribir un script que al pasarle
por argumento un archivo o directorio, devuelva el tamaño en
MB.

Abrir un editor de textos y escribir el script:
#!/bin/bash
# Este script recibe por argumento un archivo o directorio y
devuelve el tamaño en MB.
Error(){
echo "Error. Sintaxis de uso: $0/ archivo | directorio"
}
if test $# -lt 1 # Si el número de parámetros
posicionales o argumentos que se le dan al script es menor que 1,
donde "-lt" significa "lower than" y es equivalente a lo que en
otros lenguajes se utiliza como "<".
then Error elif test -d $1 # Si el parámetro posicional "$1"
existe y es un directorio.
then echo "$1 es un directorio y su tamaño es el
siguiente:"
du -hs $1 # El comando "du" estima el espacio que usa un archivo,
donde "-hs" son dos opciones activadas, la "h" para que el
formato sea "human-readable" (e.g., 1K 234M 2G) y la "s" para
"summarize" o dar solamente un total de todo y no ir desplegando
el total de cada componente (archivo o directorio) por
separado.
elif test -f $1 # Si el parámetro posicional "$1" existe y
es un archivo regular. then echo "$1 es un archivo regular y su
tamaño es el siguiente:"
du -hs $1 # El comando "du" estima el espacio que usa un archivo,
donde "-hs" son dos opciones activadas, la "h" para que el
formato sea "human-readable" (e.g., 1K 234M 2G) y la "s" para
"summarize" o dar solamente un total de todo y no ir desplegando
el total de cada componente (archivo o directorio) por
separado.
else echo "$1 no existe."
fi
Luego guardar ese archivo poniéndole un nombre pero sin
extensión, por ejemplo "5". Por ejemplo si se guardara en
/home/jaime/work, la dirección final del archivo que
contiene el script será /home/jaime/work/5. Para ejecutar el
script lo que se tiene que hacer es primeramente asignarle
permisos de ejecución, lo cual se haría con "chmod 777
/home/jaime/work/5". Luego moverse hasta el directorio donde se
encuentra el script, escribiendo en este caso "cd
/home/jaime/work". Luego escribir "./5" y se ejecutará el
script.
Ejemplos de este script en ejecución se muestran a
continuación:
hppaviliona600n@hppaviliona600n:/home/jaime/work$ ./5
/home/jaime/work
/home/jaime/work es un directorio y su tamaño es el
siguiente:
56K /home/jaime/work
hppaviliona600n@hppaviliona600n:/home/jaime/work$ ./5
/home/jaime/work/4
/home/jaime/work/4 es un archivo regular y su tamaño es el
siguiente:
4.0K /home/jaime/work/4
hppaviliona600n@hppaviliona600n:/home/jaime/work$ ./5
/home/jaime/work/archivito
/home/jaime/work/archivito no existe.

6. Escribir un script que al no
pasarle argumentos, sugiera al usuario cuáles son las
posibles opciones para su ejecución.

#!/bin/bash
# Este script funciona de manera tal que al no proporcionarle
argumentos, suguiere al usuario cuáles son las posibles
opciones para su ejecución.
Error(){
echo "Error. No se proporcionaron argumentos. Las posibles
opciones para la ejecución de este script son:"
echo "$0 nombre_archivo"
echo "$0 nombre_directorio"
}
if test $# -lt 1 # Si el número de parámetros
posicionales o argumentos que se le dan al script es menor que 1,
donde "-lt" significa "lower than" y es equivalente a lo que en
otros lenguajes se utiliza como "<".
then
Error
elif test -d $1 # Si el parámetro posicional "$1" existe y
es un directorio.
then
echo "$1 es un directorio."
elif test -f $1 # Si el parámetro posicional "$1" existe y
es un archivo regular.
then
echo "$1 es un archivo."
else
echo "$1 no existe."
fi

7. Escribir un script que lo salude
con su nombre completo cada vez que ingrese en la consola tty1
como usuario que creado con su nombre.

Para que esto suceda cuando el usuario ingrese en la
tty1 con su nombre de usuario y contrasena, se debera agregar una
linea al final del archivo /home/jaime/.bash_profile. Por
ejemplo, si la direccion del script es /home/jaime/work/5,
entonces debera abrirse con un editor de texto el archivo
/home/jaime/.bash_profile y agregarle al final esta linea:
"/home/jaime/work/5" Con eso el script se ejecutara al logearse o
al entrar con el usuario y contrasena del usuario "jaime". A
continuacion se presenta el script:
#!/bin/bash
# Este script sirve para que al entrar en la consola tty1 con un
usuario específico que creé, yo reciba un saludo
personalizado con mi nombre completo.
if [ "$(whoami)" = 'jaime' ]
then
echo "Bienvenido Jaime Oswaldo Montoya Guzman, esta es su cuenta
de usuario." >> /dev/tty1 # "/dev/tty1" es para que la
impresión se realice en la consola 1 (tty1) y no en ninguna
otra consola."
else
echo "Usted no es Jaime Oswaldo Montoya Guzmán." >>
/dev/tty1 # "/dev/tty1" es para que la impresión se realice
en la consola 1 (tty1) y no en ninguna otra consola."
fi

8. Escribir un script que pueda
mostrar
información de un comando al
ejecutar dicho script y pasar como parámetro el
comando.

#!/bin/bash
# Este script recibe un comando como argumento y muestra
información sobre dicho comando.
Error(){
echo "Error. Sintaxis de uso: $0 nombre_del_comando" # Error que
mostrará el script cuando no se le den argumentos.
}
if test $# -lt 1 # Si el número de parámetros
posicionales o argumentos que se le dan al script es menor que 1,
donde "-lt" significa "lower than" y es equivalente a lo que en
otros lenguajes se utiliza como "<".
then Error # En caso que no se hayan dado argumentos para el
script, manda el mensaje de error que se creó con la
función.
else echo "La información o forma de usar el comando que
usted busca es la siguiente:"
man $1 # Muestra el manual o forma de usar el comando
que el usuario quiere saber. Si el usuario escribió "./8 ps"
para ejecutar el script, el parámetro posicional o "$1"
será "ps", de modo que el script se ejecutará mostrando
el manual de uso del comando "ps", lo que equivale a haber
escrito en la consola "man ps" sin haber utilizado este
script.
fi

9. Escribir un script que al
ejecutarlo como root reinicie el equipo después de 1
minuto.

#!/bin/bash
# Este script reiniciará el equipo después de 1 minuto
al ejecutarlo como root.
if [ "$(whoami)" = 'root' ] # Si el usuario que ejecuta el script
es 'root'.
then
shutdown -r +1 # "-r" indica que la computadora se
reiniciará. "+1" significa que la orden se llevará a
cabo luego de 1 minuto.
else
echo "El script no se ejecutará porque usted no es usuario
'root'". # Aparecerá este mensaje cuando se quiera ejecutar
el script desde otro usuario que no sea el 'root'.
fi

10. Escribir un script que genere
un backup del directorio de trabajo /home/jaime/work cada
5 minutos asignándole el nombre de "backup-hora de
generación".

El cron quedará de esta manera:
GNU nano 2.0.2 Fichero: /tmp/crontab.eMdHMp/crontab
Modificado
# m h dom mon dow command
*/5 * * * * /home/jaime/work/10 # Este cron estará llamando
al script /home/jaime/work/10 cada 5 minutos, y es el script el
que contiene el código para que se
generen backups o copias de respaldo correctamente.
El script quedará de esta forma:
#!/bin/bash
# Este script genera un backup del directorio de trabajo
/home/jaime/work
cp -r /home/jaime/work /home/jaime/work/backup_$(date +%H%M%S) #
Este script trabajará de la mano con el crontab. Lo que se
le programó al crontab (digitando "crontab -e" desde la
consola) es la siguiente línea: "*/5 * * * *
/home/jaime/work/10". Eso significa que cada 5 minutos se
estará ejecutando este script, de manera que cada 5 minutos
se estará haciendo un backup de /home/jaime/work, será
ubicado ahí mismo en /home/jaime/work y tendrá por
nombre backup_$(date +%H%M%S), donde "$(date +%H%M%S)" almacena
la hora, minutos y segundos del momento en que se realizó el
backup. Por ejemplo, si se realizó a las 2 de la madrugada
con 35 minutos y 1 segundo, el directorio tendrá por nombre
"backup_023501" y la ruta completa será:
"/home/jaime/work/backup_023501". Suponiendo que en vez de
concatenar horas, minutos y segundos, se quisiera concatenar el
día, mes y año junto con el nombre del archivo, en vez
de "$(date +%H%M%S)" tendría que utilizarse "$(date
+%d%m%y)".

11. Escribir un script que al
ejecutarlo devuelva una lista con los tipos de archivo que tiene
un directorio pasado como parámetro.

El script es el siguiente:
#!/bin/bash
# Este script recibe como parámetro un directorio y devuelve
una lista con los tipos de archivo en promedios numéricos
que tiene dicho directorio.
Error(){
# Mensaje de error que mostrará el script cuando no se le
den argumentos.
echo "Error. No se proporcionaron argumentos. La sintaxis del
script es la siguiente:"
echo "$0 nombre_directorio"
}
if test $# -lt 1 # Si el número de parámetros
posicionales o argumentos que se le dan al script es menor que 1,
donde "-lt" significa "lower than" y es equivalente a lo que en
otros lenguajes se utiliza como "<".
then Error
elif test -f $1 # Si el parámetro posicional "$1" existe y
es un archivo regular.
then echo "Error. $1 no es un directorio. La sintaxis del script
es la siguiente:" echo "$0 nombre_directorio"
elif test -d $1 # Si el parámetro posicional "$1" existe y
es un directorio.
then cd $1 # Se mueve hasta el directorio introducido por el
usuario como parámetro del script y que se almacena en el
parámetro posicional "$1".
file * # Muestra una lista completa de todos los archivos y carpetas que hay
dentro del directorio que se le ha dado al scrip como
parámetro, dando a la vez el tipo de cada elemento, es decir
si es una carpeta dirá que es un directorio y si es un
archivo dirá el tipo de archivo que es.
else echo "Error. $1 no es ni directorio ni archivo. La sintaxis
del script es la siguiente:"
echo "$0 nombre_directorio" fi
Un ejemplo del script en ejecución se tiene a
continuación:
jaime@hppaviliona600n:~/work$ ./11 /home/jaime/work
1: empty
10: Bourne-Again shell script text executable
10~: Bourne-Again shell script text executable
10.txt: UTF-8 Unicode text
10.txt~: ASCII text
11: Bourne-Again shell script text executable
11~: Bourne-Again shell script text executable
12: Bourne-Again shell script text executable
12~: Bourne-Again shell script text executable
1.txt: ASCII text
2.txt: UTF-8 Unicode text
2.txt~: UTF-8 Unicode text
3: Bourne-Again shell script text executable
3~: Bourne-Again shell script text executable
4: Bourne-Again shell script text executable
4~: Bourne-Again shell script text executable
5: Bourne-Again shell script text executable
5~: Bourne-Again shell script text executable
6: Bourne-Again shell script text executable
6~: Bourne-Again shell script text executable
7: Bourne-Again shell script text executable
7~: Bourne-Again shell script text executable
8: Bourne-Again shell script text executable
8~: Bourne-Again shell script text executable
9: Bourne-Again shell script text executable
9~: Bourne-Again shell script text executable
minuto.log: UTF-8 Unicode text

12. Escribir un script que devuelva
una lista de texto de los tipos de archivo existentes en un
directorio pasado como primer parámetro y un tipo de archivo
como segundo parámetro.

#!/bin/bash
# Este script devuelve una lista de los tipos de archivo
existentes en un directorio pasado como primer parámetro y
un tipo de archivo como segundo parámetro.
Error(){
# Mensaje de error que mostrará el script cuando no se le
den los dos argumentos requeridos.
echo "Error. No se proporcionaron argumentos. La sintaxis del
script es la siguiente:"
echo "$0 nombre_directorio nombre_archivo"
}
if test $# -lt 2 # Si el número de parámetros
posicionales o argumentos que se le dan al script es menor que 2,
donde "-lt" significa "lower than" y es equivalente a lo que en
otros lenguajes se utiliza como "<".
then
Error
elif test -d $1 # Si el parámetro posicional $1 existe y es
directorio.
then
cd $1 # Se mueve hasta el directorio introducido por el usuario
como parámetro del script y que se almacena en el
parámetro posicional "$1".
file * | grep $2 # Muestra una lista completa de todos los
archivos y carpetas que hay dentro del directorio que se le ha
dado al scrip como parámetro, dando a la vez el tipo de cada
elemento, es decir si es una carpeta dirá que es un
directorio y si es un archivo dirá el tipo de archivo que
es. Nótese también que se ha usado "| grep $2", lo que
será como una especie de filtro en la búsqueda, de
manera que solamente "file *" mostraría TODOS los archivos y
directorios que se encuentran dentro del directorio dado por el
usuario como parámetro del script (y que se almacena en el
parámetro posicional $1). Sin embargo con "| grep $2" se
buscarán archivos que contengan el tipo específico que
decidió el usuario con el parámetro 2 (que se almacena
en el parámetro posicional $2). Por ejemplo el usuario puede
querer buscar solamente archivos "UTF-8 | Unicode", entonces al
escribir por ejemplo "./12 /home/jaime/work UTF-8 | Unicode", $1
es "/home/jaime/work" y $2 es "UTF-8 | Unicode". Entonces se
mostrarían únicamente los archivos que sean de tipo
"UTF-8 Unicode text" y que estén dentro del directorio
/home/jaime/work. Nótese que "UTF-8 | Unicode" significa
"UTF-8" ó "Unicode", pues el parámetro posicional $2
consiste en una sola palabra y no puede haber espacios entre
palabras porque ya se estaría hablando de un $3, $4,
etc.
fi
Un ejemplo del script en ejecución se tiene a
continuación:
jaime@hppaviliona600n:~/work$ ./12 /home/jaime/work Unicode
10.txt: UTF-8 Unicode text
2.txt: UTF-8 Unicode text
2.txt~: UTF-8 Unicode text
minuto.log: UTF-8 Unicode text

13. Escribir un script que al
pasarle como parámetro un archivo de texto, ordene las
líneas de texto ascendentemente al pasarle una "A" como
segundo parámetro o descendentemente al pasarle una "Z".
[sort][grep]

El script queda de esta forma:
#!/bin/bash
# Este script recibe como primer parámetro un archivo de
texto y ordena las líneas de dicho archivo de texto
ascendentemente al pasarle una "A" como segundo parámetro o
descendentemente al pasarle una "Z".devuelve una lista de los
tipos de archivo existentes en un directorio pasado como primer
parámetro y un tipo de archivo como segundo
parámetro.
Error(){
# Mensaje de error que mostrará el script cuando no se le
den los dos argumentos requeridos.
echo "Error. No se proporcionaron los argumentos correctamente.
La sintaxis del script es la siguiente:"
echo "$0 archivo A_|_Z"
}
if test $# -lt 2 # Si el número de parámetros
posicionales o argumentos que se le dan al script es menor que 2,
donde "-lt" significa "lower than" y es equivalente a lo que en
otros lenguajes se utiliza como "<".
then
Error
elif test -f $1 && (test $2 = "A" || test $2 = "Z") # Si
el parámetro posicional $1 existe y es un archivo regular y
si el parámetro posicional $2 es una "A" o una "Z".
then
if test $2 = "A" # Si el parámetro posicional $2 es "A".
then
cat $1 | sort -d # "cat" es para mostrar y la salida de "cat $1"
es recibida por "sort -d". "sort -d" ordena cada línea como
lo haría un diccionario, es decir en orden
alfabético de la A a la Z (por eso se le pone el "-d").
elif test $2 = "Z" # Si el parámetro posicional $2 es
"Z".
then
cat $1 | sort -r # "cat" es para mostrar y la salida de "cat $1"
es recibida por "sort -d". "sort -r" ordena cada línea en
forma reversa a como lo haría un diccionario, es decir en
orden inverso al alfabético (de la Z a la A, por eso se le
pone el "-r".
fi
else # Si el parámetro posicional $1 no existe o no es un
archivo regular o si el parámetro posicional $2 no es una
"A" ni una "Z".
Error
fi
El archivo de texto /home/jaime/work/abc.txt se ha creado y
contiene lo siguiente:
# comentario.
ayer fui al estadio.
bonitas ideas las que tú tienes
centro al segundo palo y gol.
dame otra oportunidad
Ejemplos del comando en ejecución se presentan a
continuación:
hppaviliona600n@hppaviliona600n:/home/jaime/work$ ./13
/home/jaime/work/abcdefgh.txt Z
Error. No se proporcionaron los argumentos correctamente. La
sintaxis del script es la siguiente:
./13 archivo A_|_Z
hppaviliona600n@hppaviliona600n:/home/jaime/work$ ./13
/home/jaime/work/abc.txt Z
dame otra oportunidad
# comentario.
centro al segundo palo y gol.
bonitas ideas las que tú tienes
ayer fui al estadio.
hppaviliona600n@hppaviliona600n:/home/jaime/work$ ./13
/home/jaime/work/abc.txt A
ayer fui al estadio.
bonitas ideas las que tú tienes
centro al segundo palo y gol.
# comentario.
dame otra oportunidad

14. Escribir un script que imprima un
mensaje de "Hola mundo" recursivamente al infinito.

#!/bin/bash
# Este script imprime el mensaje de "Hola mundo" recursivamente
al infinito.
i="0"
while [ $i -lt 4 ]
do
echo "Hola mundo"
done
Otra forma de hacerlo es:
#!/bin/bash
# Este script imprime el mensaje de "Hola mundo" recursivamente
al infinito.
yes $1
Para detener esa impresion al infinito, presionar Ctrl + C.

15. Escribir un script que
encienda el LED del teclado numerico al ejecutar
el script desde la consola tty1 y apague el LED de CAPS
(mayusculas).

#!/bin/bash
# Al ejecutar este script desde la consola tty1, enciende el LED
del teclado numérico y apaga el LED de CAPS
(mayúsculas).
setleds -D +num >> /dev/tty1
setleds -D -caps >> /dev/tty1

16. Escriba un script que elimine un
archivo o directorio pasado como parámetro, y le pregunte si
está seguro de llevar a cabo la
acción.

Primeramente se debera descargar el "dialog", de esta
forma:
# apt-get install dialog
Luego el
script es este:
#!/bin/sh
# Este script elimina un archivo o directorio pasado como
parámetro y le pregunta al usuario si está seguro de
llevar a cabo tal acción.
dialog –yesno "¿Está seguro que desea eliminar el
archivo o directorio?" 0 0;
case $? in
0) # En caso que el usuario seleccione "Sí".
if test $# -lt 1 # Si el número de parámetros
posicionales o argumentos que se le dan al script es menor que 1,
donde "-lt" significa "lower than" y es equivalente a lo que en
otros lenguajes se utiliza como "<".
then echo "Error. Sintaxis de uso: $0 archivo_|_directorio" #
Error que mostrará el script cuando no se le den
argumentos.
elif test -d $1 # Si el parámetro posicional "$1" existe y
es un directorio.
then echo "$1 es un directorio."
rmdir $1 # Remover $1, donde "$1" es el directorio que el usuario
puso como parámetro del script.
echo "El directorio $1 ha sido eliminado." # Nótese que ";;"
se le pone cuando han terminado todos los elif.
test -f $1 # Si el parámetro posicional "$1" existe y es un
archivo regular. then echo "$1 es un archivo."
rm $1 # Remover $1, donde "$1" es el directorio que el usuario
puso como parámetro del script. echo "El archivo $1 ha sido
eliminado." # Nótese que ";;" se le pone hasta que han
terminado todos los else.
# Si el usuario no ha introducido ningún parámetro
posicional o ningún argumento al script.
echo "Error. Sintaxis de uso: $0 archivo_|_directorio" # Error
que mostrará el script cuando no se le den argumentos.
fi;;
1) # En caso que el usuario seleccione "No".
echo "No se ha eliminado ningún archivo ni
directorio.";;
255) # En caso que el usuario presiona la tecla ESC".
echo "No se ha eliminado ningún archivo ni
directorio.";;
esac

De esta forma se han resuelto 16 ejercicios sobre Shell Script en
Linux. Los ejercicios presentados son cortos, aunque se debe
saber que los script pueden ser mucho mas complicados de acuerdo
a las necesidades y a lo que se desee hacer.

 

Jaime Montoya

Santa Ana, 2 de septiembre de 2007

El Salvador

Partes: 1, 2
 Página anterior Volver al principio del trabajoPágina siguiente 

Nota al lector: es posible que esta página no contenga todos los componentes del trabajo original (pies de página, avanzadas formulas matemáticas, esquemas o tablas complejas, etc.). Recuerde que para ver el trabajo en su versión original completa, puede descargarlo desde el menú superior.

Todos los documentos disponibles en este sitio expresan los puntos de vista de sus respectivos autores y no de Monografias.com. El objetivo de Monografias.com es poner el conocimiento a disposición de toda su comunidad. Queda bajo la responsabilidad de cada lector el eventual uso que se le de a esta información. Asimismo, es obligatoria la cita del autor del contenido y de Monografias.com como fuentes de información.

Categorias
Newsletter