Universidad Nacional de la Matanza
Ingeniería en Informática
Cátedra de Sistemas Operativos
Año 2008
Departamento de Ingeniería e
Investigaciones Tecnológicas
Cátedra de Sistemas
Operativos
Jefe de Cátedra:
Jefe de trabajos prácticos:
Autor:
Fabio Rivalta
Fernando Boettner
Ramiro de Lizarralde
Año:
Revisión:
2008
2013
Guía sobre Shell Scripts
Página 1 de 6
Universidad Nacional de la Matanza
Cátedra de Sistemas Operativos
Ingeniería en Informática
Año 2008
Script
Archivo de texto con una secuencia de comandos, que es ejecutada paso a paso por un
programa que sepa interpretar esos comandos. Se llama comúnmente “intérprete de
comandos”.
Ejemplos: Shell (sh), Bourne Shell (bsh), Bourne Again Shell (bash), Korn Shell (ksh), C
Shell (csh), Command.com (intérprete de DOS), AWK, PHP, PEARL (aunque estos
últimos tres no son intérpretes propiamente dicho, pero sí son lenguajes dinámicos y/o
interpretados que pueden funcionar como un shell script).
Ejecución del script
$sh [parámetros del sh] nombre_script [parámetros del script]
$nombre_script [parámetros del script]
Previamente, se le deben dar los permisos necesarios, a través del comando chmod.
Magic number
Especifica con qué intérprete se debe ejecutar el script. Debe estar sí o sí en los dos
primeros caracteres del archivo del script.
#! /bin/sh
#! /bin/ksh
#! /bin/awk
Parámetros del Script
Parámetros, del 1 al 9
$1 $2 … $9
Si hay más de 9
{$nn}
shift [n]
Variables
Las variables son dinámicas, así que no tienen tipo de dato definido ni necesitan
declaración. Se crean con la primer referencia a la misma. Por lo tanto es conveniente
inicializarlas con un valor del tipo de datos con que se la quiere utilizar.
var=valor
echo $var
Variables especiales

$0
nombre del archivo ejecutable

$*
línea completa de la llamada

[email protected]
lista de todos los parámetros ($* menos $0)

$#
cantidad de parámetros

$?
Valor de retorno del último comando ejecutado

$$
Process ID (PID)
Página 2 de 6
Universidad Nacional de la Matanza
Cátedra de Sistemas Operativos
Ingeniería en Informática
Año 2008
Estructuras de control y Comandos de Shell

if condiciones; then
comandos;
[elif condiciones; then
comandos;]
[else
comandos;]
fi

for var in word; do
comandos;
done

while condiciones; do
comandos;
done

until condiciones; do
comandos;
done

case var in
pattern1)
comandos;;
pattern2)
comandos;;
esac

test expresión

[[ expresión ]]

exit

read var

echo string

set opciones

unset opciones

wait

sleep n
Expresiones
( expresión )
! expresión
expresión1 && expresión2
expresión1 || expresión2
Página 3 de 6
Universidad Nacional de la Matanza
Ingeniería en Informática
Cátedra de Sistemas Operativos
Año 2008
Funciones
Definición:
[function] nombre_función () {
comandos
[return n]
}
Llamada:
nombre_función [lista de parámetros]
Parámetros de la función
Se referencian (dentro del scope de la función) con $n de la misma forma que los
parámetros del script.
Entrecomillado

Comillas simples verticales ' : texto fuerte. En este string el Shell no realiza
reemplazos de variables.
Ejemplo:
x=234
y='790$x'
echo $y


790$x
Comillas dobles " : texto débil. En este string el Shell realiza reemplazos de
variables.
Ejemplo:
x=234
y="790$x"
echo $y


790234
Comillas francesas ` : ejecución de comandos. En este string el Shell primero
realiza reemplazos de variables y luego ejecuta el comando, guardando la salida
en la variable.
Ejemplo:
FechaActual=`date`
dir=`ls –la`
for i in `ls –1`

Caracter de escape: \
Nota: No hay operador de concatenación de strings, simplemente se escriben las
cadenas en forma consecutiva.
Página 4 de 6
Universidad Nacional de la Matanza
Ingeniería en Informática
Cátedra de Sistemas Operativos
Año 2008
Redireccionamiento

| (pipe)
Redirecciona la salida de un comando a la entrada de otro
Ejemplo:
getent passwd | grep docentes | cut –d: -f1 | sort

> arch
Redirecciona salida estándar (stdout) a un archivo, truncándolo si
ya existe
Ejemplo:
ls –l > dir.txt

>> arch
Redirecciona salida estándar (stdout) a un archivo, agregando al
final del archivo
Ejemplo:
date > dir.txt
ls –l >> dir.txt

2> arch
Redirecciona la salida de errores (stderr)
Ejemplo:
find /proc -name sys 2> /dev/null

2>&1
Redirecciona la salida de errores (stderr) al mismo archivo que la
salida estándar
Ejemplo:
find /proc -name sys > busca.txt 2>&1

< arch
Redirecciona el contenido del archivo a la entrada (stdin), tal como
si se hubiera escrito por teclado
Ejemplo:
echo google.com > buscar.txt
echo gmail.com >> buscar.txt
echo yafuiste.com.ar >> buscar.txt
nslookup < buscar.txt
Nota: archivo puede ser cualquier tipo de archivo, por ejemplo /dev/null, un fifo, una
terminal, etc.
Página 5 de 6
Universidad Nacional de la Matanza
Ingeniería en Informática
Cátedra de Sistemas Operativos
Año 2008
Comandos externos al Shell
Lista de algunos comandos que no pertenecen a Shell, pero se utilizan intensivamente
en la programación de Shell scripts.

ls
Lista contenido de un directorio

grep
Busca expresiones en un archivo

echo
Devuelve a stdout el string pasado por parámetro

cat
Concatena archivos y los muestra en la salida a stdout

cut
Corta cadenas

wc
Cuenta líneas o caracteres

find
Busca archivos

uniq
Elimina duplicados

sort
Ordena una lista

head
Retorna las líneas al comienzo de un archivo

tail
Retorna las líneas al final de un archivo

date
Devuelve/setea la fecha y hora

more
Paginación de salida

less
Paginación de salida

pwd
Devuelve el directorio actual

nslookup Realiza una consulta a un DNS

netstat
Muestra el estado de las conexiones de red

ping
Envía paquetes ICMP a un host

ifconfig
Muestra la configuración de las interfaces de red

ps
Lista los procesos en ejecución

top
Lista los procesos en ejecución

tar
Empaqueta archivos

gzip
Comprime archivos

gunzip
Descomprime archivos

awk
Filtro complejo (ver apunte de la cátedra)

sed
Manipulación de texto

ssh
Terminal para ingresar remotamente a un equipo

ftp
Transfiere archivos entre equipos remotos

scp/sftp
Transfiere archivos entre equipos remotos en forma segura

passwd
Cambia el password del usuario

su
Cambia la sesión actual a otro usuario

sudo
Ejecuta un comando como si lo hiciera el usuario root

man
Muestra ayuda sobre comandos, archivos de configuración, funciones
de programación C, etc.

crontab
Agenda la ejecución de tareas
Página 6 de 6
Descargar

Referencia Rápida (La cátedra)