12. Scripts básicos en Linux

VI

VIM, Un editor atemporal

Moverte en Vim

Manipular y editar con Vim

El lenguaje de Vim

La línea de comandos en Vim

Buscar y reemplazar en VIM

El modo visual de Vim

Manual de VI

Introducción a los Scripts

Para crear un Script en Linux hay que seguir los siguientes pasos:

Crear el fichero del Script con la extensión ".sh"

vi miscript.sh

Añadir en la primera línea del fichero lo siguiente 1) Why is #!/usr/bin/env bash superior to #!/bin/bash? :

#!/usr/bin/env bash

o

#!/bin/bash

Darle permisos de ejecución:

chmod u+x miscript.sh

Ejecutar el Script con la ruta del directorio actual:

./miscript.sh

Parámetros y Variables

How to read command line arguments in a bash script

Variables en Bash

Parámetros en Shell Script

Bash (III) - Variables y funciones

Principales variables del bash

$HOME: Directorio inicial del usuario

$PATH: Lista de directorios donde buscar un ejecutable

$PWD: El directorio de trabajo actual

$UID : Identificador del usuario actual

$$ : El PID del proceso actual

$1, $2 , $3, ...: Cada uno de los argumentos

$#: El Nº de argumentos

Redirecciones

En Linux se permite hacer la redirección de la entrada y la salida a un fichero y desde un fichero.

Redireccionar la salida

find / -name "*.mkv" > mis-peliculas.txt

Añadir a la salida

find / -name "*.avi" >> mis-peliculas.txt

Redireccionar la entrada

sort < mis-peliculas.txt

Mas información:

Tuberías: lo que necesitas saber para empezar a usarlas en GNU/Linux

Operador Substitución

Bash: Assign Output of Shell Command To Variable

Command substitution

Operador matemático

Para hacer operaciones matemáticas con bash usar $[ ]

Mostrará por pantalla 2

También se puede usar la orden bc que permite decimales.

Mostrará por pantalla 2.5

Otro ejemplo de bc

Mostrará por pantalla 20.6

Condicional

6. Conditionals

El Manual de BASH Scripting Básico para Principiantes/El básico (If-Then)

Operadores de comparación en Bash

Operadores para textos
Operador en Bash	Significado	Ejemplo
==	=	if [ "$a" == "$b" ]; then
!=	≠	if [ "$a" != "$b" ]; then
Operadores para números enteros
Operador en Bash	Significado	Ejemplo
-eq	= (equal)	if [ "$a" -eq "$b" ]; then
-ne	≠ (not equal)	if [ "$a" -ne "$b" ]; then
-gt	> (greater than)	if [ "$a" -gt "$b" ]; then
-ge	≥ (greater or equal)	if [ "$a" -ge "$b" ]; then
-lt	< (less than)	if [ "$a" -lt "$b" ]; then
-le	≤ (less or equal)	if [ "$a" -le "$b" ]; then
Operadores lógicos
Operador en Bash	Significado	Ejemplo
||	O lógico	if [ "$a" == "$b" ] || [ "$a" == "$c" ]; then
&&	Y lógico	if [ "$a" != "$b" ] && [ "$a" != "$c" ]; then

Bucles

Bash For Loop Examples

Ejercicios

Ejercicio 1

Haz un Script que muestre por pantalla "Hola Mundo" , para ello usa la orden "echo".

Ejercicio 2

Parámetros básicos:

Crea un Script llamado "ejer1.sh" y haz que se le pase un parámetro y que lo muestre por pantalla.

Crea un Script llamado "ejer2.sh" y haz que se le pasen 2 parámetros y que se muestren por pantalla.

Ejercicio 3

Haz un Script llamado "sumar.sh" que sume dos números enteros que se pasan como argumentos.

Modifica el Script para que acepte números decimales

Ejercicio 4

Haz un Script llamado "nota_media_sistemas.sh" que dados 3 notas enteras (Examen, Prácticas y Actitud) , obtenga la nota media del módulo de "Sistemas Informáticos". Sabiendo que el peso de cada nota es del 60%, 30% y 10% respectivamente

Modifica el Script de la siguiente forma:

Si la nota del examen es un 10 que muestre por pantalla "Felicidades!!"

Si alguna de las notas es menor que 0 o mayor que 10 que muestre un aviso de que esa nota no tiene un valor válido y no haga nada mas.

Ejercicio 5

Haz un script llamado "format.sh" que le pasemos como argumentos:

El nombre de una partición

El nombre de un sistema de archivos. Solo se permitirán los siguientes sistemas de archivos:

ext4

XFS

Btrfs

Y deberá hacer:

Si no pasan los 2 argumentos deberá darse un error.

Si el sistema de archivos es "ext3" deberá indicarse que "El sistema de archivos es demasiado viejo" y no hacer nada mas

Si el sistema de archivos es "ext2" deberá indicarse que "El sistema de archivos no soporta Journaling" y no hacer nada mas

Si están los dos argumentos se deberá crear un sistema de archivos en la partición del tipo indicado.

Ejercicio 6

Haz un script llamado "permitir_ejecucion.sh" que acepte como argumento el nombre de un fichero. La orden añadirá el permiso de ejecución al propietario de ese fichero

Modifica el Script para que acepte un segundo argumento que sea alguno de los siguientes valores:

"PROPIETARIO": Añadirá el permiso solo al propietario

"GRUPO": Añadirá el permiso solo al grupo

"TODOS": Añadirá el permiso al propietario , al grupo y a otros.

Con cualquier otro valor deberá mostrar un mensaje de error y no hacer nada.