Publicado el 14 de Enero del 2017
895 visualizaciones desde el 14 de Enero del 2017
103,4 KB
14 paginas
Creado hace 13a (19/05/2011)
Bloque II: Programación orientada al
sistema
Tema 9. Programación en Lenguaje C
Tema 10. Programación del intérpretes de órdenes
UNIVERSIDAD
DE CANTABRIA
Introducción
-
- Repaso de las principales órdenes del intérprete
- Redirección de entrada y salida
- Creación y ejecución de scripts
- Paso de parámetros a un script
-
- Listas de instrucciones
-
-
Instrucciones de lazo
Instrucción de lectura
Instrucciones condicionales
GRUPO DE COMPUTADORES Y TIEMPO REAL
FACULTAD DE CIENCIAS
10
© Michael González, J. Javier Gutiérrez
19/ma/11
1
UNIVERSIDAD
DE CANTABRIA
1. Introducción
Una shell es un programa que lee instrucciones proporcionadas
por un usuario, las interpreta, y encarga al sistema operativo su
ejecución
Las instrucciones se pueden dar:
• por teclado (intérprete de órdenes tradicional)
• mediante ratón (gestor gráfico de ficheros)
• desde un fichero, llamado un script, con un texto escrito en un
lenguaje que la shell entiende: el lenguaje de la shell
GRUPO DE COMPUTADORES Y TIEMPO REAL
FACULTAD DE CIENCIAS
© Michael González, J. Javier Gutiérrez
19/ma/11
2
UNIVERSIDAD
DE CANTABRIA
El lenguaje de la shell
El lenguaje de la shell incluye:
• todas las órdenes que se pueden dar por teclado
- p.e., cp (copia), mv (mueve), rm (borra)
• instrucciones de programación:
- variables
- parámetros
-
-
-
-
- etc.
instrucciones condicionales
lazos
instrucciones de lectura
instrucciones remotas, para ejecutar en otras máquinas
GRUPO DE COMPUTADORES Y TIEMPO REAL
FACULTAD DE CIENCIAS
© Michael González, J. Javier Gutiérrez
19/ma/11
3
2. Repaso de las principales órdenes
del intérprete
Las órdenes simples tienen habitualmente este formato
UNIVERSIDAD
DE CANTABRIA
orden opciones argumentos
Las opciones suelen ir precedidas de un signo ’-’
Una orden se puede ejecutar en segundo plano (concurrentemente
a la shell) añadiendo un ’&’ al final:
gcc programa.c &
Los metacaracteres o caracteres especiales <>*?|&,;()[]#
tienen un significado especial para la shell
• ponerlos precedidos de ’\’ para perder su significado especial;
p.e., \* o \\
• o ponerlos entre apóstrofes: ’<*****>’
GRUPO DE COMPUTADORES Y TIEMPO REAL
FACULTAD DE CIENCIAS
© Michael González, J. Javier Gutiérrez
19/ma/11
4
UNIVERSIDAD
DE CANTABRIA
Nombres de ficheros
Cuando un argumento es un nombre de fichero se pueden usar
caracteres comodín:
• ’*’: se reemplaza por cualquier secuencia de cero o más
caracteres que no empiece por ’.’
• ’?’: se reemplaza por un carácter simple cualquiera
• [...]: se reemplaza por cualquiera de los caracteres entre los
corchetes; por ejemplo:
- [abc]*: todos los ficheros que comienzan por ’a’, ’b’, o ’c’
- [a-zA-Z]*.txt: todos los ficheros que comienzan por una letra
minúscula o mayúscula, y acaban en ".txt"
GRUPO DE COMPUTADORES Y TIEMPO REAL
FACULTAD DE CIENCIAS
© Michael González, J. Javier Gutiérrez
19/ma/11
5
Órdenes del sistema operativo
UNIVERSIDAD
DE CANTABRIA
UNIX
Función
ls
ls -l
cd
rm
cp
Muestra una lista del con-
tenido del directorio
Cambiar el directorio de
trabajo
Borrar un fichero
Sintaxis
ls -l nombreDirectorio
cd nombreDirectorio
rm nombreFichero
Borrar varios ficheros
Copiar un fichero en otro;
rm nombreComodín
cp ficheroOrigen ficheroDestino
Copiar uno o varios fiche-
ros en otro directorio
cp nombreComodín dirDestino
GRUPO DE COMPUTADORES Y TIEMPO REAL
FACULTAD DE CIENCIAS
© Michael González, J. Javier Gutiérrez
19/ma/11
6
Órdenes del sistema operativo (cont.)
UNIVERSIDAD
DE CANTABRIA
UNIX
mv
more
less
mkdir
rmdir
rm -r
lpr
man
Función
Sintaxis
Mover un fichero a otro (es decir
cambiarle el nombre);
Mover uno o varios ficheros a
otro directorio
Mostrar un fichero en pantalla
Crear un nuevo directorio
Borrar un directorio vacío
Borrar un directorio y todos sus
contenidos
Imprimir un fichero
Pedir info sobre una orden
mv ficheroOrigen ficheroDestino
mv nombreComodín dirDestino
more nombreFichero
less nombreFichero
mkdir nombreDirectorio
rmdir nombreDirectorio
rm -r nombreDirectorio
lpr nombreFichero
man orden
GRUPO DE COMPUTADORES Y TIEMPO REAL
FACULTAD DE CIENCIAS
© Michael González, J. Javier Gutiérrez
19/ma/11
7
Órdenes del sistema operativo (cont.)
UNIVERSIDAD
DE CANTABRIA
UNIX
Función
Sintaxis
pwd
who
grep
echo
wc
cat
find
Muestra el directorio de trabajo
Muestra los usuarios conectados
busca un texto en un fichero
muestra los argumentos especificados echo arg1 arg2
cuenta el número de caracteres, pala-
bras y líneas de su entrada estándar
muestra los ficheros especificados,
uno a continuación del otro
Busca en un directorio ficheros con
determinadas características:
-name: por nombre
ls | wc
cat nombre | wc
cat nombre1 nombre2
pwd
who
grep "texto" nombreFichero
find nomDir -name nombre
GRUPO DE COMPUTADORES Y TIEMPO REAL
FACULTAD DE CIENCIAS
© Michael González, J. Javier Gutiérrez
19/ma/11
8
Órdenes del sistema operativo (cont.)
UNIVERSIDAD
DE CANTABRIA
UNIX
Función
Sintaxis
chmod Añade(+) o quita(-) para el usuario(u),
grupo (g) u otros (o) los permisos de
lectura(r), escritura (w) o ejecución (x)
Muestra diferencias entre dos ficheros diff fichero1 fichero2
chmod u+rw fichero
chmod ugo-x fichero
chmod ug+rwx fichero
diff
GRUPO DE COMPUTADORES Y TIEMPO REAL
FACULTAD DE CIENCIAS
© Michael González, J. Javier Gutiérrez
19/ma/11
9
UNIVERSIDAD
DE CANTABRIA
3. Redirección de entrada y salida
En Unix los procesos tienen tres ficheros abiertos al arrancar:
• entrada estándar, salida estándar, y salida de error
• suelen ser el teclado, pantalla, y pantalla, respectivamente
Se puede modificar el fichero al que están ligados:
• entrada estándar: < nombre
• salida estándar: > nombre
- número de líneas del fichero nt.txt: wc -l < nt.txt
listado del directorio al fichero lista: ls -l > lista
-
- para añadir a un fichero, usar >>: ls -l >> lista
• salida de error: 2> nombre
GRUPO DE COMPUTADORES Y TIEMPO REAL
FACULTAD DE CIENCIAS
© Michael González, J. Javier Gutiérrez
19/ma/11
10
Tuberías y filtros
Podemos conectar la salida estándar de una orden con la entrada
estándar de otra, mediante una tubería:
UNIVERSIDAD
DE CANTABRIA
ls -l | wc
Un filtro es una orden que lee la entrada estándar, la transforma, y
escribe en la salida estándar
- grep palabra: busca líneas que contengan la palabra
- sort: ordena alfabéticamente
Podemos conectar varias órdenes y/o filtros con tuberías:
ls -l | grep txt | wc -l
- muestra el número de líneas que contienen la palabra "txt" del
listado de ficheros del directorio actual
GRUPO DE COMPUTADORES Y TIEMPO REAL
FACULTAD DE CIENCIAS
© Michael González, J. Javier Gutiérrez
19/ma/11
11
4. Creación y ejecución de scripts
Un script es un programa escrito en el lenguaje de la shell en un
fichero de texto
Para poder ejecutar un script el fichero debe tener permiso de
ejecución
Ejemplo:
• crear el fichero lista con el editor de texto (emacs) y el siguiente
UNIVERSIDAD
DE CANTABRIA
contenido
# Este script pone en pantalla el directorio de trabajo
# y los ficheros contenidos en él
echo "Directorio de trabajo:" $PWD
echo "Ficheros que contiene:"
ls
GRUPO DE COMPUTADORES Y TIEMPO REAL
FACULTAD DE CIENCIAS
© Michael González, J. Javier Gutiérrez
19/ma/11
12
Ejemplo (cont)
• A continuación, darle permiso de ejecución:
UNIVERSIDAD
DE CANTABRIA
chmod +x lista
• Finalmente, ejecutarlo:
./lista
Observaciones:
• El carácter ’#’ inicia un comentario
• El signo ’$’ identifica una variable; $PWD es una variable
predefinida, que indica el directorio de trabajo
• El script contiene una lista de instrucciones simples (echo, ls)
GRUPO DE COMPUTADORES Y TIEMPO REAL
FACULTAD DE CIENCIAS
© Michael González, J. Javier Gutiérrez
19/ma/11
13
5. Paso de parámetros a un script
Al invocar un script se le pueden pasar parámetros
• cada palabra o string entre comillas es un parámetro
Dentro del script cada parámetro se identifica con $n, donde n=1,
2, 3,... representa el primer, segundo, tercer,... parámetro
UNIVERSIDAD
DE CANTABRIA
#añade al fichero $1 la terminación ".txt"
#además, copia las líneas con "texto" al fichero $2
mv $1 $1.txt
grep "texto" $1.txt > $2
El parámetro especial $* representa a todos los parámetros, desde
el $1
ls -al $*
GRUPO DE COMPUTADORES Y TIEMPO REAL
FACULTAD DE CIENCIAS
© Michael González, J. Javier Gutiérrez
19/ma/11
14
UNIVERSIDAD
DE CANTABRIA
Variables
Se pueden crear variables
XREF="texto simple"
Tener cuidado de no poner espacios a los lados del ’=’
Para usar la variable:
$XREF
Ejemplo:
#cambia los permisos del fichero $1 recursivamente
ORDEN="chmod"
ARG="-R +rwx"
$ORDEN $ARG $1
GRUPO DE COMPUTADORES Y TIEMPO REAL
FACULTAD DE CIENCIAS
© Michael González, J. Javier Gutiérrez
19/ma/11
15
Variables (cont.)
Variables predefinidas
UNIVERSIDAD
DE CANTABRIA
$?
$#
$$
$HOME
$PATH
$PWD
Valor de salida del último proceso ejecutado
Número de argumentos
Pid de la shell
Directorio inicial del usuario
Ruta de búsqueda
Directorio de trabajo
Para que una variable sea visible desde otras órdenes debe
exportarse:
export PATH
GRUPO DE COMPUTADORES Y TIEMPO REAL
FACULTAD DE CIENCIAS
© Michael González, J. Javier Gutiérrez
19/ma/11
16
Sustitución de órdenes
Podemos sustituir una orden por su resultado, encerrándola entre
apóstrofes inversos:
UNIVERSIDAD
DE CANTABRIA
FICH=‘ls‘
- FICH toma como valor la lista de ficheros del directorio actual
DIR=‘pwd‘
- DIR toma como valor el directorio de trabajo
GRUPO DE COMPUTADORES Y TIEMPO REAL
FACULTAD DE CIENCIAS
© Michael González, J. Javier Gutiérrez
19/ma/11
17
6. Instrucciones condicionales
Instrucción condicional simple
UNIVERSIDAD
DE CANTABRIA
if condicion
then
ordenes
fi
Instrucción condicional simple con alternativa (else)
if condicion
then
ordenes
else
ordenes
fi
GRUPO DE COMPUTADORES Y TIEMPO REAL
FACULTAD DE CIENCIAS
© Michael González, J. Javier Gutiérrez
19/ma/11
18
Instrucciones condicionales
Instrucción condicional múltiple
Comentarios de: Bloque II: Programación orientada al sistema (0)
No hay comentarios