1.1      El sistema de ficheros de Linux

1.1.1      Estructura jerárquica.

En Linux existe un directorio inicial, que se crea al formatear el disco, dentro del cual se generan todos los restantes ficheros y directorios. Éste recibe el nombre de directorio raíz  y se presenta por: /. Debido a esta característica la estructura del sistema de ficheros es jerárquica y para representarlo se utiliza es un diagrama de árbol.

 

1.1.1      Rutas de acceso a archivos.

Siempre tenemos dos formas de especificar una ruta de acceso:

§         Absoluta: Indica el camino completo desde la raíz hasta el archivo o directorio que queremos especificar.

Ejemplo:

/home/isabel
/home/alu7692/asig/Metodologia/prac1.p
/Bin
       No es una ruta de acceso en el árbol.

§         Relativa: Especificamos la ruta en relación con el punto del árbol en que nos encontremos, para ello podemos usar:

.

 Indica el directorio actual.

~

 

..

Indica el directorio padre.

1.1.1.1       Ejemplo:

Directorio actual

Ruta relativa

Ruta absoluta

Metodologia

prac1.p

/home/alu7692/asig/Metodologia/prac1.p

Metodologia

../Ingles

/home/alu7692/asig/Ingles

Ingles

../Metodologia/prac1.p

/home/alu7692/asig/Metodologia/prac1.p

 

Estando en asig rutas válidas para Metodologia:

Metodologia

./Metodologia 

~/asig/Metodologia

/home/alu7692/asig/Metodologia

 

1.1.2     Directorios habituales. 

Ruta

Propósito

/bin

Comandos esenciales.

/boot

Núcleo y otros programas relacionados con el arranque

/home/nombre_usuario

Directorio personal de los usuarios

/usr/bin

Otros comandos que no están en /bin

/usr/sbin

Comandos para tareas de administración.

/usr/lib

Bibliotecas de enlace

/usr/src

Fuentes de los programas y del sistema operativo

/user/local

Programas y ficheros de datos añadidos por el administrador

/dev

Directorio de dispositivos.

/mnt

Dentro de éste se suelen crear directorios para montaje de sistemas de ficheros.

pwd: Muestra el directorio actual

1.1.3      Moviéndonos y modificando el árbol de directorios.

cd [Nombre de directorio]: Cambia del directorio de trabajo actual al directorio que se especifique. “Nombre de directorio” tiene que ser cualquier ruta de acceso válida en en nuestro sistema. Si no se especifica ninguno vamos a nuestro home

Recuerda:

Si no se especifica ningún nombre de directorio vamos a /home/nombre_usuario, es decir, a nuestro home.

    Ejemplos:

[isabel@esquinzo isabel]$ pwd¿

/home/isabel

 

[isabel@esquinzo isabel]$ cd Metod¿

[isabel@esquinzo isabel]$ pwd¿

/home/isabel/Metod

 

[isabel@esquinzo Metod]$ cd

[isabel@esquinzo isabel]$ pwd

/home/isabel

 

ls [-opciones] [Ruta de acceso al directorio] Nos permite listar el contenido del directorio especificacado por “Ruta de acceso al directorio”. Si no especificamos ninguno se considera el directorio actual.

Opciones

Modificación

-a

Se listan todos los ficheros, incluso los ocultos

-d

Se muestran los directorios como si fueran ficheros, en vez de mostrar el contenido

-f

No se ordenan contenidos, se listan en el orden en que están almacenados en disco.

-l

Se muestra además los permisos, el número de enlaces, nombre del propietario, el del grupo, tamaño en bytes, fecha última modificación.

-m

Se listan los ficheros horizontalmente, tantos en cada línea como quepan, separados por comas.

-r

Se ordenan los contenidos en orden inverso

-s

A la izquierda del nombre se muestra el tamaño en bloque de 512 bytes

-t

Ordena por tiempos, primero los más recientes.

-u

Ordena por el último acceso.

-x

Listado por columnas ordenadas horizontalmente.

-R

Se lista el contenido de todos los directorios recursivamente.

-1

Se lista un fichero en en cada línea.

 Ejemplos:

