Práctica 4. - Los Teatinos

PRÁCTICA 4
COMANDOS DE USO GENERAL I
Objetivos
Manejo de los editores vi y joe. Comandos relacionados con la fecha del sistema: date, cal. Comandos
para la visualización de ficheros: cat, more, less. Comandos de compresión y backup de ficheros: gzip,
gunzip, tar. Comandos de comparación de ficheros: cmp, comm. Operaciones sobre ficheros de texto: sort,
cut, paste, join, head, tail, nl, split, wc.
Edición en Unix/Linux
vi f ichero
Tiene dos modos de operación: texto y comando. Cuando entramos, el editor se encuentra en modo
comando. En el modo texto el editor acepta caracteres desde el teclado y la tecla de borrado del carácter
anterior. Para cambiar al modo comando se pulsa escape.
Los principales comandos aceptados por vi son:
hlkj
Desplazamiento del cursor a izda. dcha. arriba y abajo
< CR >
Desplazamiento a la lı́nea siguiente
b
Desplaza el cursor al comienzo de la palabra
e
Desplaza el cursor al final de la palabra
0
Desplaza el cursor al comienzo de de lı́nea
$
Desplaza el cursor al final de de lı́nea
a
Añade texto detrás el cursor (append)
A
Añade texto al final de la lı́nea
i
Añade texto antes del cursor (insert)
I
Añade texto al principio de la lı́nea
O
Crea una nueva lı́nea por encima del cursor
o
Crea una nueva lı́nea por debajo del cursor
Conrol-v char Ignora el significado especial de char mientras se inserta
x
Borra carácter bajo el cursor
dd
Borra lı́nea actual
r
Reemplaza carácter bajo el cursor
u
Deshace última operación
U
Deshace las últimas operaciones sobre la lı́nea actual
J
Une la lı́nea actual con la inmediata inferior
ZZ
Almacena fichero y abandona
:wq
Almacena fichero y abandona
:w
Almacena fichero
:q
Abandona (si no hay cambios)
:q!
Abandona sin almacenar
Control-u
Desplaza la pantalla 12 lı́neas arriba
Control-d
Desplaza la pantalla 12 lı́neas abajo
Control-b
Desplaza la pantalla 24 lı́neas arriba
Control-f
Desplaza la pantalla 24 lı́neas abajo
nG
Posiciona el cursor en la lı́nea n
G
Posiciona el cursor en el final del fichero
Control-g
Visualiza el número de la lı́nea actual
Control-L
Actualiza pantalla
1
Los comandos i, I, a, A, o, O dejan el editor en modo texto.
Puede buscarse palabras mediante /patron y ?patron. El primero busca desde la posición del cursor y
el segundo desde el principio de fichero. Con n puede buscarse más ocurrencias del mismo patrón.
joe f ichero
Es un editor de pantalla completa mucho más manejable que vi. Una vez dentro de editor funcionan bien
las teclas de borrado (DEL), supresión (Supr), inserción (Insert), pagina adelante y atrás (AvPag, RePag)
y los cursores.
Las acciones mas complicadas se realizan a través de combinaciones de pulsaciones de tecla. Pulsando
Control-K-H obtenemos una ayuda con el resto de combinaciones.
Comandos relacionados con la fecha del sistema
date
Devuelve la fecha y hora del sistema en el formato: Wed Nov 26 hh:mm:ss CET 2003
Pueden utilizarse opciones para cambiar el formato por defecto. Por ejemplo:
date +%d-%b-%y devuelve 26-Nov-03
date +%d-%b-%Y devuelve 26-Nov-2003
date +%d-%m-%Y devuelve 26-11-2003
cal [[mm] aaaa]
Presenta en pantalla un calendario del año aaaa o del mes mm. Por defecto muestra el mes actual.
Comandos para compresión y backup de ficheros
gzip f ic1 f ic2 . . . f icn
Remplaza cada uno de los ficheros indicados por su versión comprimida cuyo nombre de fichero es el
nombre original más la extensión .gz
Ejemplo: La orden gzip tema1.pdf tema2.pdf comprime ambos ficheros y sus nombres pasan a ser
tema1.pdf.gz y tema2.pdf.gz
gunzip f ic1 f ic2 . . . f icn
Es la operación contraria a gzip.
tar opciones fichero-tar directorio
Crea un único fichero (fichero-tar) que contiene todos los ficheros del directorio indicado, conservando además información sobre propietario y permisos.
Las opciones principales son:
c: crear un fichero tar
x: extraer los fichero de un fichero tar
z: aplicar simultaneamente compresión o descompresión (según se utilice la opción c o la opción x)
v: mostrar información sobre los ficheros procesados
t: listar el contenido de un fichero tar
f: siempre debe utilizarse esta opción para indicar que queremos crear un fichero tar. Por defecto el
fichero tar se crearia directamente sobre una cinta magnética.
2
Ejemplo: La orden tar -cvzf fichero.tgz /home/usuario crea un fichero tgz (abreviatura de
tar.gz) que contiene el arbol de directorios del usuario.
Visualización de ficheros
cat f ic1 f ic2 . . . f icn > f ic − nuevo
Además del uso ya explicado, el comando cat permite concatenar los ficheros pasados como argumentos
en un solo fichero.
more f ichero
Permite visualizar ficheros pantalla a pantalla. Con la tecla espacio se pasa pantalla a pantalla. Pulsando
q se abandona la ejecución.
less f ichero
Es una versión mejorada de more que permite ir hacia atrás en la visualización.
Comandos de comparación de ficheros
cmp f ich1 f ich2
Compara dos ficheros. Si son idénticos no devuelve nada. Si son diferentes indica donde se encuentra la
primera diferencia.
Otra posibilidad es consultar el errorlevel (código de salida) del último programa ejecutado (echo $?).
La opción -s suprime los mensajes en pantalla y retorna un errorlevel 0 si los ficheros son idénticos, 1 si no
lo son y 2 si hay algún fichero inaccesible.
comm f ich1 f ich2
Compara dos ficheros ordenados alfabéticamente por lı́neas. Como resultado muestra en una primera
columna las lı́neas del fich1 que no están en fich2, en una segunda columna las lı́neas del fich2 que no
están en fich1, y en una tercera columna las lı́neas que están en ambos.
Operaciones sobre ficheros de texto
sort
Ordena ficheros de texto alfabéticamente (sigue la secuencia de códigos ASCII) y presenta el resultado
en la salida estándar. Si se especifican varios ficheros se hace la ordenación sobre la unión de todos.
Las principales opciones de sort son:
c
Comprueba si los ficheros ya están ordenados. Si lo están devuelve
errorlevel 0. Si no lo están devuelve 1 y un mensaje en pantalla
m
Mezcla los ficheros argumento (ya ordenados) y presenta el resultado de ordenar el conjunto
d
Ordena considerando únicamente los caracteres alfabéticos,
numéricos y blancos, ignorando los demás
f
Ignora la distinción entre mayúsculas y minúsculas
o f ichero
envı́a la salida al fichero indicado
r
ordena en sentido inverso
t separador El separador se utiliza para delimitar campos dentro de cada lı́nea
de fichero (por defecto es un blanco)
n
Realiza una ordenación aritmética
M
Se consideran los tres primeros caracteres de cada lı́nea como un
nombre abreviado de mes (Jan, Feb, . . . ) y se ordena según esa
enumeración
kn
Ordena por el campo n (usar en combinación con t)
3
cut f ichero
Permite eliminar una parte de cada lı́nea de un fichero de texto.
Con la opción -b 0 -c se especifica una lista de columnas (separadas por comas) o un rango de columnas
(mediante un guión) que deben ser visualizadas. Cada carácter ocupa una columna, numeradas desde 1 en
adelante.
Con la opción -f se especifica una lista de campos (o un rango) que deben ser visualizados. Por defecto
se emplea como delimitador de campo un tabulador. Para establecer un delimitador distinto se emplea la
opción -d.
Ejemplos:
Muestra los primeros 5 caracteres del cada fila
cut -b 1-5 fichero
Muestra los dos primeros campos de cada fila (el separador es el tabulador)
cut -f 1,2 fichero
Muestra los dos primeros campos de cada fila (el separador es : )
cut -d: -f 1,2 fichero
paste f ich1 f ich2
Une dos ficheros lı́nea a lı́nea utilizando como delimitador el tabulador. La opción -d permite utilizar
otro delimitador.
join f ich1 f ich2
Permite unir las lı́neas de dos ficheros de texto de acuerdo a una clave común. Se considera que cada
fichero es una tabla relacional, siendo cada lı́nea un registro de la tabla dividida en campos según el separador
empleado (blanco por defecto). Por defecto se emplea como clave el primer campo de cada lı́nea en ambos
ficheros, los cuales deben estar ordenados de acuerdo a dicha clave. En la salida se obtiene la fusión de las
lı́neas con la misma clave (ésta solo aparece una vez).
La opción -t permite especificar un separador de campo. La opción -n m permite utilizar un campo
distinto como clave (n indica el fichero, 1 o 2, y m el número de campo elegido).
head f ichero
Visualiza las 10 primeras filas del fichero.
tail f ichero
Visualiza las 10 últimas filas del fichero.
nl f ichero
Visualiza el fichero numerando sus lı́neas.
split [-num] f ichero pref ijo
Rompe el fichero indicado en trozos, cada uno de num lı́neas (1000 por defecto) creando nuevos ficheros
cuyo nombre está prefijado por prefijo. También permite dividir ficheros binarios.
wc f ichero
Indica el número de lı́neas (-l), palabras (-w) y caracteres (-c) del fichero indicado.
4
EJERCICIOS
1. Crear varios ficheros utilizando el editor vi. Introducir texto y experimentar con las distintas opciones
que ofrece el editor.
2. Editar los ficheros anteriores utilizando el editor joe. Solicitar ayuda y experimentar con los comandos
allı́ mostrados.
3. Obtener la fecha del sistema.
4. Presentar en pantalla un calendario del mes y del año actual. Idem de Junio del 2000.
5. Crear un fichero que contenga el calendario del año 2000 mediante la redirección de la salida estándar.
6. Realizar un backup comprimido (fichero .tgz) de un subdirectorio de vuestro directorio HOME.
7. Mostrar el contenido de varios ficheros de texto en pantalla. Crear un nuevo fichero que contenga
dichos ficheros.
8. Mostrar el contenido del fichero utilizando more.
9. Crear un fichero con el editor. Copiarlo a otro fichero en el mismo directorio. Modificar uno de ellos
cambiando algunos caracteres. Comparar los ficheros utilizando cmp y observar la salida que se obtiene.
Lo mismo con cmp -s y obtener el valor de errorlevel. Lo mismo comparando dos ficheros iguales.
Quitarle a uno de ellos los permisos de acceso y repetir la operación.
10. Crea dos ficheros que tengan lı́neas en común. Ordénalos y compáralos usando comm.
11. Experimenta las opciones de sort sobre un fichero utilizando como separador el carácter “:”.
12. Utiliza cut sobre el mismo fichero del ejercicio anterior. Mostrar las columnas de caracteres 3, 4 y 7.
Mostrar los campos 1 y 3.
13. Unir dos ficheros cualesquiera utilizando paste y usando como delimitador “:”.
14. Crear un fichero que contenga los siguientes campos (separados por “:”): nombre, DNI, dirección.
Crear otro fichero similar que contenga los campos: DNI, sueldo. Hacer un join de ambos ficheros y
guardarlo en un nuevo fichero.
15. Comprobar las salidas obtenidas con los comandos head, tail, nl, split (con la opción de 10 lı́neas)
y wc.
5