ARCHIVO

Anuncio
Linux:
Manejo de Archivos
Tema 3
Laboratorio de sistemas operativos
UTFSM-JMC
1-2016
Navegación del sistema de archivos:
El árbol invertido
• Linux utiliza un sólo árbol de
directorios para toda su colección
de archivos y directorios.
• Todas las ramas “cuelgan” de una
sola raíz.
• Para nombrar un archivo o directorio
comenzar desde la raíz y listar todas
las ramas hasta el archivo o
directorio deseado, separando
cada rama con “/”.
• Lo anterior se conoce como FQDN o
nombre completamente calificado.
-- bin...
|
/ -- -- etc...
|
|
-- mystuff...
|
|
|
-- alice -|
|
|
|
|
-- website...
|
|
-- home -|
|
-- docs...
|
|
|
|
-- elvis -|
|
|
-- graphics...
...
Navegación del sistema de archivos
Descubrir el directorio de inicio
[hogan@station hogan]$ cd ~ Se cambia al directorio del usuario hogan
[hogan@station hogan]$ pwd Verifica dónde está ubicado
/home/hogan
[hogan@station hogan]$ cd - Vuelve al último directorio visitado
/home/hogan
Subir y bajar del árbol
[alice@station alice]$ cd website/html Se cambia al directorio /home/alice/website/html
[alice@station html]$
... (edits the html files) ...
[alice@station html]$ cd /etc
Se cambia al directorio /etc
[alice@station etc]$
... (examines the configuration file) ...
[alice@station etc]$ cd
Vuelve al directorio de inicio o personal
[alice@station alice]$
... (continues with other tasks) ...
Navegación del sistema de archivos
Directorio de inicio del usuario /home/usuario
• Espacio privado del usuario.
• Proporciona un lugar para almacenar archivos de configuración de
cada usuario.
• Normalmente se le da a los usuarios un control completo sobre los
directorios de inicio, mientras que se les restringe el acceso al resto
del sistema.
• “~” Representa el FQDN del directorio de inicio del usuario cuando
se utiliza como el primer caracter de una referencia de archivo o
directorio.
Directorio temporal /tmp
• Espacio de borrador global que se encuentra disponible para todos
los procesos y usuarios del sistema.
• Después de unos días, el sistema borra los archivos allí
almacenados.
Directorios Importantes
Directorio de configuración /etc
• Prácticamente todo aspecto del sistema puede configurarse
editando un archivo de configuración.
• Los archivos de configuración normalmente se ubican bajo /etc.
• Directorios de comandos /bin y /usr/bin
• Los comandos para ser utilizados por los usuarios normales se
almacenan en los directorios de binarios /bin o /usr/bin.
• Estos directorios se conocen como “directorios de comandos no
privilegiados” ya que no se necesitan privilegios especiales para
utilizar los comandos almacenados en ellos.
• Los comandos principales, como ls, cd, cp, mv y vi van en /bin.
• Las utilidades adicionales como compiladores, el navegador web o
la suite de oficina van en /usr/bin.
Directorios de comandos /sbin y /usr/sbin
• Almacenan comandos y otros binarios para que el superusuario root
los utilice.
• Estos se denominan comandos privilegiados.
Directorios Importantes
Directorio “variable” /var
• Archivos que cambian frecuentemente (email, logs, websites,
ftpsites, etc.)
• Para facilitar la asignación de espacio y proteger archivos más
importantes.
• Búsqueda de comandos en /bin y /usr/bin
• Para conocer el FQDN de un programa en esos directorios
• Usar comando which programa
Ejercicios
• Para crear archivos nuevos (y vacíos) se usa el comando touch.
Cree el archivo newfile.ext en los siguientes directorios:
~
/tmp
/bin
/root
• Use which para determinar la ruta (o el FQDN) de los siguientes
comandos:
pwd
ls
whoami
Administración de archivos
Redirección
• A linux le gusta pensar que todo es archivo
• STDOUT es la salida estándar, que por defecto es la pantalla.
• STDOUT puede ser redireccionada a algún otro archivo usando >.
pwd > results.txt (redireccionar la salida del comando pwd)
cat results.txt (observa el contenido del archivo recién creado)
• Si se utiliza >> la nueva salida se añadirá al archivo creado
anteriormente.
[julius@station julius]$ echo Hello > greetings.txt
[julius@station julius]$ echo How are you >> greetings.txt
[julius@station julius]$ cat greetings.txt
Hello
How are you
Administración de archivos
• Copia de archivos con cp
cp [OPCIONES] {FUENTE} {DESTINO}
cp [OPCIONES] {FUENTE...} {DIRECTORIO}
• Para crear duplicados de archivo
• Mover o renombrar archivos con mv
mv [OPCION...] {FUENTE} {DESTINO}
mv [OPCION...] {FUENTE...} {DIRECTORIO}
• Mover o renombrar un archivo siempre significa para Linux el
cambio de FQDN de éste.
Administración de Archivos
Borrar archivos con rm
rm [OPCIONES] {ARCHIVO...}
• No puede borrar un directorio a menos que se utilicen opciones
especiales.
• rmdir puede borrar directorios vacíos.
• Sobreescribir archivos
Comandos potencialmente peligrosos:
cp
mv
rm
• Sobreescriben archivos sin ningún mensaje de advertencia
Ejercicios
• Cree los directorios ~/html y ~/archive
• Cree el archivo ~/index.html, debe tener como contenido la frase
“En construcción”.
• Mueva ~/index.html a ~/html
• Renombre el directorio ~/html como ~/public_html
• Copie el archivo index.html al directorio ~/archive/
Ejercicios
• Cree un archivo llamado source con el texto “fuente” y otro llamado
target con el texto “destino”.
• Sobreescriba el archivo target con el archivo source. (target debe
llamarse source después del comando, por lo tanto desaparece).
• Vuelva a crear el archivo target
• Sobreescriba target con el contenido de source, pero ahora
utilizando cat y redireccionando la salida.
Administración de Directorios
Creación de directorios vacíos
mkdir [OPCIONES] {DIRECTORIO...}
• Crea el o los directorios si no existen.
• Emite un error si uno o más existe, aunque los sin error son igualmente
creados.
• No creará un directorio si el padre tampoco existe
mkdir -p directorio_padre/directorio_hijo
• El anterior crea ambos directorios, utilizando el modificador -p.
Listado de árboles de directorio
• El comando ls con el modificador -R obtiene el listado de los
directorios y archivos que existen al interior de un directorio principal,
recursivamente.
Administración de Directorios
Borrar directorios vacíos rmdir
rmdir [OPCIONES] {DIRECTORIO...}
• Borra los directorios vacíos.
• Funciona de manera silenciosa
Copiar árboles de directorio cp -r
• Utilizando el modificador -r, el comando cp copia directorios
recursivamente.
Borrar árboles de directorio rm -r
• Al igual que cp, si se utiliza el modificador -r, se establece borrar
todo el contenido de un directorio, aún cuando éste sean otros
directorios.
Ejercicios (resueltos)
1. Utilice ls para obtener un listado recursivo del directorio
/usr/share/gdm. El listado debe incluir los tamaños de los archivos.
Redireccione la salida al archivo lsgdm.txt.
(ls -sR /usr/share/gdm > lsgdm.txt)
2. Haga una copia recursiva del directorio /usr/share/gdm en su
directorio de inicio. El nuevo directorio debe llamarse gdm.
(cp -r /usr/share/gdm ~/)
3. Haga una segunda copia del directorio anterior, ahora llamándola
gdm.bak.
(cp -r /usr/share/gdm ~/gdm.bak)
4. Elimine recursivamente el directorio gdm.bak/themes
(rm -r ~/gdm.bak/themes/)
5. Mueva el directorio gdm.bak/BuiltInSessions a su directorio de inicio.
El directorio debe seguir llamándose BuiltInSessions.
(mv ~/gdm.bak/BuiltInSessions/ ~/)
Nombres y comodines de archivos
Nombres de Archivo
• Virtualmente se puede usar cualquier caracter imprimible, con
longitud hasta 255 caracteres, excepto el “/”.
• Los caracteres especiales pueden ser interpretados por la shell
como parámetros, por lo que es necesario ponerlos entre comillas
cuando se usen en un nombre de archivo.
• En general, se sugiere nombrar los archivos de la siguiente forma:
• Caracteres alfanuméricos: (A-Z, a-z, 0-9)
• Signos de puntuación: . _ - + ~ (punto, guión bajo, guión, más,
tilde).
• No usar espacios, a no ser que utilice comillas.
Archivos ocultos
• Comienzan por un punto.
• ls –a, permite mostrar los archivos ocultos de un directorio.
Nombres y comodines de archivos
Comodines
• La shell realiza expansión de
metacaracteres o comodines
para generar una lista de
nombres de archivo que
coinciden con el patrón descrito
por la expresión del comodín y
luego pasa la lista al comando
emitido.
Consideraciones
• [aeiou] : Lista
• [a-z] : Rango
• [^aeiou] : Lista negada
• [a\-z] : Coincidirá con a, z o un
guión, porque “\” permite que
el guión sea considerado como
comodín
Caracter
Efecto
*
coincide con cero o más
caracteres (a excepción
del punto inicial)
?
coincide exactamente
con un caracter (a
excepción del punto
inicial)
[...]
coincide exactamente
con un caracter de la lista
o rango
[^...]
coincide exactamente
con un caracter no
incluido en la lista o rango
Ejercicios (resueltos)
1. Cree los siguientes directorios en su directorio de inicio: cp_even, cp_mid,
cp_thousand, iso_mid, mac y xxxn
(mkdir ~/{cp_even,cp_mid,cp_thousand,iso_mid,mac,xxxn})
2. Copie en ~/mac todos los archivos en /usr/lib64/python2.6/encodings que
comienzan con la palabra mac.
(cp /usr/lib/python2.6/encodings/mac* ~/mac)
3. Copie todos los archivos que comienzan con cp y que en su nombre
tengan un número par en el directorio ~/cp_even.
(cp /usr/lib/python2.6/encodings/cp*[02468]* ~/cp_even)
4. Copie todos los archivos que comienzan con cp y que en su nombre
tengan un número mayor a 1000, en el directorio cp_thousand.
(cp /usr/lib/python2.6/encodings/cp*[1-9][0-9][0-9][0-9]* ~/cp_thousand/)
5. Copie todos los archivos que comienzan con cp y que tengan un número
mayor a 800, pero menor que 1000 en el directorio cp_mid.
(cp /usr/lib/python2.6/encodings/cp*[89][0-9][0-9]* ~/cp_mid)
6. Copie todos los archivos que comienzan con iso8859_ y que tengan un
número después del guión entre 3 y 8 (inclusive), en el directorio iso_mid.
(cp /usr/lib/python2.6/encodings/iso8859_[3-8]* ~/iso_mid)
7. Copie todos los archivos cuyos primeros cuatro caracteres estén
compuestos de exactamente tres letras seguidas por un número dentro del
directorio xxxn.
(cp /usr/lib/python2.6/encodings/[a-z][a-z][a-z][0-9]* ~/xxxn)
Examen de archivos
Comando file
file [OPCIONES] {ARCHIVO...}
• Prueba archivos para determinar el tipo y muestra los resultados en
STDOUT.
• En general, los archivos pueden ser ASCII o binarios.
Comando cat
cat [OPCIONES] {ARCHIVO...}
• Concatena archivos en la salida estándar
• -A : Muestra todos los caracteres
• -s : Agrupa líneas adyacentes en blanco en una sola
• -n : Numera las líneas de la salida
• Apropiado sólo para archivos cortos.
Examen de archivos
Paginadores more y less:
more [OPCIONES] {ARCHIVO...}
less [OPCIONES] {ARCHIVO...}
• Muestran el o los archivos en
STDOUT bajo el control del
teclado
• Opciones
• -c : Limpia la pantalla y
redibuja en vez de
desplazarse
• -s : Agrupa múltiples líneas
adyacentes en blanco en vez
de una sola línea en blanco.
• Al usar un comando que
produce bastante salida, ésta
se puede redireccionar al
comando more o less,
permitiendo una navegación
más controlada.
• ls –la |more; ps aux |less
Comando
more?
Acción
>espacio>
Si
adelanta una pantalla entera
[PgDn]
No
adelanta una pantalla entera
b
Si
devuelve una pantalla entera
[PgUp]
No
devuelve una pantalla entera
[DnArrow]
No
adelanta una línea
[Flechaarriba]
No
se devuelve una línea
/text
Si
?texto
No
n
Si
N
No
q
Si
quit
h
Si
ayuda (introduce muchos
comandos nuevos)
va hacia adelante para
buscar texto
va hacia atrás para buscar
texto
repite la última búsqueda
repite la última búsqueda
pero en dirección contraria
Examen de archivos
Comando head
head [OPCIONES] {ARCHIVO...}
Muestra las primeras líneas de uno o varios archivos
• -num, -n numero : imprime las primera numero líneas (defecto 10).
• -q : Suprime encabezados que dan nombre de archivo
Comando tail
tail [OPCIONES] {ARCHIVO...}
Muestra las últimas líneas de uno o varios archivos
• -num, -n numero : imprime las últimas numero líneas (defecto 10).
• -q : Suprime encabezados que dan nombre de archivo
• -f : Mantiene el archivo abierto y escribe las nuevas líneas como añadidas.
Frecuentemente se utiliza para monitorear archivos de log en tiempo real.
Ejercicios
1. Genere el archivo ~/services.cat.txt, el cual contiene el
contenido del archivo /etc/services con líneas numeradas
producidas por el comando cat.
2. Ejecute ls -R /, pero use una tubería para navegar por su
salida.
3. Genere el archivo ~/confheaders.txt en su directorio de
inicio, el cual contiene las primeras cinco líneas de los
existentes en /etc/sysconfig que comienzan con redhat-. En
el archivo, no deben mostrarse los nombres de los archivos
visualizados.
4. Ejecute el siguiente comando:
vmstat 5 > ~/vmstat.out &
5. Utilice tail con el modificador correspondiente para visualizar
en tiempo real los cambios a las últimas líneas del archivo
~/vmstat.out.
Editores de archivos
Editores de texto versus procesador de texto
• En Linux, la información sobre la configuración se encuentra
almacenada en archivos de texto ASCII.
• Un editor de texto no es lo mismo que un procesador de texto,
porque está diseñado sólo para modificar el texto de un archivo
ASCII plano.
Editores de texto en Linux
• vi (Robusto, por defecto, de línea de comandos, pero el más
complicado)
• nano (simple y de línea de comandos)
• gedit (gráfico)
Editores de archivos
nano
nano [OPCIONES] {ARCHIVO}
• Abre el archivo en modo edición
• Opciones:
•
•
-w : Desactiva el ajuste de texto (para evitar daños al archivo por cortes de
línea indebidos)
-v : Ver el archivo en modo lectura
Editores de archivos: nano
Comando
Función
^G
Ayuda - abre una pequeña ventana de ayuda
^X
Salir - sale (y opcionalmente guarda el archivo)
^O
Escribir - guarda el archivo
^J
Justificar
^R
Leer el archivo - e insertar en la posición del cursor
^W
Dónde está - búsqueda de texto
^Y
Página anterior -retrocede una página
^V
Próxima página - adelanta una página
^K
Cortar texto - corta una línea a la vez
^U
Deshace el corte de texto - inserta el último bloque de texto cortado
^C
Posición del cursor- identifica el número de línea y de columna
^T
Corrector ortográfico - empieza a corregir la ortografía
Ejercicios
1. Cree una copia del archivo /etc/services como ~/services.nano.
•
•
•
•
•
Abra con nano el archivo services.nano
Use las opciones que le provee el editor para buscar y eliminar todos los
caracteres “+” que se encuentran en el archivo.
Desplácese a la línea 140 y borre ésta y la siguiente, usando las opciones
que brinda el programa.
Guarde el archivo como services.nano.modified.
Salga de nano.
2. Cree una copia del archivo /etc/services como ~/services.gedit.
•
•
•
•
Desplácese a la línea 100 del archivo y borre ésta y las dos siguientes.
Reemplace tcp por udp.
Guarde el archivo como services.gedit.modified.
Cierre gedit.
Ejercicios:
Directorios y Organización de Archivos
1.
2.
3.
4.
5.
6.
7.
8.
9.
Inicie sesión en el sistema como el usuario 'alumno'.
Manténgase en el directorio de inicio de este usuario.
Ejecute el siguiente comando para crear los archivos: report_jan,
report_feb, report_mar, graph_jan, graph_feb, graph_mar.
touch {report,graph}_{jan,feb,mar}
Cree los directorios Projects, Projects/graphs, Projects/reports y
Projects/backups.
Mueva todos los archivos que comienzan con 'graphs' al directorio
Projects/graphs
Mueva dos de los archivos que comienzan con 'report' al directorio
Projects/reports
Elimine el archivo report restante
Cámbiese al directorio Projects/Backups y copie los archivos que
terminan con 'jan' a este directorio.
Ejercicio:
Respaldar la configuración del sistema
• Cámbiese a la terminal tty1 e inicie sesión como root
• En /root cree un directorio llamado backups
• Ejecute cp de manera que se copie recursivamente el directorio
/etc/sysconfig en /root/backups, considerando lo siguiente:
• Los permisos y propiedades de archivo deben mantenerse, por
lo que debe investigar qué opción usar en el comando cp para
cumplirlo.
• Los vínculos simbólicos deben mantenerse, por lo que también
debe determinar la opción a usar.
• El nombre de los archivos debe mostrarse a medida que se van
copiando al respaldo.
• Considere en el nombre del directorio sysconfig respaldado que
quede con un timestamp ejemplo:
/root/backups/sysconfig-20140819
Descargar