mkdir [opciones] [Ruta/directorio]: Crea el directorio especificado dentro de “Ruta”. Si no se especifica “Ruta” lo crea en el directorio actual.  

Opciones

Modificación

-m

Establece los permisos

-v

Imprime un mensaje por cada directorio creado

-p

Crea los directorios padre que falten en ruta para directorio.

-help

Muestra la ayuda

1.1.1.1       Ejemplo:

[isabel@esquinzo clases]$ ls

manualfreepascal  prueba  prueba1  prueba2  prueba.o  prueba.pas

[isabel@esquinzo clases]$ mkdir comandos

[isabel@esquinzo clases]$ ls

comandos  manualfreepascal  prueba  prueba1  prueba2  prueba.o  prueba.pas

 

 

Recuerda:

Los argumentos de los comandos no tienen por qué ser únicos. Por ejemplo, si queremos listar el contenido de los directorios Metodologia e Ingles del subdirectorio asig desde /home/alu7692:

ls asig/Metodologia asig/Ingles

 

 cp [-opciones][archivos ó directorios origen] [archivos o directorios destino]: Copia un fichero (o directorio) a un destino dado, o bien, copia varios ficheros (o directorios) a un directorio destino.

Recuerda:

cp

Origen

Destino

 

Un fichero

Un fichero con igual nombre a otro directorio.

 

Un fichero

Un fichero con distinto nombre en este directorio o en otro directorio.

 

Varios ficheros

Otro directorio.

 

Un directorio

Otro directorio

 

Opciones

Modificación

-b

Hace copias de seguridad de ficheros que están a punto de ser sobrescritos o borrados

-d

Copia los enlaces simbólicos en lugar de los ficheros a los que apunta

-f

Elimina los ficheros destino que ya existan

-i

Pregunta si sobrescribir los ficheros destino que ya existan

-p

Preserva los permisos del propietario y el grupo

-r

Copia directorios recursivamente

-u

No copia un fichero o directorio si el destino ya existe y tiene la misma fecha de modificación o más reciente

 Ejemplos:

Copiar prueba, prueba1 del directorio actual al directorio ../Metod/clases conservando el nombre que tienen.

[isabel@esquinzo nuevo3]$ cp prueba prueba1 ../Metod/clases

 

Copiar prueba en ../Metod/clases con el nombre prueba2. La información almacenada en prueba2 será la misma que la de prueba pero con otro nombre y en otro lugar.

[isabel@esquinzo nuevo3]$ cp prueba ../Metod/clases/prueba2

 

Copia todos los ficheros del directorio actual, cuyo nombre empieza por prueba en ../Metod/clases y si ya existe nos pregunta si queremos sobreescribir.

[isabel@esquinzo nuevo3]$ cp -i prueba* ../Metod/clases

cp: overwrite `../Metod/clases/prueba'? n

cp: overwrite `../Metod/clases/prueba1'? n

cp: overwrite `../Metod/clases/prueba2'? y

cp: overwrite `../Metod/clases/prueba.o'? y

cp: overwrite `../Metod/clases/prueba.pas'?

 

 mv [opciones] origen destino Mueve los archivos|directorios especificados. 

Opciones

Modificación

-b

Hace copias de seguridad de ficheros que están a punto de ser sobrescritos o borrados

-f

Elimina los ficheros destino que ya existan sin preguntar

-i

Pregunta si sobrescribir los ficheros destino que ya existan

-v

Copia directorios recursivamente

-u

No copia un fichero o directorio si el destino ya existe y tiene la misma fecha de modificación o más reciente

 

Mueve el fichero manualfind.txt a /home/isabel/Metod/clases/comandos

[isabel@esquinzo isabel]$ mv manualfind.txt Metod/clases/comandos

 

rm [opciones] ficheros

Borra ficheros. Borra directorios cuando se usan las opciones –r o –R. 

Opciones

Modificación

-i

Pregunta si borrar cada fichero. Si la respuesta no  es  afirmativa, se pasa al siguiente fichero sin borrar éste.

 

-f

No  hace caso de los ficheros que no existan y nunca pregunta al usuario

-r, -R

Borra los contenidos de directorios recursivamente.

-v

Muestra el nombre de cada fichero antes de borrarlo.

 1.1.1.5       Ejemplos

Borrar todo el árbol de directorios a partir de asig

[alu7692@esquinzo alu7692]$ rm –r asig¿

Borrar los ficheros prac1.p, prac2.p, pidiendo confirmación al usuario.

[alu7692@esquinzo alu7692]$ rmi asig/Metodologia/prac[12].p

 rmdir [opciones] directorios.
Borra directorios vacíos

Opciones

Modificación

-i

Ignora cada fallo porque un directorio no esté vacío.

-p

Elimina el directorio y luego intenta eliminar cada directorio en la ruta. rmdir -p a/b/c º rmdir a/b/c a/b a

-v

Muestra un diagnóstico para cada directorio procesado

-help

Muestra la ayuda

 

Borrar el subdirectorio nuevo1 del directorio actual.

[isabel@esquinzo isabel]$ rmdir nuevo1

Borrar el subdirectorio comandos del directorio actual.

[isabel@esquinzo clases]$ rmdir comandos
rmdir: `comandos': El directorio no está vacío

