PDF de programación - Introducción a Bash

Imágen de pdf Introducción a Bash

Introducción a Bashgráfica de visualizaciones

Actualizado el 21 de Marzo del 2018 (Publicado el 13 de Marzo del 2018)
399 visualizaciones desde el 13 de Marzo del 2018. Una media de 21 por semana
132,7 KB
22 paginas
Creado hace 10a (28/07/2008)
Introducción a BASH

Francisco Alonso Sarría

Índice

1 Introducción

2 Operaciones con archivos

2.1 Obtener un listado de los archivos
. . . . . . . . . . . . . . . . .
2.2 Leer el contenido de un archivo . . . . . . . . . . . . . . . . . . .
2.3 Gestión de archivos . . . . . . . . . . . . . . . . . . . . . . . . .
2.4 Partición de archivos
. . . . . . . . . . . . . . . . . . . . . . . .
2.5 Concatenación de archivos . . . . . . . . . . . . . . . . . . . . .
2.6
. . . . . . . . . . . . . . . . . . . . . . . . . .
2.7
. . . . . . . . . . . . . . . . . . . . . . . . . .
2.8 Búsqueda de ayuda . . . . . . . . . . . . . . . . . . . . . . . . .

sed y grep .
.
sort

.
.

.
.

.
.

.

.

.

3 Variables

3.1 Expresiones aritméticas . . . . . . . . . . . . . . . . . . . . . . .
3.2 Expresiones lógicas . . . . . . . . . . . . . . . . . . . . . . . . .
3.2.1 Operadores de comparación numéricos
. . . . . . . . . .
3.2.2 Operadores de comparación de texto . . . . . . . . . . . .
3.2.3 Operadores lógicos con ficheros . . . . . . . . . . . . . .
3.3 Arrays .
. . . . . . . . . . . . . . . . . . . . . . . . . .
3.4 Concatenación de variables . . . . . . . . . . . . . . . . . . . . .

.

.

.

.

.

1

2

4
4
5
6
6
7
7
8
9

9
10
11
11
11
12
13
13

4

Interacción con el usuario
4.1 Hacer ejecutable un script . . . . . . . . . . . . . . . . . . . . . .
4.2 Parámetros que se pasan al programa . . . . . . . . . . . . . . . .
4.3 Escribiendo texto en pantalla . . . . . . . . . . . . . . . . . . . .
4.4 Pidiendo información al usuario . . . . . . . . . . . . . . . . . .

5 Tuberias y redirecciones

6 Control del flujo

6.1 Condicionales .
.

if

.

.

.
.

. . . . . . . . . . . . . . . . . . . . . . . . . .
6.1.1
. . . . . . . . . . . . . . . . . . . . . . . . . .
6.1.2 Estructuras case . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . .
6.2.1 Bucles con for
. . . . . . . . . . . . . . . . . . . . . . .
6.2.2 Bucles con while . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . .
6.2.3 Bucles con until

.

.

.

6.2 Bucles .

.

.

7 Funciones

1

Introducción

14
14
15
15
16

17

18
18
18
19
19
19
20
21

21

Podemos considerar a la SHELL como un entorno de trabajo que permite al usuario
lanzar programas mediante órdenes que suelen formarse con el nombre de un pro-
grama y un conjunto de opciones o parámetros.
Por ejemplo la orden:
ls -l *.tif
Producirá un listado (orden ls) de todos los ficheros con extensión tiff (parámetro
*.tif). La opción -l establece que será un listado largo, incluyendo diversas
características de los ficheros.
Una SHELL incluye, además de la posibilidad de ejecutar programas, una serie de
comandos básicos para el manejo de los archivos y directorios del ordenador, así
como herramientas diversas para procesar la información presente en los archivos.

2

La ventaja de trabajar directamente con la SHELL, en un terminal de texto, es
la flexibilidad y la posibilidad de automatizar tareas mediante scripts, pequeños
programas que incluyen varias órdenes y herramientas que permiten a aquellas
interactuar unas con otras. El precio que hay que pagar es la necesidad de aprender
un lenguaje para sacarle partido a la SHELL.
Por ejemplo, ante el problema de convertir 200 ficheros de imagen de formato
tiff a formato jpg. ¿Como se haría con un programa basado en iconos y botones?
Repitiendo 200 veces una secuencia de movimientos y pulsaciones de ratón.
¿Cómo se haría en linea de comandos? Repitiendo 200 veces una orden similar a
convert fichero.tif fichero.jpg donde fichero se sustituye cada vez
por el nombre de un fichero.
Una posibilidad sería hacer una lista de tareas, es decir escribir en un fichero de
texto 200 veces la orden y editar cada linea para poner los nombres correctos de
los ficheros.
convert fichero_1.tif fichero_1.jpg
convert fichero_2.tif fichero_2.jpg
convert fichero_3.tif fichero_3.jpg
..
convert fichero_N.tif fichero_N.jpg
A continuación bastaría con copiar y pegar estas lineas en la terminal.
Una posibilidad más inteligente es convertir la lista de tareas en un script. Asum-
iendo que queremos transformar todos los ficheros tiff del directorio de trabajo, el
siguiente script realizará el trabajo por nosotros.

..

..

for i in $(ls *.tif);do

o=$(echo $i|sed ’s/tif/jpg/’);
convert $i $o;

done

Además de ahorrarnos tecleo, este script nos ahorrará tener que estar pendientes de
que el programa haya terminado una transformación para iniciar la siguiente.
Aunque no entiendas del todo el anterior script quedate con la idea de que la
primera linea inicia un bucle y define todos los ficheros de entrada i a los que se
va a aplicar el contenido del bucle; la segunda linea genera el nombre del fichero
de salida (o) que corresponde a cada fichero de entrada sustituyendo tif por
jpg; la tercera linea ejecuta la transformación mediante una llamada al programa
convert y la cuarta cierra el bucle.

