% Linux Installation and Getting Started    -*- TeX -*-
% filesystem.tex
% Copyright (c) 1992, 1993 by Matt Welsh, Larry Greenfield and Karl Fogel
%
% This file is freely redistributable, but you must preserve this copyright 
% notice on all copies, and it must be distributed only as part of "Linux 
% Installation and Getting Started". This file's use is covered by
% the copyright for the entire document, in the file "copyright.tex".
%
% Traducci\'on al espa\~nol por Eduardo Lluna Gil <elluna@aii.upv.es>
% $Log: filesystem.tex,v $
% Revision 0.5.0.1  1996/02/10 23:45:14  rcamus
% Primera beta publica
%
%

\section{Explorando el Sistema de Ficheros}\label{sec-filesystem-tour}

\index{sistema de ficheros!explorando|(}

El {\bf sistema de ficheros} es la colecci\'on de ficheros y la 
jerarqu\'{\i}a de directorios de su sistema. Le prometimos acompa\~narle 
por el sistema de ficheros, y ha llegado el momento.

% No ref to dirtree if ASCII
\iftex {
Tiene el nivel y conocimientos para entender de lo que estamos hablando,
adem\'as de una gu\'{\i}a de carreteras. (Figura~\ref{dirtree} en la
p\'agina~\pageref{dirtree}).
} \fi

Primero cambie al directorio ra\'{\i}z ({\tt cd /}) y ejecute {\tt ls -F}.
Probablemente ver\'a estos directorios\footnote{Puede ver otros o incluso no
ver todos. No se preocupe. Cada versi\'on de Linux difiere en algunos
aspectos.}: {\tt bin}, {\tt dev}, {\tt etc}, {\tt home}, {\tt install}, 
{\tt lib}, {\tt mnt}, {\tt proc}, {\tt root}, {\tt tmp}, {\tt user}, 
{\tt usr}, y {\tt var}.

Echemos un vistazo a cada uno de estos directorios.

\begin{dispitems}
\index{directorio!bin@{\tt /bin}}
\index{bin@{\tt /bin}}
\ditem{{\tt /bin}}
{\tt /bin} es la abreviaci\'on de ``binaries'', o ejecutables. Es donde
residen la mayor\'{\i}a de los programas esenciales del sistema. Use la orden
``{\tt ls -F /bin}'' para listar los ficheros. Podr\'a ver algunas 
\'ordenes que reconocer\'a, como {\tt cp}, {\tt ls} y {\tt mv}. Estos son 
los programas para estas \'ordenes. Cuando usa la orden {\tt cp} est\'a 
ejecutando el programa {\tt /bin/cp}.

Usando {\tt ls -F} ver\'a que la mayor\'{\i}a (si no todos) los ficheros de 
{\tt /bin} tienen un asterisco (``{\tt *}'') a\~nadido al final de sus
nombres. Esto indica que son ficheros ejecutables, como describe la
Secci\'on~\ref{sec-ls}.

\index{directorio!dev@{\tt /dev}}
\index{dev@{\tt /dev}}
\ditem{{\tt /dev}}
El sigiente es {\tt /dev}. Ech\'emosle un vistazo de nuevo con {\tt ls -F}.

\index{controladores de dispositivo}
\index{ficheros!dispositivos}
\index{dispositivos!acceso}
Los ``ficheros'' en {\tt /dev} son conocidos como {\bf controladores de 
dispositivo (device drivers)}---son usados para acceder a los 
dispositivos del sistema y recursos, como discos duros, modems, memoria, 
etc. Por ejemplo, de la misma forma que puede leer datos de un fichero, 
puede leerla desde la entrada del rat\'on leyendo {\tt /dev/mouse}.

