Skip to content
Gallery
Scripts en GNU/Linux
Share
Explore
Scripts en GNU/Linux

icon picker
Exercicis

Script01: Introducción y parámetros

script01-01.sh

Crea un script que muestre por pantalla la fecha, el nombre del usuario que lo ejecuta, su directorio de inicio y el directorio en que se encuentra ahora.

script01-02.sh

Crea un script que muestre por pantalla los tres primeros argumentos que se le pasen, uno debajo de otro y luego esos 3 primeros argumentos pero uno a continuación de otro. Por último el número total de argumentos y todos ellos (sean 3 o más) con $*

script01-03.sh

Crea un script al que le pasaremos como parámetro el nombre de un usuario y nos mostrará por pantalla su nombre de usuario, su UID, su directorio de inicio y su shell (pero sólo el nombre del shell, no la ruta completa, o sea, sólo bash no /bin/bash).

Script02: Parámetros

Para algunos de los siguientes scripts deberemos trabajar con los ficheros de usuarios y grupos.
Estructura del archivo /etc/passwd:
Estructura del archivo /etc/group:

script02-01.sh

Crea un script que muestre por pantalla por orden alfabético los nombres de todos los usuarios del sistema que tienen un directorio de inicio dentro de /home.

script02-02.sh

Crea un script al que se le pasa el nombre de un grupo y muestra por pantalla el nombre de ese grupo, su GID y el nombre del primer usuario que es miembro del mismo.

script02-03.sh

Crea un script al que se le pasa un nombre de usuario y hace lo siguiente:
se posiciona en la carpeta de inicio de ese usuario (se supone que es /home/usuario)
crea una carpeta llamada backups
crea en dicha carpeta un archivo comprimido llamado backups.tar.gz con todos los ficheros que tiene el usuario en su escritorio
al finalizar muestra un mensaje de "Copia de seguridad del escritorio terminada"

script02-04.sh

Crea un script al que se le pasa un nombre de usuario y hace lo siguiente:
muestra todos los ficheros del usuario (los que estén en su directorio de inicio o subdirectorios) con extensión sh (usando el comando find)
muestra el número total de ficheros (el resultado del comando anterior se lo pasaremos a wc para que cuente líneas)
añada el permiso de ejecución al directorio ejerscripts y todo lo que contenga (el parámetro para hacerlo recursivo es -R)
muestre un mensaje de "Añadido permiso de ejecución a los scripts de /home/nombre usuario/ejerscripts"

Script03: Variables

Para algunos de los siguientes scripts deberemos trabajar con los ficheros de usuarios y grupos.
Estructura del archivo /etc/passwd:
Estructura del archivo /etc/group:

script03-01.sh

Crea un script al que se le pasa un nombre de usuario y muestra por pantalla el nombre de ese usuario, su UID, su GID, el nombre del grupo principal del usuario y el nombre del primer usuario miembro de ese grupo.

script03-02.sh

Crea un script que pida al usuario su nombre, sus dos apellidos y su edad y muestre un mensaje al usuario con sus datos

script03-03.sh

Crea un script que haga las siguientes acciones:
pida al usuario un comando
lo ejecute en segundo plano
ejecute la orden de borrar el fichero basura.txt y guarde el resultado de ese comando en una variable llamada result
muestre por pantalla un listado largo de los procesos en ejecución en esa terminal
muestre el PID del script, el PID del comando ejecutado en segundo plano y el valor devuelto por la orden de borrar el fichero basura.txt
imagen.png

Script04: condicionales

script04-01.sh

Escribir un script al que se le pasa como parámetro un fichero y nos dice si existe o no (comprobaremos que sea un fichero normal).

script04-02.sh

script04-03.sh

Escribir un script al que se le pase como parámetro dos números y nos diga si son iguales.

script04-04.sh

Escribir un script al que se le pase como parámetro dos números y nos diga cuál es el mayor o si son iguales.

Script05: condicionales

script05-01.sh

Realizar un script que copie el archivo que le pasaremos como primer parámetro en el directorio pasado como segundo parámetro. Previamente deberá comprobar que se hayan pasado dos parámetros, que el primero sea un archivo y que tengamos permisos de lectura sobre él y que el segundo sea un directorio y que tengamos permisos de escritura sobre él.

script05-02.sh

Escribir un script que pregunta el nombre de un usuario y nos dice si el usuario existe o no y en caso de existir nos muestra su grupo principal, el resto de grupos a los que pertenece y si está o no conectado.

script05-03.sh

