100% encontró este documento útil (1 voto)
134 vistas

Shell Scripts

Este documento explica los scripts de shell en Linux. Resume los principales comandos y herramientas para automatizar tareas como filtros, variables, funciones, condicionales, bucles y entrada/salida. Explica cómo crear y ejecutar scripts de shell básicos para agrupar comandos y automatizar flujos de trabajo comunes.

Cargado por

Patricio Tovar
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
100% encontró este documento útil (1 voto)
134 vistas

Shell Scripts

Este documento explica los scripts de shell en Linux. Resume los principales comandos y herramientas para automatizar tareas como filtros, variables, funciones, condicionales, bucles y entrada/salida. Explica cómo crear y ejecutar scripts de shell básicos para agrupar comandos y automatizar flujos de trabajo comunes.

Cargado por

Patricio Tovar
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 32

1.

4 SHELL SCRIPTS
Ciertos comandos útiles para cuando nos perdamos

La mayoría de comandos soportan el argumento –h o –help:

ls –-help
Shell Scripts
Entrada y Salida

Entrada Salida
Programa
estándar estándar

Todo programa recibe información por la ENTRADA ESTÁNDAR (usualmente el teclado), y envía
información por la SALIDA ESTÁNDAR (usualmente la pantalla del shell).
Por ejemplo:

ls –l | grep carpeta

En este ejemplo, la salida de ls se la pasamos a la entrede de


grep (que lo usamos para buscar texto), para que busque la
palabra carpeta en lo que arrojó ls.
Shell Scripts
Filtros
Son programas que reciben algo desde la entrada estándar, realizan una operación, y lo
devuelven a la salida estándar. Algunos son:
1. sort: ordena las líneas de un texto
2. uniq: remueve las líneas duplicadas

3. grep: busca el patrón de texto requerido


4. head: muestra las primeras líneas del texto
5. tail: muestra las últimas líneas del texto
6. fmt: muestra el texto con formato
7. pr: divide el texto en paginas, con cabeceras y pies de página
Shell Scripts
Otros comandos útiles

ln -> crea un link a un archivo o carpeta

df -> muestra el espacio libre en disco

touch -> cambia la fecha de modificación de un archivo (lo crea si no


existe)

time -> nos da la hora

date -> nos da la fecha


Shell Scripts

Cambiando permisos

Para esto usamos la herramienta chmod:

chmod <permisos> <archivo>


Shell Scripts
Variables

En el shell, nosotros podemos almacenar información en variables.


Para crear una variables, hacemos los siguiente en el shell

$ mivar=‘/etc’

Esto creará la variable mivar con el contenido “/etc”. Para hacer


referencia a una variables, usamos el signo de dólar:
$ echo $mivar
/etc
Podemos usar estas variables dentro de string:

eduardo@ubuntu:~$ mi_text='mundo'

eduardo@ubuntu:~$ echo "hola $mi_text"

hola mundo

Tambíen podemos poner la variable dentro de llaves, para saber que hacemos
referencia a una variable:

eduardo@ubuntu:~$ mi_text='mundo'

eduardo@ubuntu:~$ echo "hola ${mi_text}"

hola mundo
Shell Scripts
Bash Scripting
Ahora que ya conocemos nuestra herramienta (el shell), nos enfocaremos en los
bash scripts.

¿Qué es un bash script?

Cuando necesitamos realizar una tarea que requiere muchos comandos, los
podemos agrupar en un archivo de texto, y luego ejecutarlo en el shell. Todo script
empieza con la siguiente línea:

#!/bin/sh
Por ejemplo, creemos el siguiente script, en el archivo
mi_script.sh:

#/bin/bash

echo “hola bash script”

Necesitamos hacerlo ejecutable, con el siguiente comando:

$ chmod +x mi_script.sh

Para ejecutarlo:

$ ./mi_script.sh
Asi como en el shell, las variables se definen así:

NOMBRE=valor

Para usar el valor de la variable, usamos el signo de $:

#!/bin/bash

QUIEN=“bash script”

echo “hola $QUIEN”


Cuando ponemos entre comillas, se toma como un string literal (se
respetan saltos de línea, etc)

Podemos también asignar el resultado de comandos:

NOMBRE=$(comando arg1 arg2 …)

Esto ejecuta el comando en un shell distinto, y lo asigna a la variable


Shell Scripts

Argumentos