\index{dispositivos!fd@{\tt fd}}
\index{dispositivos!disqueteras}
\index{disqueteras!nombres de dispositivo para}
Los ficheros que comienzan su nombre con {\tt fd} son controladores de
disqueteras. {\tt fd0} es la primera disquetera, {\tt fd1} la segunda.
Ahora, alguien astuto se dar\'a cuenta de que hay m\'as controladores de
dispositivo para disqueteras de los que hemos mencionado. Estos representan
tipos espec\'{\i}ficos de discos. Por ejemplo, {\tt fd1H1440} acceder\'a a discos
de 3.5" de alta densidad en la disquetera 1.

Aqu\'{\i} tenemos una lista de algunos de los controladores de dispositivo 
m\'as usados. N\'otese que incluso aunque puede que no tenga alguno de los
dispositivos listados, tendr\'a entradas en {\tt dev} de cualquier forma.

\begin{itemize}
\index{dispositivos!consola}
\index{dispositivos!/dev/console@{\tt /dev/console}}
\index{consola!nombre de dispositivo para}
\index{/dev/console@{\tt /dev/console}}
\item {\tt /dev/console} hace referencia a la consola del sistema--- es
decir, al monitor conectado directamente a su sistema.

\index{dispositivos!puertos serie}
\index{dispositivos!/dev/ttyS@{\tt /dev/ttyS}}
\index{dispositivos!/dev/cua@{\tt /dev/cua}}
\index{/dev/ttyS@{\tt /dev/ttyS}}
\index{/dev/cua@{\tt /dev/cua}}
\index{puertos serie!nombre de dispositivo para}
\item Los dispositivos {\tt /dev/ttyS} y {\tt /dev/cua} son usados para
acceder a los puertos serie. Por ejemplo, {\tt /dev/ttyS0} hace 
referencia a ``{\tt COM1}'' bajo MS-DOS. Los dispositivos {\tt /dev/cua} 
son ``callout'', los cuales son usados en conjunci\'on con un modem.

