Tema I - Departamento de Lenguajes y Sistemas Informáticos

Anuncio
Tema I
Intérprete de comandos: Bash
(Revision : 1,2)
Herramientas de Programación.
19 de noviembre de 2004
Resumen
Intérprete de comandos desde el punto de vista del programador.
Dpto. Lenguajes y Sistemas Informáticos
Universidad de Alicante
DLSI
H.P.: Tema I: Intérprete de comandos: Bash - Revision : 1,2
Tipos de shells
Shell empleado:
bash . Existen otros:
csh, ksh , etc. . .
login shell: --login. Lee —en este orden— /etc/profile,
~/.bash profile, ~/.bash login, ~/.profile, ~/.bash logout.
interactive shell: Lee ~/.bashrc.
DLSI
1
H.P.: Tema I: Intérprete de comandos: Bash - Revision : 1,2
Palabras reservadas
El intérprete de comandos dispone de su propio lenguaje de programación. Con
él podemos realizar los shell scripts.
Este lenguaje reserva. . . :
• Palabras : ! case do done elif else esac fi for function if
in select then until while { } time [[ ]]
• Metacaracteres : 1 | & ; ( ) < > space tab.
• Operador de control : || & && ; ;; ( ) | <newline>.
1
Separan palabras si no están entrecomillados.
DLSI
2
H.P.: Tema I: Intérprete de comandos: Bash - Revision : 1,2
Personalización del teclado
Podemos asociar acciones a diversas teclas o combinaciones de teclas.
Estas se definen en el fichero ˜/.inputrc
Por ejemplo: $ cat ˜/.inputrc
Meta-d: kill-word
Control-e: "emacs & ˆM"
# set meta-flag on ←− Es un comentario.
Las definiciones de teclas se pueden leer con: bind -f ~/.inputrc.
DLSI
3
H.P.: Tema I: Intérprete de comandos: Bash - Revision : 1,2
Redirección de E/S: [I]
La redirección de la salida estándar la realizan: >, >>.
La redirección de la entrada la realiza: <.
La conexión de la salida de un proceso con la entrada de otro la realiza: |.
DLSI
4
H.P.: Tema I: Intérprete de comandos: Bash - Revision : 1,2
Redirección de E/S: [II]
Podemos redireccionar la salida de error a un fichero:
incluso, a un descriptor de fichero
p1 2 > prueba
o,
2 > &1 .
Si se redirigen ambas a la vez, el orden es importante, no es lo mismo
ls > dirlist 2 > &1 2 que ls 2 > &1 >dirlist .
2
Se abrevia de esta manera
DLSI
ls &> dirlist
.
5
H.P.: Tema I: Intérprete de comandos: Bash - Revision : 1,2
Control de procesos: [I]
Podemos lanzar procesos en primer plano y segundo plano: &.
Para alternar un proceso entre primer y segundo plano disponemos de los
comandos: fg, bg, jobs.
Un proceso en primer plano se puede ‘dormir’ mediante: ˆZ.
Procesos en funcionamiento: top, ps, pstree.
DLSI
6
H.P.: Tema I: Intérprete de comandos: Bash - Revision : 1,2
Control de procesos: [II]
Uso de nohup combinado con &.
Podemos enviar señales a los procesos con: kill, killall.
DLSI
7
H.P.: Tema I: Intérprete de comandos: Bash - Revision : 1,2
Control de recursos
El intérprete de comandos puede controlar algunos recursos disponibles para
él mismo y para los procesos que ponga en marcha.
Esto se gestiona mediante la orden:
ulimit [-SHacdflmnpstuv] [limit].
Podemos controlar:
tamaño de los ficheros core,
número máximo de ficheros abiertos, etc. . . .
DLSI
8
H.P.: Tema I: Intérprete de comandos: Bash - Revision : 1,2
Shell scripts: [I]
Son ‘programas’ escritos en el lenguaje de programación del shell.
Admiten comentarios en sus lı́neas a partir del carácter: #.
Se pueden ejecutar pasándolos como parámetros al propio shell:
sh mi-guion.sh3
3
No es necesaria la extensión .sh.
DLSI
9
H.P.: Tema I: Intérprete de comandos: Bash - Revision : 1,2
Shell scripts: [II]
Pero también podemos poner en su primera lı́nea, en un comentario especial,
el ‘camino’ hasta el programa que los debe interpretar, dotar de permisos de
ejecución al fichero con el shell-script y ejecutarlo:
#! /bin/sh
# El intérprete se indica en la primera lı́nea.
echo hola.
Esto mismo es aplicable para cualquier intérprete, p.e. perl:
#! /usr/bin/perl
# Esto es un guión, similar al anterior, escrito en perl.
print "hola\n"
DLSI
10
H.P.: Tema I: Intérprete de comandos: Bash - Revision : 1,2
Shell scripts: [III]
Se pueden definir funciones:
[ function ] nombre () { lista de comandos; }
Por ejemplo:
function hora () { echo La hora es: $(date). }
A los parámetros de la función se accede mediante las variables especiales:
$1...$n.
También se pueden crear
alias
alias ll=’ls -l --color’
DLSI
para comandos habituales:
, y eliminarlos con
unalias .
11
H.P.: Tema I: Intérprete de comandos: Bash - Revision : 1,2
Ficheros en lı́nea: [I]
Se llaman también
here documents .
Son una forma especial de redirección:
<<[-] EOF
fichero en
linea
EOF
DLSI
12
H.P.: Tema I: Intérprete de comandos: Bash - Revision : 1,2
Ficheros en lı́nea: [II]
Por ejemplo:
cat << FIN
Fichero con dos
lineas de texto solo.
FIN
DLSI
13
H.P.: Tema I: Intérprete de comandos: Bash - Revision : 1,2
Búsqueda de comandos
El shell dispone de una ‘pila’ con los últimos comandos ejecutados. Nos
movemos por ella con los cursores ↑ y ↓.
También podemos ‘buscar’ un determinado comando con la combinación de
teclas ˆr, y comenzando a teclear el comando buscado.
El shell irá mostrando los comandos anteriores que coinciden con lo tecleado
hasta ahora. Una vez aparezca el buscado, bastará con pulsar enter.
DLSI
14
Descargar