Recuerda:

Cuando usamos el comando rmdir debemos borrar previamente su contenido, usando rm para ficheros. Los directorios los borramos usando la opción recursiva de rm o rmdir.

 

1.1.2      Algunos comandos útiles.

cat [opciones][lista de archivos] Concatena el contenido de los archivos listados y lo muestra en la salida estándar. Si no se especifica ningún fichero toma la información desde el teclado.

 

Opciones

Criterio

-b

Numera todas las líneas excepto las que están en blanco.

-E

Muestra el símbolo $ al final de cada línea.

-n

Numera cada línea en la salida.

-T

Muestra los tabuladores como ^I.

 Recuerda:

La entrada estándar es el teclado. La salida estándar es la pantalla. La consola es el conjunto pantalla + teclado.

 1.1.2.1       Ejemplos:

Mostrar el contenido del fichero texto.txt que está en el directorio actual en pantalla.

[isabel@esquinzo comandos]$ cat texto.txt
Hola, esto es un fichero solo de texto
que servira como ejemplo para mostrar el
funcionamiento de algunos comandos del
S.O. Linux. Familiarizarse con el uso del mismo
es el objetivo del primer tema de la asignatura
Metodologia y Tecnologia de la Programacion I de la
Ingenieria Tecnica
en Informatica de Gestion y en Ingenieria
Tecnica en Informatica de Sistemas.

 

Mostrar el contenido del archivo prueba.pas del directorio actual y el de texto.txt que está en el subdirectorio comandos.

isabel@esquinzo clases]$ cat prueba.pas comandos/texto.txt

program mundo;  

begin
writeln('Hola Mundo, como estas?');
end.
Hola, esto es un fichero solo de texto
que servira como ejemplo para mostrar el
funcionamiento de algunos comandos del
S.O. Linux. Familiarizarse con el uso del mismo
es el objetivo del primer tema de la asignatura
Metodologia y Tecnologia de la Programacion I de la
Ingenieria Tecnica
en Informatica de Gestion y en Ingenieria
Tecnica en Informatica de Sistemas.

Recuerda:

Si la información que muestra un comando no cabe en una única pantalla, puedes hacer que te la vaya mostrando pantalla a pantalla poniendo después del comando:

|more

Secuencia de teclas:

Alt Gr + 1+ more

 

Si queremos almacenar en un fichero la información que un comando muestra en pantalla podemos utilizar la redirección: Comando > Nombre del fichero.

 

 find [camino] [criterio] acción Busca en inicio y todos sus subdirectorios los archivos que cumplan el criterio de búsqueda, con los resultados lleva a cabo la acción especificada. Inicio pueden ser varios argumentos, el primer ‘-‘ que se encuentre marcará el comienzo de los criterios.

Opciones

Criterio

-name

Busca los ficheros por el nombre, según el patrón que se especifique.

-group   nombre

Busca por el nombre del grupo que se especifique.

-user nombreusuario           

Busca los que pertenecen al usuario especificado.

-nouser

Pertenece a un propietario desconocido.

-mtime número

Hora de la última modificación, si número va precedido de un - busca archivos posteriores, si va precedido de un + busca anteriores.

 1.1.2.2       Ejemplo:

