You are on page 1of 10

walter, duran

Wildcards y Convencion de nombres

El manejo de archivos es critico para utilizar el sistema, ya que el mismo trata casi
todo como un archivo, incluyendo al hardware y las interfaces. Es por esto por lo
que la habilidad de crear, eliminar, mover, renombrar, archivar y manipular
archivos es tan importante.

Empezaremos por comprender algunas de las reglas que aplican a los nombres de
archivos y atajos que podemos utilizar. Con esta informacin, aprenderemos a
manipular los archivos, directorios, y dems.

File naming y Wildcard Expansion rules

Los nombres de archivos en Linux no difieren de otros sistemas operativos. Sin


embargo, cada sistema tiene sus particularidades, por lo que esas diferencias
pueden ser un inconveniente para mover archivos entre sistemas.
Los nombres de archivos en Linux pueden contener mayusculas, minusculas, letras,
numeros, y gran parte de los signos de control y puntuacion. Sin embargo, es
recomendable evitar agregar puntos (.), guiones medios y bajos. A su vez, algunos
programas crean archivos de backup que terminan en tilde (~).
Los nombres de archivo pueden contener espacios, siempre precedidos por una
barra invertida () o encerrando el nombre completo entre comillas ().
Unos pocos caracteres tienen un significado para el sistema y no deberian ser
utilizados en nombres. Estos incluyen los asteriscos (*), signos de pregunta, barras
(/)(), y comillas (). Si bien se pueden crear archivos que contengan estos
caracteres, pueden generar alguna confusion posteriormente.

Los nombres tambien pueden empezar con un punto (.). Estos archivos tienen la
particularidad de que estan escondidos de la vista de muchas de las aplicaciones
que muestran archivos, por lo que son utilizados para guardar archivos de
configuracion en el home directory.

Dos nombres de archivo son especiales:

E-Learning

1 / 10

walter, duran

(.): El nombre con un solo punto (sin los parentesis), refieren al directorio actual.
(..): El nombre con dos puntos refiere al directorio superior.

Una diferencia critica entre Linux y otros sistemas, es que Linux toma en cuenta las
mayusculas y minusculas en el nombre de archivo, por lo que Prueba.txt, prueba.txt
y PRUEBA.TXT sern tratados como tres archivos distintos, que pueden coexistir en
un mismo directorio.

Wildcards: Comodines

Podemos utilizar comodines con muchos comandos. Un comodin es un simbolo o


juego de simbolos que representa otros caracteres. Comunmente, en Linux
dispondremos de tres comodines:

? : Se utiliza para representar un carcter. Por ejemplo, si buscamos coc?.txt, la


busqueda nos devolver, por ejemplo: coca.txt, Coco.txt (en caso de que existan
dichos archivos).
* : Coincide con cualquier carcter o juego de caracteres. Por ejemplo, b*k traer
como resultado book, balk, buck, bk, bbk, y backtrack, entre otros.
[] : Los caracteres dentro de [] retornarn cualquier caraceter especificado. Por
ejemplo, b[ao][lo]k traeran como resultado balk y book, por no buck. Podemos,
tambien, indicar un rango [a-z]. Es importante recordar que Linux es Case
Sensitive en cuanto a los nombres de archivo.

E-Learning

2 / 10

walter, duran

Paquetes y Links

Comandos de archivos:
touch: Los sistemas de archivos Linux mantienen tres registros de tiempo:
Tiempo de creacin
Ultima fecha de modificacion
Ultimo acceso
Algunas veces, sin embargo, puede ser necesario cambiar estos valores. Podemos,
entonces, utilizar el comando touch para modificar el tiempo de modificacion y
acceso a la hora actual. Esto es util, por ejemplo, en la compilacion de codigo fuente
del cual existe una nueva version.
Empaquetando archivos
Podemos archivar elementos dentro de un paquete, de forma de poder envarlo para
su posterior descarga e instalacion, realizar backups, y muchas otras funciones mas.
Los comandos ms utilizados para estas funciones son:
tar (tape archiver): podemos usar tar para guardar archivos. En efecto, las tarballs
(archivos creados por tar y comprimidos con gzip o bzip2) son normalmente
utilizados para transferencia de archivos, por ejemplo en la distribucion de codigo
fuente.
Si bien el comando tar es complejo, la gran mayoria de las acciones a realizar
pueden ser vistas con unos pocos comandos
--create (c)
--extract (x)
--list (t)
--file (f)
--verbose (v)
--gzip o ungzip (z)
Por ejemplo, si necesitamos comprimir un directorio de nuestro home directory,
utilizaremos el siguiente comando:
tar cvzf /home/cbonomo/Prueba.tar.gz ~/Prueba
Para descomprimir el mismo, usaremos el siguiente comando:
E-Learning