Escribir un script al que se le pase como parámetro el nombre de un fichero y mostrará un menú con las opciones de buscar ese fichero, buscar una cadena (que deberá preguntar al usuario) en ese fichero o darle todos los permisos de lectura, escritura y ejecución para todo el mundo sobre ese fichero. Antes de cambiar los permisos comprobaremos que somos el propietario de ese fichero y si no mostraremos un mensaje diciendo que no se pueden cambiar los permisos.

script05-04.sh

Vamos a hacer un script que escogerá un número al azar entre 0 y 5 y le preguntará al usuario que diga un número y cuánto apuesta: si acierta el número ganará lo que haya apostado multiplicado por 5 y si no acierta pierde lo apostado. Comprobaremos que el número escrito por el usuario está entre 0 y 5.
Para generar un número al azar y guardarlo en una variable a la que llamaremos num_aleatorio usaremos la orden:
La variable global $RANDOM genera un número al azar y la operación % devuelve el resto de la división de ese número entre 6 (o sea, un valor entre 0 y 5).

script05-05.sh

Crea un script que muestre el saludo correspondiente según la hora que sea:
entre las 7 y las 13: Buenos días
entre las 14 y las 20: Buenas tardes
el resto: Buenas noches
Mostrará el saludo correspondiente seguido del nombre de pila del usuario, que será la primera palabra del 5º campo de /etc/passwd. Si no tuviera nada usaremos su nombre de usuario.


Script06: Bucles

script06-01.sh

Escribe un programa que borre cada uno de los ficheros que se le pasan como parámetro. Antes de borrar cada fichero se pedirá confirmación al usuario mostrando el nombre del fichero a borrar.

script06-02.sh

Crea un script para mostrar por pantalla el contenido de todos los ficheros de la carpeta actual con la extensión sh (o sea, los ficheros *.sh). Antes de mostrar cada fichero mostrará en pantalla su nombre y debajo una línea con rayas (===========================) y tras mostrar el contenido del fichero esperará a que pulsemos una tecla para mostrar el siguiente.

script06-03.sh

Escribir un script que muestre cuántos ficheros hay en la carpeta actual de cada una de las extensiones que se pasen como parámetro (pueden ser varias, no sabemos cuántas). Como parámetro sólo pondremos la extensión, no el *.

script06-04.sh

Crear un script que acepte un número indefinido de parámetros (que serán nombres de ficheros) y cree un fichero llamado si_existen donde almacenará los nombres de los ficheros que existen y otro llamado no_existen donde almacenará los nombres de los ficheros que no existen. Para acabar mostrará por pantalla los nombres de todos los ficheros que existen y los que no existen.

script06-05.sh (opcional)

Escribe un programa al que se le pasan como parámetro varias extensiones y que borre cada uno de los ficheros de esas extensiones. Se trata de que tome la primera extensión, muestre la extensión con la que está trabajando y le pregunte al usuario si borrar cada uno de los ficheros de esa extensión (mostrándole su nombre). Tras acabar con todos los ficheros de una extensión toma la siguiente y repite el mismo proceso.


Script07: Bucles

script07-01.sh

Escribe un programa que borre cada uno de los ficheros y directorios que se le pasan como parámetro. Antes de borrar cada fichero o directorio se pedirá confirmación al usuario mostrando el nombre del fichero o directorio a borrar y el usuario indicará si borrarlo o no con S o N (en mayúsculas o en minúsculas). Si escribiera otra cosa le volveremos a preguntar hasta que escriba S o N.

script07-02.sh

Escribe un programa al que se le pasan como parámetro un número y calcule el factorial de dicho número. El factorial de un número es el resultado de multiplicar todos los números desde ese número hasta 1, por ejemplo, el factorial de 5 será 5*4*3*2*1 = 120. El número pasado como parámetro debe ser mayor que 1.

script07-03.sh

Crear un script que copie todos los programas (archivo ejecutable) del directorio actual al directorio que se le pase como parámetro. Si el directorio no existe, lo creará el script. Al final nos dirá cuántos ficheros ha copiado.

script07-04.sh

Escribir un script que recibe como parámetro una lista de usuarios y nos dice de cada uno si existe, cuál es su home y si está conectado.

script07-05.sh

Escribir un script que recibe como parámetro una lista de ficheros y nos dice de cada uno qué permisos tiene activados para el usuario.

This link can't be embedded.
Want to print your doc?
This is not the way.
Try clicking the ⋯ next to your doc name or using a keyboard shortcut (
CtrlP
) instead.