Buscar en el directorio actual todos los archivos que se llamne prueba y mostrarlo en pantalla.

[isabel@esquinzo isabel]$ find . -name prueba -print

./Metod/clases/prueba
./nuevo3/prueba

 

grep [opciones] [patrón] [ficheros] Busca en ficheros o en la entrada estándar, si no se especifican ficheros las líneas en que aparece el patrón.

Opciones

Criterio

-num

Las líneas concordantes se muestran acompañadas num líneas anteriores y num líneas posteriores.

-A num

Muestra num líneas de contexto después de las que concuerdan con el patrón.

-B num           

Muestra num líneas de contexto antes de las que concuerdan con el patrón.

-C

= -2

-c

No muestra las líneas sino la cantidad de líneas

-i

Considera igual mayúsculas y minúsculas

-L

Muestra los ficheros donde no hay concordancias. La búsqueda se detiene en la primera concordancia.

-l

Muestra los ficheros donde hay concordancias. La búsqueda se detiene en la primera concordancia.

-n

Prefija cada línea de salida con el número de línea en su fichero.

 

1.1.2.3       Ejemplo:

Buscamos todos los archivos con extensión txt en los que aparezca la palabra hola. Sólo queremos saber la cantidad de líneas en la que aparece y consideramos igual las mayúsculas y minúsculas.

[isabel@esquinzo comandos]$ grep -ic hola *.txt
ejemplo_cat.txt:2

manualfind.txt:0
manualgrep.txt:0

texto.txt

1.1.2      Permisos de los ficheros.

La seguridad de un sistema Linux se basa en la propiedad de los ficheros y los permisos que se le dan a los usuarios sobre los mismos. Los permisos se refieren a los que un usuario determinado puede hacer con un fichero.

 

 

Lectura (r, 4)

Escritura (w, 2)

Ejecución (x, 1)

Archivo

El usuario puede ver el contenido del archivo

 

El usuario que tenga este permiso puede escribir o borrar el archivo.

 

Si el fichero contiene un programa, el usuario puede ejecutarlo.

 

Directorio

El usuario puede listar el contenido del directorio.

El usuario que tenga este permiso puede añadir o borrar ficheros de ese directorio

El usuario puede consultar información de los ficheros en el directorio

 

Recuerda:

Cuando se crea un fichero el sistema le asigna los permisos para el propietario, el grupo y otros.

El comando ls con la opción –l nos permite averiguar qué permisos tiene asignado un fichero.

 

chmod [opciones] [ugo] [+-][rwx] archivos Cambia los permisos de los archivos especificados según las opciones.

 

Opciones

Modificación

-c

Muestra un mensaje mencionando sólo los ficheros a los que le puede modificar.

-f

No muestra mensaje de error sobre ficheros que no se pueden cambiar.

-v

Muestra un mensaje para cada fichero procesado

-R

Cambia recursivamente los permisos de directorios y sus contenidos

 

1.1.1.1       Ejemplo:

Añadir el permiso de lectura al fichero ejem1.p del directorio actual.

[isabel@esquinzo clases]$ chmod u+r ejem1.p¿

Eliminar el permiso de lectura y añadir el de ejecución a otros.

[isabel@esquinzo clases]$ chmod o-r+x ejem1.p¿

Añadir permiso de ejecución al propietario y al grupo.

[isabel@esquinzo clases]$ chmod ug+x prueba.*

 

Los permisos se pueden especificar también utilizando una máscara octal mediante un número de 3 dígitos. El primero correspondiendo a los permisos del propietario, el segundo los del grupo y el tercero otros. Cada número se obtiene sumando o no: 1, 2, 4, según se le quiera dar el permiso de ejecución, escritura o lectura respectivamente.

 

1.1.1.2       Ejemplo:

Establecer sólo permiso de escritura al propietario, grupo y otros al fichero nuevo3 del directorio actual.

[isabel@esquinzo isabel]$ chmod 222 nuevo3

Establecer permiso de lectura al propietario y al grupo y de ejecución a otros.

[isabel@esquinzo isabel]$ chmod 441 nuevo3

 

 1.2      mount

La orden mount sirve para pegar el sistema de ficheros encontrado en algún dispositivo al árbol de directorios. De modo análogo pero al revés, la orden umount(8) lo despegará de él de nuevo.