3 / 10

walter, duran

tar zxvf Prueba.tar.gz


Es importante que el operador f est en el ultimo lugar, ya que debemos pasarle
como parametro la ruta al archivo.
En caso de que queramos listar el contenido del archivo sin extraerlo, podremos
utilizar el siguiente comando:
tar tvf Prueba.tar.gz
Lo que nos traer como resultado el contenido del mismo.
Cpio
Cpio es en principio similar a tar, pero la forma de operar de la herramienta difiere.
Cpio tiene tres modos de operacin:
--create (-o) crear un archivo y copiar los otros elementos dentro del mismo
--extract (-i) extraer la informacion de un archivo existente.
--pass-trough (p) combinar los metodos anteriores para permitirnos copiar un
directorio de una ubicacin a otra
Para utilizar cpio, por ejemplo para archivar un directorio, debemos pasarle la lista
de archivos, utilizando stdin. Podemos hacer esto mediante el comando find, de la
siguiente manera:
find ./Prueba | cpio -o > /home/cbonomo/cpio/Prueba.cpio
El archivo tambien puede se comprimido mediante gzip, incluyendo el comando
luego del pipe:
find ./Prueba | cpio -o | gzip > /home/cbonomo/cpio/Prueba.cpio.gz
Para extraer la informacion del archivo NO comprimido, podemos utilizar la opcion
-i. En este caso, no hay necesidad de utilizar el pipe:
cpio -i < /home/cbonomo/cpio/Prueba.cpio
En caso de que el archivo est comprimido, debemos primero descomprimirlo
mediante gunzip
gunzip -c /home/cbonomo/cpio/prueba.cpio.gz | cpio -i
E-Learning

4 / 10

walter, duran

Manejando links
En linux, un link es una forma de darle a un archivo multiples identidades, de una
forma similar a los accesos directos de Windows. De esta forma, podremos hacer
los archivos mas accesibles, darle a los comandos multiples nombres, y habilitar a
programas que buscan los mismos archivos en diferentes ubicaciones.
Mediante el comando ln podremos crear links. La sintaxis es la siguiente:
ln [opciones] fuente link
La fuente es el archivo original, y el link es el nombre del link que queremos crear.
Este comando soporta opciones que tienen diferentes efectos:
Remover links existentes: el comando -f o force eliminar cualquier link existente
con el mismo nombre que el link a crear. La opcion -i o interactive funciona de la
misma forma, pero nos pregunta antes de realizar el cambio.
Crear un hard link a directorios: normalmente, no se pueden crear hard links a
directorios. El usuario root puede intentarlo, mediante la opcion directory o -d. Sin
embargo, muchos sistemas no soportan esta funcion.
Crear un link simbolico: ln normalmente crea hard links por defecto. Para crear un
link simbolico, debemos agregar la opcion -s o symbolic.
Que son los links simbolicos?
Podemos comparar los enlaces simbolicos con los accesos directos de Windows. El
archivo o directorio se encuentra ubicado en un unico punto del disco, y los links
son un puntero hacia el. Cada enlace simbolico tiene su propio identificador
(numero de inodo), lo que permite hacer links entre distintos sistemas de archivos.
Creemos un enlace por medio de ln para entender mejor el concepto. En este caso,
crearemos un archivo test, y luego crearemos un link simbolico del mismo:
echo este es el archivo test > test
ln -s test link-a-test
Si listamos ambos, veremos que el link tiene el carcter l, que lo identifica como
link simbolico:
ls -l
E-Learning

5 / 10

walter, duran
lrwxrwxrwx 1 cbonomo cbonomo 4 2013-01-10 18:59 enlace-a-test -> test
-rw-r--r-- 1 cbonomo cbonomo 0 2013-01-10 18:58 test

Podemos comprobar las caracteristicas de ambos mediante el comando stat

stat test
File: test
Size: 0 Blocks: 0 IO Block: 4096 archivo regular vaco
Device: 804h/2052d Inode: 73793 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 1000/ cbonomo) Gid: ( 1000/ cbonomo)
Access: 2013-01-10 18:58:53.124142406 +0200
Modify: 2013-01-10 18:58:53.124142406 +0200
Change: 2013-01-10 18:58:53.124142406 +0200