\index{dispositivos!discos duros}
\index{dispositivos!/dev/hd@{\tt /dev/hd}}
\index{/dev/hd@{\tt /dev/hd}}
\index{discos duros!nombre de dispositivo para}
\item Los nombres de dispositivo que comienzan por {\tt hd} acceden a discos
duros. {\tt /dev/hda} hace referencia a la {\em totalidad\/} del primer
disco duro, mientras que {\tt /dev/hda1} hace referencia a la primera 
{\em partici\'on\/} en {\tt /dev/hda}.

\index{dispositivos!SCSI}
\index{dispositivos SCSI!nombres para}
\index{dispositivos!/dev/sd@{\tt /dev/sd}}
\index{dispositivos!/dev/st@{\tt /dev/st}}
\index{dispositivos!/dev/sr@{\tt /dev/sr}}
\index{dev/sd@{\tt /dev/sd}}
\index{dev/st@{\tt /dev/st}}
\index{dev/sr@{\tt /dev/sr}}
\item Los nombres de dispositivo que comienzan con {\tt sd} son dispositivos
SCSI. Si tiene un disco duro SCSI, en lugar de acceder a \'el mediante 
{\tt /dev/hda}, deber\'a acceder a {\tt /dev/sda}. Las cintas SCSI son
accedidas v\'{\i}a dispositivos {\tt st} y los CD-ROM SCSI v\'{\i}a {\tt sr}.

\index{dispositivos!puertos paralelo}
\index{dispositivos!/dev/lp@{\tt /dev/lp}}
\index{/dev/lp@{\tt /dev/lp}}
\index{puertos paralelos!nombre de dispositivo para}
\item Los nombres que comienzan por {\tt lp} acceden a los puertos paralelo.
{\tt /dev/lp0} hace referencia a ``{\tt LPT1}'' en el mundo MS-DOS.

\index{dispositivos!null}
\index{dispositivos!/dev/null@{\tt /dev/null}}
\index{/dev/null@{\tt /dev/null}}
\index{fichero null}
\item {\tt /dev/null} es usado como ``agujero negro''--- cualquier dato
enviado a este dispositivo desaparece. ?`Para qu\'e puede ser \'util 
esto?. Bien, si desea suprimir la salida por pantalla de una orden, 
podr\'{\i}a enviar la salida a {\tt /dev/null}. Hablaremos m\'as sobre esto 
despu\'es.

\index{dispositivos!consolas virtuales}
\index{dispositivos!/dev/tty@{\tt /dev/tty}}
\index{/dev/tty@{\tt /dev/tty}}
\index{consolas virtuales}
\item Los nombres que comienzan por {\tt /dev/tty} hacen referencia a
``consolas virtuales'' de su sistema (accesibles mediante las teclas
\key{alt-F1}, \key{alt-F2}, etc). {\tt /dev/tty1} hace referencia a la
primera VC, {\tt /dev/tty2} a la segunda, etc.

\index{dispositivos!pseudo-terminales}
\index{dispositivos!/dev/pty@{\tt /dev/pty}}
\index{pseudo-terminales}
\index{/dev/pty@{\tt /dev/pty}}
\item Los nombres de dispositivo que comienzan con {\tt /dev/pty} son
``pseudo-terminales''. Estos son usados para proporcionar un ``terminal'' a
sesiones remotas. Por ejemplo, si su m\'aquina est\'a en una red, {\tt telnet}
de entrada usar\'a uno de los dispositivos {\tt /dev/pty}.
\end{itemize}

\index{directorio!/etc@{\tt /etc}}
\index{/etc@{\tt /etc}}
\ditem{{\tt /etc}}
{\tt /etc} contiene una serie de ficheros de configuraci\'on del sistema.
Estos incluyen {\tt /etc/passwd} (la base de datos de usuarios), {\tt
/etc/rc} (guiones de inicializaci\'on del sistema), etc.

\index{directorio!/sbin@{\tt /sbin}}
\index{/sbin@{\tt /sbin}}
\ditem{{\tt /sbin}}
{\tt sbin} se usa para almacenar programas esenciales del sistema, que usar\'a
el administrador del sistema.

\index{directorio!/home@{\tt /home}}
\index{/home@{\tt /home}}
\ditem{{\tt /home}}
{\tt /home} contiene los directorios ``home'' de los usuarios. Por ejemplo,
{\tt /home/larry} es el directorio del usuario ``{\tt larry}''. En un
sistema reci\'en instalado, no habr\'a ning\'un usuario en este directorio.

\index{directorio!/lib@{\tt /lib}}
\index{/lib@{\tt /lib}}
\ditem{{\tt /lib}}
{\tt /lib} contiene las {\bf im\'agenes de las librer\'{\i}as compartidas}. 
Estos ficheros contienen c\'odigo que compartir\'an muchos programas. En 
lugar de que cada programa contenga una copia propia de las rutinas 
compartidas, estas son guardadas en un lugar com\'un, en {\tt /lib}. Esto 
hace que los programas ejecutables sean menores y reduce el espacio usado 
en disco.

\index{directorio!/proc@{\tt /proc}}
\index{/proc@{\tt /proc}}
\ditem{{\tt /proc}}
{\tt /proc} es un ``sistema de ficheros virtual''. Los ficheros que contiene
realmente residen en memoria, no en un disco. Hacen referencia a varios 
{\bf procesos} que corren en el sistema, y le permiten obtener informaci\'on
acerca de que programas y procesos est\'an corriendo en un momento dado.
Entraremos en m\'as detalles en la Secci\'on~\ref{sec-process}.

\index{directorio!/tmp@{\tt /tmp}}
\index{/tmp@{\tt /tmp}}
\ditem{{\tt /tmp}}
Muchos programas tienen la necesidad de generar cierta informaci\'on temporal y
guardarla en un fichero temporal. El lugar habitual para esos ficheros es en
{\tt /tmp}.

\index{directorio!/usr@{\tt /usr}}
\index{/usr@{\tt /usr}}
\ditem{{\tt /usr}}
{\tt /usr} es un directorio muy importante. Contienen una serie de
subdirectorios que contienen a su vez algunos de los m\'as importantes y
\'utiles programas y ficheros de configuraci\'on usados en el sistema.

Los directorios descritos arriba son esenciales para que el sistema est\'e
operativo, pero la mayor\'{\i}a de las cosas que se encuentran en {\tt 
/usr} son opcionales para el sistema. De cualquier forma, son estas cosas 
opcionales las que hacen que el sistema sea \'util e interesante. Sin 
{\tt /usr}, tendr\'{\i}a un sistema aburrido, solo con programas como 
{\tt cp} y {\tt ls}. {\tt usr} contiene la mayor\'{\i}a de los paquetes 
grandes de programas y sus ficheros de configuraci\'on. 

\index{directorio!/usr/X386@{\tt /usr/X386}}
\index{/usr/X386@{\tt /usr/X386}}
\ditem{{\tt /usr/X386}}
{\tt /usr/X386} contiene el sistema X Window si usted lo instala. El sistema
X Window es un entorno gr\'afico grande y potente el cual proporciona un gran
n\'umero de utilidades y programas gr\'aficos, mostrados en ``ventanas'' 
en su pantalla. Si est\'a familiarizado con los entornos Microsoft Windows o
Macintosh, X~Window le ser\'a muy familiar. El directorio {\tt /usr/X386}
contiene todos los ejecutables de X~Window, ficheros de configuraci\'on y de
soporte. Esto ser\'a cubierto con m\'as detalle en la
Secci\'on~\ref{sec-xwindows}.

\index{directorio!/usr/bin@{\tt /usr/bin}}
\ditem{{\tt /usr/bin}}
{\tt /usr/bin} es el almac\'en real de programas del sistema UNIX. Contiene la
mayor\'{\i}a de los programas que no se encuentran en otras partes como 
{\tt /bin}.

\index{directorio!/usr/etc@{\tt /usr/etc}}
\index{/usr/etc@{\tt /usr/etc}}
\ditem{{\tt /usr/etc}}
Como {\tt /etc} contiene diferentes ficheros de configuraci\'on y programas
del sistema, {\tt /usr/etc} contiene incluso m\'as que el anterior. En
general, los ficheros que se encuentran en {\tt /usr/etc/} no son esenciales
para el sistema, a diferencia de los que se encuentran en {\tt /etc}, que si
lo son.

\index{directorio!/usr/include@{\tt /usr/include}}
\index{/usr/include@{\tt /usr/include}}
\ditem{{\tt /usr/include}}
{\tt /usr/include} contiene los {\bf ficheros de cabecera} para el
compilador de C. Estos ficheros (la mayor\'{\i}a de los cuales terminan en 
{\tt .h}, de ``header'') declaran estructuras de datos, subrutinas y
constantes usados en la escritura de programas en C. Los ficheros que se
encuentran en {\tt /usr/include/sys} son generalmente usados en la
programaci\'on de UNIX a nivel de sistema. Si est\'a familiarizado con el
lenguaje de programaci\'on C, aqu\'{\i} encontrar\'a los ficheros de cabecera como
{\tt stdio.h}, el cual declara funciones como {\tt printf()}.

\index{directorio!/usr/g++-include@{\tt /urs/g++-include}}
\index{/usr/g++-include@{\tt /urs/g++-include}}
\ditem{{\tt /usr/g++-include}}
{\tt /usr/g++-include} contiene ficheros de cabecera para el compilador de
C++ (muy parecido a {\tt /usr/include}).

\index{directorio!/usr/lib@{\tt /usr/lib}}
\index{/usr/lib@{\tt /usr/lib}}
\ditem{{\tt /usr/lib}}
{\tt /usr/lib} contiene las librer\'{\i}as equivalentes ``stub'' y 
``static'' a los ficheros encontrados en {\tt /lib}. Al compilar un 
programa, este es ``enlazado'' con las librer\'{\i}as que se encuentran en 
{\tt /usr/lib}, las cuales dirigen al programa a buscar en {\tt /lib} 
cuando necesita el c\'odigo de la librer\'{\i}a. Adem\'as, varios programas 
guardan ficheros de configuraci\'on en {\tt /usr/lib}.

\index{directorio!/usr/local@{\tt /usr/local}}
\index{/usr/local@{\tt /usr/local}}
\ditem{{\tt /usr/local}}
{\tt /usr/local} es muy parecido a {\tt /usr}---contiene programas y
ficheros no esenciales para el sistema, pero que hacen el sistema m\'as
divertido y excitante. En general, los programas que se encuentran en 
{\tt /usr/local} son espec\'{\i}ficos de su sistema---esto es, el directorio 
{\tt /usr/local} difiere bastante entre sistemas UNIX.

Aqu\'{\i} encontrar\'a programas grandes como \TeX\ (sistema de formateo de
documentos) y Emacs (gran y potente editor), si los instala.

\index{directorio!/usr/man@{\tt /usr/man}}
\index{/usr/man@{\tt /usr/man}}
\ditem{{\tt /usr/man}}
Este directorio contiene las p\'aginas de manual. Hay dos subdirectorios para
cada p\'agina ``secci\'on'' de las p\'aginas (use la orden {\tt man man} 
para m\'as detalles). Por ejemplo, {\tt /usr/man/man1} contiene los 
fuentes (es decir, los originales por formatear) de las p\'aginas de 
manual de la secci\'on 1, y {\tt /usr/man/cat1} las p\'aginas ya 
formateadas de la secci\'on 1.

\index{directorio!/usr/src@{\tt /usr/src}}
\index{/usr/src@{\tt /usr/src}}
\ditem{{\tt /usr/src}}
{\tt /usr/src} contiene el c\'odigo fuente (programas por compilar) de varios
programas de su sistema. El m\'as importante es {\tt /usr/src/linux}, el cual
contiene el c\'odigo fuente del N\'ucleo de Linux.

\index{directorio!/var@{\tt /var}}
\index{/var@{\tt /var}}
\ditem{{\tt /var}}
{\tt /var} contiene directorios que a menudo cambian su tama\~no o tienden a
crecer. Muchos de estos directorios solian residir en {\tt /usr}, pero desde
que estamos tratando de dejarlo relativamente inalterable, los directorios
que cambian a menudo han sido llevados a {\tt /var}.
Algunos de estos directorios son:

\index{directorio!/var/adm@{\tt /var/adm}}
\index{/var/adm@{\tt /var/adm}}
\ditem{{\tt /var/adm}}
{\tt /var/adm} contiene varios ficheros de inter\'es para el 
administrador del sistema, especificamente hist\'oricos del sistema, los 
cuales recogen errores o problemas con el sistema. Otros ficheros guardan 
las sesiones de presentaci\'on en el sistema, as\'{\i} como los intentos 
fallidos. Esto ser\'a cubierto en el Cap\'{\i}tulo~\ref{chap-sysadm}.

\index{directorio!/var/spool@{\tt /var spool}}
\index{/var/spool@{\tt /var spool}}
\ditem{{\tt /var/spool}}
{\tt /var/spool} contiene ficheros que van a ser pasados a otro programa. Por
ejemplo, si su m\'aquina est\'a conectada a una red, el correo de llegada ser\'a
almacenado en {\tt /var/spool/mail} hasta que lo lea o lo borre. 
Art\'{\i}culos nuevos de las ``news'' tanto salientes como entrantes pueden 
encontrarse en {\tt /var/spool/news}, etc. 

\end{dispitems}
\index{sistema de ficheros!explorando|)}