Podemos mandar argumentos al script. Estos se almacenan en las variables


$1, $2, etc. Podemos modificar nuestro script:

#!/bin/bash

echo “hola $1”

Y los ejecutamos así:

$ ./mi_script “bash script”


Shell Scripts
Hay ciertas variables especiales para manejar los argumentos:

■ $0: contiene del nombre del script, en nuestro caso ./mi_script

■ $1, $2, … : los argumentos envidos al script

■ $#: contiene el número de argumentos

■ $*: contiene todos los argumentos

■ $$: ID proceso script actual


Shell Scripts
Funciones
Para scripts más largos, podemos crear funciones, de esta forma:

function <nombre función> {

comando1

comando2

Cambiemos nuestro script para que usen funciones…


#!/bin/bash

#función…

function mostrar_mensaje{

echo “hola $1”

#script principal

mostrar_mensaje

Noten que los comentarios empiezan con #.


Así como en otros lenguajes, las variables declaradas dentro de una
función son locales (usando la palabra local), y fuera de ella, globales.
#!/bin/bash

QUIEN="bash"

function mensaje {
local QUIEN_MAS
QUIEN_MAS = "world"
echo "Hello $1"
echo "Hello $QUIEN"
echo "Hello $QUIEN_MAS"
}

mensaje

echo "bye $QUIEN"


echo "bye $1"
echo "bye $QUIEN_MAS"
■ Si ejecutamos…

eduardo@ubuntu:~$ ./mi_script "bash script"


Hello
Hello bash
Hello world
bye bash
bye bash script
bye

En la última línea, no sale el nombre, por que tratamos de usar una


variable local fuera de la función.
Shell Scripts
Condicionales
Nos permiten evaluar condiciones. La sintaxis es

if [ condicion]; then
comandos
elif [condicion2]; then
comandos
else
comandos
fi  indica fin de bloque if

Las condiciones van seguidas de punto y coma


¿Como hacemos las comparaciones?

Para comparaciones numéricas:


Para comparaciones de archivos (!)
Por ejemplo:

#!/bin/bash

if [ $1 -eq 0 ]; then
echo "hola"
else
echo "chao"
fi

Imprimará hola si el argumento es 0, y chao si es 1.


Para comparar strings, hay que tener cuidado:

#!/bin/bash

if [ $1 == "bash" ]; then
echo "hola $1"
else
echo "chao $1"
fi

¡Usamos el operador ==!


Shell Scripts
Lazos
Podemos tener lazos en los scripts, para realizar tareas repetitivas. Para el lazo for:

for mi_var in {inicio..fin}; do


comandos
comandos $mi_var
done

Veamos un ejemplo.
Shell Scripts

for mi_var in archivo1 archivo2; do


comandos
comandos $mi_var
done

for <variable> in ${comando_shell} do


comandos
done
Asumamos que tenemos una carpeta con cuatro archivo
llamados file1, file2, file3 y file4, además de otros archivos y
queremos borrar solo los archivos que empiezan con file
seguidos de un dígito. Podemos entonces:

#!/bin/bash

for archivo in file[[:digit:]] ; do


rm $archivo
done
Shell Scripts

Podemos tener lazos en los scripts, para realizar tareas repetitivas.


Para el lazo while:

While <condicion> ; do
comandos
done

Veamos un ejemplo.
Asumamos que tenemos una carpeta con cuatro archivo
llamados file1, file2, file3 y file4, además de otros archivos y
queremos borrar solo los archivos que empiezan con file
seguidos de un dígito. Podemos entonces:

#!/bin/bash

for archivo in file[[:digit:]] ; do


rm $archivo
done
Ejemplo, crear cuatro directorios llamados dir0, dir1, dir2, dir3:

#!/bin/bash

i=0

while [ $i -lt 4 ];
do
mkdir "dir$i"
((i++))
done

ls -l
Shell Scripts

Entrada y salida

Para leer texto desde el teclado, usamos read, y para imprimir algo en
pantalla, echo. Por ejemplo, el siguiente script lee el teclado e
imprime lo leído en pantalla.
#!/bin/bash

echo -n “Ingrese su nombre: "

read user_name

echo $user_name
Shell Scripts

■ Podemos usar redirección también. Por ejemplo, leer un archivo


linea por linea:
for read linea;
do
echo $linea
done < archivo

También podría gustarte