Los usuarios normales sólo pueden montar los dispositivos que estén listados en /etc/fstab.

Aunque el comando mount es mucho más complejo describiremos en un nivel básico su uso:

mount –t tipo dispositivo donde

 

Opción

Descripición

-h

Muestra un mensaje de ayuda.

-r

Monta el sistema de ficheros de lectura  exclusiva. Un sinónimo es -o ro.

-t tipo

El  argumento que sigue a -t se emplea para indica el tipo del sistema de ficheros.

iso9660 (cdrom), MS-DOS (sistema de ficheros creado con MS-DOS)

-o conv= auto

Se usa para forzar la conversión automática del formato de los archivos de texto de MS-DOS a Unix

 Los dispositivos se especifican por el fichero especial de dispositivo:

Dispositivo

Fichero especial de dispositivo

Particiones de disco duro

/dev/hd[ab][1234]

Discos flexibles

/dev/fd[01]

CD-ROM

/dev/scd[01]

 

Recuerda:

Podemos utilizar mount dispositivo o mount punto de montaje. Si el dispositivo o punto de montaje mencionado están en /etc/fstab, buscará lo que falte y lo montará con los parámetros indicados en ese archivo. Por ello podemos montar, generalmente la disquetera o el cdrom escribiendo respectivamente:

mount /mnt/floppy

mount /mnt/cdrom

Nunca finalices la sesión sin desmontar los dispositivos, por ejemplo, para desmontar la disquetera:

umount /dev/fd0

La sintaxis de umount: umount dispositivo o bien: umount punto de montaje

 Recuerda:

Si quieres eliminar automáticamente los ^M (retorno de carro) de tus ficheros de texto creados en MS-DOS cuando montas la disquetera debes utilizar –o conv=auto:

mount –o conv=auto –t MS-DOS /dev/fd0 /mnt

 

1.3       Compresión y empaquetado de ficheros:

gzip [opciones] lista de ficheros:

Comprime los datos de un fichero, los graba en formato .gz y luego sustituye el archivo original por el comprimido si se ha creado sin problemas.

             

Opción

Descripición

-d

Descomprime.

-h

Muestra una pantalla de ayuda y acaba.

-l

Lista información sobre cada fichero comprimido.

-q

Suprime todos los avisos.

-r

Recorre la estructura de directorios recursivamente.

-t

Comprueba la integridad del fichero comprimido.

-v

Muestra el nombre y porcentaje de cada fichero comprimido.

 

gunzip

Descomprime ficheros.

tar [opciones] [archivo tar][lista de archivos]

Almacena en un único archivo la lista de ficheros que se especifican.

Opción

Descripición

-A

Añade los ficheros al archivo.

-c

Crea un fichero tar nuevo.

-r

Añade los ficheros al final.

-t

Lista el contenido de un fichero tar.

-v

Muestra en pantalla los ficheros procesados.

-d

Borra archivos.

 

Crear un fichero tar con todos los archivos en Metodologia y luego comprimirlo en el fichero met.tar.gz.

tarcvf met.tar ~/asig/Metodologia/*

gzip met.tar

 

1.4      mtools.

Las mtools son una colección de herramientas que permite a sistemas Unix manipular ficheros de MS-DOS. Son programas que intentan emular la orden equivalente en MS-DOS. Es posible tener acceso a disquetes sin tener que montarlos, también podemos cambiar disquetes sin tener que montarlos ni desmontarlos. 

Los nombres de directorios pueden emplear como separador ‘/’ o ‘\’. Si se utiliza \ o comodines como * hay que entrecomillarlos.

Básicamente el nombre de los comandos de mtools se corresponde con el nombre del comando equivalente en MS-DOS precedido de una m: mcopy, mdir, mdel, mcd, etc.

 

Recuerda:

En MS-DOS un cambio de línea se marca con un retorno de carro y un salto de línea, mientras que en Unix se marca exclusivamente con el salto del línea. Esto puede provocar que cuando abras un fichero de texto creado en MS-DOS en Unix veas al final de cada línea unos símbolos extraño. Para evitarlo debes usar la opción –t con el mcopy.