stat enlace-a-test
File: enlace-a-test -> test Size: 4 Blocks: 0 IO Block: 4096 vnculo simblico
Device: 804h/2052d Inode: 77212 Links: 1
Access: (0777/lrwxrwxrwx) Uid: ( 1000/ cbonomo) Gid: ( 1000/ cbonomo)
Access: 2013-01-10 18:59:07.812139890 +0200
Modify: 2013-01-10 18:59:06.460112888 +0200
Change: 2013-01-10 18:59:06.460112888 +0200

Podemos comprobar que cada uno tiene su propio inodo. Esta es la principal
diferencia que haremos con los hard links.

Hard links
Los hard links lo que hacen es asociar dos o mas archivos compartiendo el mismo
inodo. Esto hace que cada hard link sea una copia exacta del resto de los archivos
asociados, en sus datos, permisos, propietarios, etc. Esto implica que cuando
hagamos cambios en uno de los links o en el archivo, estos cambios tambien
aplicaran en el resto de los links.
E-Learning

6 / 10

walter, duran

Los hard links no pueden hacerse contra directorios y tampoco fuera del sistema de
archivos.

Para analizar esto ,crearemos un hard link contra el archivo test:


ln test enlace-duro-test
$ ls -li
73793 -rw-r--r-- 2 cbonomo cbonomo 5 2013-01-10 19:09 enlace-duro-test 73793
-rw-r--r-- 2 cbonomo cbonomo 5 2013-01-10 19:09 test

Como vemos, ambos comparten el numero de inodo. Veamos tambien, que si


realizamos cambios en uno de ellos, se replicar a los links restantes.
chmod 0755 test
$ ls -li
73793 -rwxr-xr-x 2 cbonomo cbonomo 5 2013-01-10 enlace-duro-test
73793 -rwxr-xr-x 2 cbonomo cbonomo 5 2013-01-10 test

E-Learning

7 / 10

walter, duran

Ubicacin de archivos

El Filesystem Hierarchy Standard (FHS)


La estructura del sistema de archivos es simple, pero puede volverse confusa para
la gente que recin inica en Linux.
El estndar de jerarqua del sistema de archivos (o FHS, del ingls Filesystem
Hierarchy Standard) es una norma que define los directorios principales y sus
contenidos en el sistema operativo GNU/Linux y otros sistemas de la familia Unix.
Se dise originalmente en 1994 para estandarizar el sistema de archivos de las
distribuciones de Linux, basndose en la tradicional organizacin de directorios de
los sistemas Unix. En 1995 se ampli el mbito del estndar a cualquier Unix que se
adhiriese voluntariamente.
En el sistema de ficheros de UNIX (y similares), existen varias sub-jerarquas de
directorios que poseen mltiples y diferentes funciones de almacenamiento y
organizacin en todo el sistema.
Estos directorios pueden clasificarse en:

Estticos: Contiene archivos que no cambian sin la intervencin del administrador


(root), sin embargo, pueden ser ledos por cualquier otro usuario. (/bin, /sbin, /opt,
/boot, /usr/bin...)
Dinmicos: Contiene archivos que son cambiantes, y pueden leerse y escribirse
(algunos slo por su respectivo usuario y el root). Contienen configuraciones,
documentos, etc. Para estos directorios, es recomendable una copia de seguridad
con frecuencia, o mejor an, deberan ser montados en una particin aparte en el
mismo disco, como por ejemplo, montar el directorio /home en otra particin del
mismo disco, independiente de la particin principal del sistema; de esta forma,
puede repararse el sistema sin afectar o borrar los documentos de los usuarios.
(/var/mail, /var/spool, /var/run, /var/lock, /home...)
Compartidos: Contiene archivos que se pueden encontrar en un ordenador y
utilizarse en otro, o incluso compartirse entre usuarios.
Restringidos: Contiene ficheros que no se pueden compartir, solo son modificables
por el administrador. (/etc, /boot, /var/run, /var/lock...)

Directorios importantes en Linux y su contenido


El FHS define algunos directorios de forma precisa, mientras que otros tienen
detalles sin definir.

E-Learning

8 / 10

walter, duran

Los directorios utilizados por convencin son:


/ : Todo sistema Linux tiene su base en un unico directorio, denominado / o root.
Todos los demas directorios dependen de este. En Linux no utilizaremos letras para
los discos. En cambio, cada particion o disco removible es montado en un punto de
montaje a partir del root. Algunos directorios criticos, como /etc y /sbin, deben
residir en la particion root, pero los demas pueden estar en otras particiones.
/boot: Este directorio contiene informacin estatica y que no puede compartirse,
relacionada al proceso inicial de booteo del sistema. Los archivos de configuracin
y de inicio de alto nivel residiran en el directorio /etc. Dependiendo del sistema,
pueden existir condiciones particulares para el directorio /boot.
/bin Este directorio contiene ciertos archivos ejecutables criticos, como ls, cp, y
mount, utilizados como comandos. Estos son accesibles a todos los usuarios y
constituyen los comandos mas importantes para los usuarios.Este directorio no
debe ser compartido.
/sbin: Este directorio es similar a /bin, pero contiene programas que son
normalmente ejecutados solo por el usuario root, como fdisk o e2fsck. Es un
directorio esttico y en teoria compartible, pero en la practica esto no es necesario.
/lib: este directorio es similar a /bin y /sbin, pero con la diferencia de que contiene
librerias de programas, que son fragmentos de codigo compartidos por multiples
programas, almacenados en archivos separados. El subdirectorio /lib/modules
contiene modulos del kernel, drivers que pueden ser utilizados cuando se lo
requiera. En teoria, /lib es un directorio esttico y compartido.
/usr: Este directorio almacena la mayoria de los programas del sistema. Este
contenido es compartido y estatico, de forma de poder ser montado en solo-lectura
y compartido con otros sistemas Linux. Es por esta razon por la que los
administradores pueden requerir ubicar /usr en una particion diferente, si bien esto
no es obligatorio. Algunos subdirectorios, como /usr/bin y /usr/lib, son similares a
los ubicados en el root, pero las librerias y programas que contienen no son criticas
para el funcionamiento del sistema.
/usr/local: Este directorio contiene paquetes que el administrador instala
localmente. Es por esto que algunos administradores colocan este directorio en una
particion separada, a fin de proteger los paquetes en caso de tener que reinstalar el
sistema.
/usr/X11R6: Este directorio contiene archivos relacionados con el X Window System,
que es la interfaz grafica de Linux.

E-Learning

9 / 10

walter, duran

/opt: Este directorio contiene paquetes que no vienen normalmente con el sistema
operativo, como juegos o procesadores de texto. Normalmente, estos programas
residen en subdirectorios del mismo.
/home: este directorio contiene la informacion de los usuarios, y es compartido y
dinamico. Normalmente, este directorio reside en su propia particion.
/root: este es el home directory del usuario root, el cual necesita mas proteccion
que los usuarios normales, por lo que no es compartido.
/var: Este directorio contiene logs del sistema, archivos de cola de impresion, mails
y noticias, y ms. Se caracteriza por poseer contenido variable. Si bien algunos
subdirectorios son compartidos, la mayoria no lo son. Muchos administradores
colocan este directorio en su propia particion.
/tmp: Este directorio contiene archivos temporales generados por programas.
Muchas distribuciones incluyen tareas que limpian este directorio diariamente.
/mnt: Linux monta los dispositivos removibles en la estructura de directorios, y esto
se realiza en este directorio. Se crean subdirectorios partiendo de /mnt, como
/mnt/floppy o /mnt/cdrom, para funcionar como puntos de montaje.
/media: Este directorio es opcional, cumpliendo una funcion similar a /mnt, pero
contiene subdirectorios para tipos especificos de dispositivos removibles, como
/media/floppy o /media/cdrom.
/dev: Ya que Linux trata a la mayoria de los dispositivos de hardware como si fueran
archivos, deben tener una ubicacin en el filesystem donde quedar almacenados.
/dev cumple esa funcion, conteniendo un gran numero de archivos que funcionan
como interfaces de hardware. Si el usuario tiene suficientes privilegios, podr
acceder al dispositivo de hardware leyendo su archivo asociado.
/proc: Este directorio se diferencia de todos los demas, ya que en realidad lo que
hace es montar un filesystem virtual que es creado dinamicamente por el sistema
operativo para proveer acceso a ciertos tipos de hardware que no son accesibles a
traves de /dev.
El conocimiento de estos directorios es bsico para administrar apropiadamente un
sistema Linux. Por ejemplo,si instalamos un programa en una ubicacin incorrecta,
eso puede causar problemas mas adelante. Si ponemos un binario en /bin, cuando
deberia ir en /usr/local/bin, ese programa podra ser borrado en un upgrade del
sistema.

E-Learning

10 / 10

You might also like