3

2 Operaciones con archivos

Un sistema operativo debe proporcionar una serie de facilidades para manejar
archivos, al menos para los archivos en formato ASCII. A continuación se exponen
las operaciones más habituales con ficheros ASCII y los comandos para ejecutarlas
en los sistemas operativos tipo Unix:

• Listado de ficheros ls
• Creación, lectura y actualización, mediante un editor como emacs, vi
• Copiar, mover, renombrar y borrar archivos, cp, mv, rm, mkdir
• Visualización cat, more, less, head, tail
• Partición del fichero en trozos split (por filas), cut (por columnas)
• Concatenación cat (por filas), join (por columnas)
• Consulta y sustitución sed, grep
• Ordenación sort
• Búsqueda de ayuda man

2.1 Obtener un listado de los archivos

El comando ls lista archivos del directorio actual (ls) o de cualquier otro (ls /bin).
Si se añade la opción -l hace el listado en formato largo, dando detalles. La salida
obtenida consta de renglones parecidos a
-rw-rw-rw- 1 pp users 138 Apr 5 19:34 leame
y se interpretan así:

• El primer carácter indica el tipo de archivo de que se trata, con esta conven-

ción:

– - archivo común,
– d directorio,
– l enlace o referencia a otro archivo.

4

• rwxrw-rw son los permisos del archivo. Los tres grupos de 3 caracteres
indican permisos para el dueño del archivo (pepe), su grupo (users) y el resto
del mundo.

– r (read) permiso para leer el archivo
– w (write) permiso para modificar o eliminar el archivo
– x (execute) si se trata de un archivo, permiso para ejecutarlo como
programa; si se trata de un directorio, permiso para ingresar en él y
recorrerlo.

• 1 cantidad de enlaces, referencias a este archivo desde otros archivos ubica-

dos en diferentes lugares.

• pepe nombre del usuario dueño del archivo.
• users nombre del grupo al que pertenece el archivo
• 138 tamaño en bytes del archivo.
• Apr 5 19:34 fecha y hora de última modificación. Si no aparece el año,

se asume el año corriente.

• leame nombre del archivo. Notar que el nombre del archivo está siempre al

final.

ls -a muestra también archivos ocultos, normalmente no visibles en el listado.
Los archivos cuyo nombre empieza con un punto son ocultos. Las entradas . y ..
representan el directorio actual y el directorio padre, respectivamente.

2.2 Leer el contenido de un archivo

El comando cat fichero muestra el contenido de fichero.
El comando more fichero presenta el fichero página a página (hay que pulsar
una tecla para pasar de página)
El comando less fichero similar a more pero con la posibilidad de ir arriba
y abajo dentro del fichero
El comando head -n fichero presenta las n primeras lineas del fichero en
pantalla
El comando tail -n fichero presenta las n últimas lineas del fichero en pan-
talla

5

2.3 Gestión de archivos

El comando cp fichero1 fichero2 copia fichero1 con el nombre fichero2.
El comando mv fichero1 fichero2 mueve o renombra fichero1 afichero2.
El comando rm fichero borra el archivo.
El comando mkdir directorio crea un nuevo directorio.

2.4 Partición de archivos

El programa split divide un fichero en varios ficheros. La opción -l n deter-
mina cuantas lineas iran a cada fichero, el parámetro prefijo determina cual
será el prefijo con el que se formarán los nombres de los ficheros de salida (se
les añadirán combinaciónes de 2 letras: aa, ab, ac,...). Suponiendo que fichero1
tiene 4500 lineas, la orden:

split -l 1000 fichero1 fich

generará 5 ficheros: fichaa, fichab, fichac,fichad, fichae. Los cuatro
primeros contendrán 1000 lineas y el último 500.
El programa cut selecciona determinadas columnas de un fichero. La opción -d
permite determinar el carácter que se utiliza como separador de columnas, la op-
ción -f permite elegir que columnas queremos extraer. La salida de cut se dirige
a la pantalla pero la podemos redirigir a un fichero.
Si el contenido de fic1 es:
1 alpha 2 azul
2 alpha 3 rojo
3 beta 3 rojo
4 gamma 2 rojo
La orden:

cut -f 2,4 -d " " fic1

producirá como salida:
alpha azul
alpha rojo
beta rojo
gamma rojo

6

2.5 Concatenación de archivos

El programa cat permite también concatenar archivos. La orden cat fichero1>>fichero2
copia el contenido de fichero1 al final de fichero2
Para concatenar archivos por columnas se utiliza join. A partir de dos ficheros
fic1 y fic2 genera una serie de lineas concatenando aquellas que tengan el
mismo valor en un determinado campo (columna) que actúa como campo clave.
Las opciones más importantes que se pueden pasar a join son:

• -1 n donde n es la columna que actuará como campo clave en el primer

fichero (por defecto es la primera).

• -2 n donde n es la columna que actuará como campo clave en el segundo

fichero (por defecto es la primera).

• -t c donde c es el carácter que se utiliza como separador de campos (por

defecto es el espacio).

2.6

sed y grep

El comando grep permite buscar las líneas que contienen una cadena de caracteres
especificada mediante una expresión regular. Lee la entrada estándar o una lista de
archivos y muestra en la salida sólo aquellas líneas que contienen la expresión
indicada. La
  • Links de descarga
http://lwp-l.com/pdf9523  

Comentarios de: Introducción a Bash (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios
Es necesario revisar y aceptar las políticas de privacidad

Revisar política de publicidad