% Linux Installation and Getting Started    -*- TeX -*-
% concepts.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: concepts.tex,v $
% Revision 0.5.0.1  1996/02/10 23:45:14  rcamus
% Primera beta publica
%
%

\section{Conceptos b\'asicos de UNIX}

\index{UNIX!conceptos b\'asicos|(}
\index{UNIX!multitarea!defined}
\index{multitarea!defined}
\index{multiusuario!defined}
\index{nombre de usuario!defined}
\index{palabra clave!defined}
UNIX es un sistema operativo multitarea y multiusuario. Esto significa que
puede haber m\'as de una persona usando un ordenador a la vez, cada uno de
ellos ejecutando a su vez diferentes aplicaciones. (Esto difiere de 
MS-DOS, donde solo una persona puede usar el sistema en un momento dado). 
Bajo UNIX, para que los usuarios puedan identificarse en el sistema, deben 
{\bf presentarse (log in)}, proceso que consta de dos pasos: Introducir el
{\bf nombre de usuario (login)} (el nombre con que ser\'a identificado por el
sistema), y una {\bf palabra de paso (password)}, la cual es su llave
personal secreta para entrar en la cuenta. Como solo usted conoce su palabra
de paso, nadie m\'as podr\'a presentarse en el sistema con su nombre de usuario.

En los sistemas UNIX tradicionales, el administrador del sistema asignar\'a el
nombre de usuario y una palabra de paso inicial en el momento de crear la
cuenta de usuario. Como usted es el administrador del sistema, debe
configurar su propia cuenta antes de poder presentarse---ver 
Secci\'on~\ref{sec-create-account} m\'as adelante. Para el resto de las
discusiones, usaremos el nombre de usuario ``{\tt larry}''.

\index{hostname!defined}
Adem\'as, cada sistema UNIX tiene un {\bf nombre del sistema (hostname)}
asignado. Este ``hostname'' le da nombre a la m\'aquina, adem\'as de 
car\'acter y encanto. El nombre del sistema es usado para identificar 
m\'aquinas en una red, pero incluso aunque la m\'aquina no est\'e en 
red, deber\'{\i}a tener su nombre. En la Secci\'on~\ref{sec-set-hostname} 
veremos como inicializar el nombre de la m\'aquina. En nuestros ejemplos, 
el nombre del sistema ser\'a ``{\tt mousehouse}''

\subsection{Creaci\'on de una cuenta}\label{sec-create-account}
\index{cuenta de usuario!creaci\'on}
\index{cuenta!creaci\'on}
Antes de poder usar el sistema, deber\'a configurarse una cuenta de usuario.
Esto es necesario, porque no es buena idea usar la cuenta de {\tt root} para
los usos normales. La cuenta de {\tt root} deber\'{\i}a reservarse para el 
uso de comandos privilegiados y para el mantenimiento del sistema, como 
se ver\'a en la Secci\'on~\ref{sec-hats}.

Para crear su propia cuenta, necesita entrar en la cuenta de {\tt root} y
usar las \'ordenes {\tt useradd} o {\tt adduser}. Ver la
Secci\'on~\ref{sec-add-user} para informaci\'on sobre este procedimiento.

\subsection{Presentaci\'on en el sistema (loggin in)}
\index{logging in}
\index{login} En el momento de presentarse en el sistema, ver\'a la siguiente
l\'{\i}nea de comandos en la pantalla:

\begin{tscreen}
mousehouse login:
\end{tscreen}

Ahora, introduzca su nombre de usuario y pulse \key{Return}. Nuestro heroe
{\tt larry}, teclear\'{\i}a lo siguiente:

\begin{tscreen}
mousehouse login: {\em larry} \\
Password: 
\end{tscreen}

Ahora introduzca la palabra de paso. Esta no ser\'a mostrada en la pantalla
conforme se va tecleeando, por lo que debe teclear cuidadosamente. Si 
introduce una palabra de paso incorrecta, se mostrar\'a el siguiente mensaje
\begin{tscreen}
Login incorrect
\end{tscreen}
y deber\'a intentarlo de nuevo.

Una vez que ha introducido correctamente el nombre de usuario y la palabra
de paso, est\'a oficialmente ``presentado'' en el sistema y libre para 
comenzar a trabajar.

\subsection{Consolas virtuales}
\index{consola!virtual}
\index{consola!defined}
La {\bf consola} del sistema es el monitor y teclado conectado directamente
al sistema. (Como UNIX es un sistema operativo multiusuario, puede tener
otros terminales conectados a puertos serie del sistema, pero estos no ser\'an
la consola). Linux, como otras versiones de UNIX, porporciona acceso a 
{\bf consolas virtuales} (o VC's), las cuales le permitir\'an tener m\'as de una
sesi\'on de trabajo activa desde la consola a la vez.

Para demostrar esto, entre en su sistema (como hemos visto antes). Ahora
pulse \key{alt-F2}. Deber\'{\i}a ver la pregunta {\tt login:} de nuevo. 
Est\'a viendo la segunda consola virtual---ha entrado en el sistema por 
la primera. Para volver a la primera VC, pulse \key{alt-F1}. {\em 
Voila!\/} ha vuelto a la primera sesi\'on.

Un sistema Linux reci\'en instalado probablemente le permita acceder a las
primeras cuatro VC's, usando \key{alt-F1} a \key{alt-F4}. Pero es posible
habilitar hasta 12 VC's--- una por cada tecla de funci\'on del teclado. Como
puede ver, el uso de VC's es muy potente--- puede estar trabajando en
diferentes VC's a la vez.

Mientras que el uso de VC's es algo limitado (despu\'es de todo, solo puede
mirar un VC cada vez), esto deber\'{\i}a darle una idea de las capacidades
multiusuario del sistema. Mientras est\'a trabajando en el VC \#1, puede
conmutar al VC \#2 y comenzar a trabajar en otra cosa.


\subsection{Int\'erpretes de comandos y comandos}\label{sec-shells-cmds}

\index{int\'erpretes de comandos!defined}
En la mayor\'{\i}a de las exploraciones en el mundo de UNIX, estar\'a 
hablando con el sistema a trav\'es del uso de un {\bf int\'erprete de 
comandos}. Un int\'erprete de comandos es simplemente un programa que 
toma la entrada del usuario (p.ej. las \'ordenes que teclea) y las traduce 
a instrucciones. Esto puede ser comparado con el {\tt COMMAND.COM} de 
MS-DOS, el cual efectua esencialmente las misma tarea. El int\'erprete de 
comandos es solo uno de los interfaces con UNIX. Hay muchos interfaces 
posibles--- como el sistema X~Windows, el cual le permite ejecutar 
comandos usando el rat\'on y el teclado. 

Tan pronto como entra en el sistema, el sistema arranca un int\'erprete de
comandos y Ud. ya puede teclear \'ordenes al sistema. Veamos un ejemplo 
r\'apido. Aqu\'{\i}, Larry entra en el sistema y es situado en el 
int\'erprete de comandos 
\begin{tscreen}
mousehouse login: {\em larry} \\
Password: {\em larry's password} \\
Welcome to Mousehouse! \\
\\
/home/larry\# 
\end{tscreen}
\index{shells!prompt}
``{\tt /home/larry\#}'' es el ``prompt'' del int\'erprete de comandos, 
indicando que est\'a listo para recibir \'ordenes. 
Tratemos de decirle al sistema que haga algo interesante:

\begin{tscreen}
/home/larry\# {\em make love} \\
make: *** No way to make target `love'. Stop. \\
/home/larry\#
\end{tscreen}

Bien, como resulta que {\tt make} es el nombre de un programa ya existente
en el sistema, el int\'erprete de comandos lo ejecuta.
(Desafortunadamente, el sistema no est\'a siendo muy amigable).

\index{command!defined}
\index{command!argument!defined}
\index{argument!command!defined}
Esto nos lleva a una cuesti\'on importante: ?`Qu\'e son \'ordenes? ?`Qu\'e ocurre
cuando tecleamos ``{\tt make love}''? La primera palabra de la orden, 
``{\tt make}'', es el nombre de la orden a ejecutar. El resto de la orden es
tomado como argumentos de la orden. Ejemplos:
\begin{tscreen}
/home/larry\# {\em cp foo bar} 
\end{tscreen}

Aqu\'{\i}, el nombre de la orden es ``{\tt cp}'', y los argumentos son
``{\tt foo}'' y ``{\tt bar}''.

Cuando teclea una orden, el int\'erprete de comandos hace varias cosas. 
Primero de todo, busca el nombre de la orden y comprueba si es una orden 
interna. (Es decir, una orden que el propio int\'erprete de comandos sabe 
ejecutar por si mismo. Hay bastantes \'ordenes de ese tipo que veremos 
m\'as adelante). El int\'erprete de comandos tambi\'en comprueba si la 
orden es un ``alias'' o nombre sustitutorio de otra orden. Si no se 
cumple ninguno de estos casos, el int\'erprete de comandos busca el 
programa y lo ejecuta pas\'andole los argumentos especificados en la 
l\'{\i}nea de comandos.

En nuestro ejemplo, el int\'erprete de comandos busca el programa llamado 
{\tt make} y lo ejecuta con el argumento {\tt love}. {\tt make} es un
programa usado a menudo para compilar programas grandes, y toma como
argumentos el nombre de un ``objetivo'' a compilar. En el caso de 
``{\tt make love}'', ordenamos a {\tt make} que compile el objetivo 
{\tt love}. Como {\tt make} no puede encontrar un objetivo de ese nombre,
falla enviando un mensaje de error y volviendo al int\'erprete de comandos.

\index{command not found error message@{\tt command not found} error message}
\index{error messages!command not found@error messages!{\tt command not found}}
?`Qu\'e ocurre si tecleamos una orden y el int\'erprete de comandos no puede
encontrar el programa de ese nombre? Bien, prob\'emoslo:
\begin{tscreen}
/home/larry\# {\em eat dirt} \\
eat: command not found \\
/home/larry\#
\end{tscreen}
Bastante simple, si no se puede encontrar el programa con el nombre dado en
la orden (aqu\'{\i} ``{\tt eat}''), se muestra un mensaje de error que 
deber\'{\i}a de ser autoexplicativo. A menudo ver\'a este mensaje de 
error si se equivoca al teclear una orden (por ejemplo, si huviese tecleado 
``{\tt mkae love}'' en lugar de ``{\tt make love}''.

\subsection{Salida del sistema}
\index{logging out!con la orden exit@con la orden {\tt exit}}
\index{exit@{\tt exit}}

Antes de ahondar m\'as, deber\'{\i}amos ver como salir del sistema. Desde 
la l\'{\i}nea de \'ordenes usaremos la orden
\begin{tscreen}
/home/larry\# {\em exit}
\end{tscreen}

para salir. Hay otras formas, pero esta es la m\'as f\'acil.

\subsection{Cambiando la palabra de paso}
\index{palabra de paso!cambiandola con passwd@cambiandola con {\tt passwd}}
\index{passwd@{\tt passwd}}

Tambi\'en debe asegurarse de la forma de cambiar su palabra de paso. La orden
{\tt passwd} le pedir\'a su palabra de paso vieja y la nueva. Volver\'a a pedir
una segunda vez la nueva para validarla. Tenga cuidado de no olvidar su
palabra de paso--- si eso ocurre, deber\'a pedirle al administrador del
sistema que la modifique por usted. (Si es el administrador del sistema, 
vea la Secci\'on~\ref{sec-manage-users}.)


\subsection{Ficheros y directorios}
\index{ficheros!defined}

Bajo la mayor\'{\i}a de los sistemas operativos (UNIX incluido), existe el
concepto de {\bf fichero}, el cual es un conjunto de informaci\'on al que se
le ha asignado un nombre (llamado {\bf nombre del fichero}). Ejemplos de
fichero son un mensaje de correo, o un programa que puede ser ejecutado.
Esencialmente, cualquier cosa salvada en el disco es guardada en un fichero
individual.

\index{nombre de fichero!defined}
Los ficheros son identificados por sus nombres. Por ejemplo, el fichero que
contiene su historial podr\'{\i}a ser salvado con el nombre {\tt history-paper}.
Estos nombres usualmente identifican el fichero y su contenido de alguna
forma significativa para usted. No hay un formato est\'andar para los
nombres de los ficheros como lo hay en MS-DOS y en otros sistemas
operativos; en general estos pueden contener cualquier car\'acter (excepto
{\tt /} --- ver la discusi\'on sobre ``pathnames'' (rutas de ficheros) m\'as
adelante), y est\'an limitados a 256 caracteres de longitud.

\index{directorio!defined}
Con el concepto de fichero aparece el concepto de directorio. Un 
{\bf directorio} es simplemente una colecci\'on de ficheros. Puede ser
considerado como una ``carpeta'' que contiene muchos ficheros diferentes. Los
directorios tambi\'en tienen nombre con el que los podemos identificar.
Adem\'as, los directorios mantienen una estructura de \'arbol; es decir,
directorios pueden contener otros directorios.

\index{nombre con camino (pathname)!defined}
Un fichero puede ser referenciado por su {\bf nombre con camino}, el cual
est\'a constituido por su nombre, antecedido por el nombre del directorio que
lo contiene. Por ejemplo, supongamos que Larry tiene un directorio de nombre
{\tt papers} que contiene tres ficheros: {\tt history-final}, 
{\tt english-lit} y {\tt masters-thesis}. (Cada uno de los tres ficheros
contiene informaci\'on sobre tres de los proyectos en los que Larry est\'a
trabajando). Para referirse al fichero {\tt english-lit}, Larry puede
especificar su camino:
\begin{tscreen}
papers/english-lit
\end{tscreen}

\index{/@{\tt /}!en caminos}
Como puede ver, el directorio y el nombre del fichero van separados por un
car\'acter {\tt /}. Por esta raz\'on, los nombres de fichero no pueden 
contener este car'acter. Los usuarios de MS-DOS encontrar\'an esta 
convenci\'on familiar, aunque en el mundo MS-DOS se usa el car\'acter 
{\verb+\+). 

\index{directorio!anidamiento}
Como hemos mencionado, los directorios pueden anidarse uno dentro de otro.
Por ejemplo, supongamos que Larry tiene otro directorio dentro de 
{\tt papers} llamado {\tt cheat-sheet}. El camino de este fichero ser\'{\i}a
\begin{tscreen}
papers/notes/cheat-sheet
\end{tscreen}

\index{directorio!padre}
\index{directorio padre}
Por lo tanto, el camino realmente es la ``ruta'' que se debe tomar para
localizar a un fichero. El directorio sobre un subdirectorio dado es
conocido como el {\bf directorio padre}. Aqu\'{\i}, el directorio {\tt 
papers} es el padre del directorio {\tt notes}.

\subsection{El \'arbol de directorios}
\index{directorio!\'arbol}
\index{directorio!estructura}
\index{directorio!ra\'{\i}z!defined}
\index{directorio raiz!defined}
\index{/@{\tt /}!nombre del directorio ra\'{\i}z}
\index{UNIX!estructura de directorios}

La mayor\'{\i}a de los sistemas UNIX tienen una distribuci\'on de ficheros
est\'andar, de forma que recursos y ficheros puedan ser f\'acilmente
localizados. Esta distribuci\'on forma el \'arbol de directorios, el cual
comienza en el directorio ``{\tt /}'', tambi\'en conocido como 
``directorio ra\'{\i}z''. Directamente por debajo de {\tt /} hay algunos
subdirectorios importantes: {\tt /bin}, {\tt /etc}, {\tt /dev} y {\tt /usr},
entre otros. Estos a su vez contienen otros directorios con ficheros de
configuraci\'on del sistema, programas, etc.

\index{directorio!home!defined}
\index{directorio home!defined}
En particular, cada usuario tiene un {\bf directorio ``home''}. Este es el
directorio en el que el usuario guardar\'a sus ficheros. En los ejemplos
anteriores, todos los ficheros de Larry (como {\tt cheat-sheer} y 
{\tt history-final}) estaban contenidos en el directorio home de Larry.
Usualmente, los directorios home de los usuarios cuelgan de {\tt /home} y
son nombrados con el nombre del usuario al que pertenecen. Por lo tanto, el
directorio ``home'' de Larry es {\tt /home/larry}.

\iflotex  % No dirtree if ASCII.
\else {
En la figura~\ref{dirtree} se muestra un \'arbol de directorio de ejemplo.
Este deber\'{\i}a darle una idea de como est\'a organizado en su sistema 
el \'arbol de directorios.

\unitlength=1.0pt
\begin{figure}[tb]
\begin{picture}(148.00,365.00)(0.00,450.00)
\put(9.00,805.00){\line(1,0){29.00}} % / -> bin
\put(26.00,805.00){\line(0,-1){112.00}} % /'s children
\put(26.00,791.00){\line(1,0){12.00}} % dev
\put(26.00,777.00){\line(1,0){12.00}} % etc
\put(26.00,763.00){\line(1,0){12.00}} % home
\put(64.50,763.00){\line(1,0){29.00}} % home -> larry
\put(81.50,763.00){\line(0,-1){14.00}} % home's children
\put(81.50,749.00){\line(1,0){12.00}} % sam
\put(26.00,735.00){\line(1,0){12.00}} % lib
\put(26.00,721.00){\line(1,0){12.00}} % proc
\put(26.00,707.00){\line(1,0){12.00}} % tmp
\put(26.00,693.00){\line(1,0){12.00}} % usr
\put(55.50,693.00){\line(1,0){29.00}} % usr -> X386
\put(72.50,693.00){\line(0,-1){238.00}} % usr's children
\put(72.50,676.00){\line(1,0){12.00}} % bin
\put(72.50,659.00){\line(1,0){12.00}} % emacs
\put(72.50,642.00){\line(1,0){12.00}} % etc
\put(72.50,625.00){\line(1,0){12.00}} % g++-include
\put(72.50,608.00){\line(1,0){12.00}} % include
\put(72.50,591.00){\line(1,0){12.00}} % lib
\put(72.50,574.00){\line(1,0){12.00}} % local
\put(107.00,574.00){\line(1,0){29.00}} % local -> bin
\put(124.00,574.00){\line(0,-1){51.00}} % local's children
\put(124.00,557.00){\line(1,0){12.00}} % emacs
\put(124.00,540.00){\line(1,0){12.00}} % etc
\put(124.00,523.00){\line(1,0){12.00}} % lib
\put(72.50,506.00){\line(1,0){12.00}} % man
\put(72.50,489.00){\line(1,0){12.00}} % spool
\put(72.50,472.00){\line(1,0){12.00}} % src
\put(100.50,472.00){\line(1,0){29.00}} % src -> linux
\put(72.50,455.00){\line(1,0){12.00}} % tmp
\put(8.50,805.00){\makebox(0,0)[rc]{/}}
\put(39.50,805.00){\makebox(0,0)[lc]{bin}}
\put(39.50,791.00){\makebox(0,0)[lc]{dev}}
\put(39.50,777.00){\makebox(0,0)[lc]{etc}}
\put(39.50,763.00){\makebox(0,0)[lc]{home}}
\put(95.00,763.00){\makebox(0,0)[lc]{larry}}
\put(95.00,749.00){\makebox(0,0)[lc]{sam}}
\put(39.50,735.00){\makebox(0,0)[lc]{lib}}
\put(39.50,721.00){\makebox(0,0)[lc]{proc}}
\put(39.50,707.00){\makebox(0,0)[lc]{tmp}}
\put(39.50,693.00){\makebox(0,0)[lc]{usr}}      % I'm expecting you to
\put(86.00,693.00){\makebox(0,0)[lc]{X386}}	% proof-read this!
\put(86.00,676.00){\makebox(0,0)[lc]{bin}}      
\put(86.00,659.00){\makebox(0,0)[lc]{emacs}}    % I am, I am, don't worry! :-)
\put(86.00,642.00){\makebox(0,0)[lc]{etc}}
\put(86.00,625.00){\makebox(0,0)[lc]{g++-include}}
\put(86.00,608.00){\makebox(0,0)[lc]{include}}
\put(86.00,591.00){\makebox(0,0)[lc]{lib}}
\put(86.00,574.00){\makebox(0,0)[lc]{local}}
\put(137.50,574.00){\makebox(0,0)[lc]{bin}}      % Come on, all of it!
\put(137.50,557.00){\makebox(0,0)[lc]{emacs}}
\put(137.50,540.00){\makebox(0,0)[lc]{etc}}
\put(137.50,523.00){\makebox(0,0)[lc]{lib}}
\put(86.00,506.00){\makebox(0,0)[lc]{man}}
\put(86.00,489.00){\makebox(0,0)[lc]{spool}}
\put(86.00,472.00){\makebox(0,0)[lc]{src}}
\put(130.50,472.00){\makebox(0,0)[lc]{linux}}
\put(86.00,455.00){\makebox(0,0)[lc]{tmp}}
\end{picture}
\caption{T\'{\i}pico \'arbol de directorios Unix (resumido).}
\label{dirtree}
\end{figure} } \fi % Kill dirtree if ASCII.

\subsection{Directorio de trabajo actual}
\index{directorio!trabajo actual!defined}
\index{directorio!trabajo!defined}
\index{directorio de trabajo actual!defined}
\index{directorio de trabajo!defined}
En cualquier momento, las \'ordenes que teclee al int\'erprete de 
comandos son dadas en t\'erminos de su {\bf directorio de trabajo 
actual}. Puede pensar en su directorio actual de trabajo como en el 
directorio en el que actualmente est\'a ``situado''. Cuando entra en el 
sistema, su directorio de trabajo se inicializa a su directorio 
home---{\tt /home/larry} en nuestro caso. En cualquier momento que 
referencie a un fichero, puede hacerlo en relaci\'on a su directorio de 
trabajo actual, en lugar de especificar el camino completo del fichero.

Vemos un ejemplo. Larry tiene el directorio {\tt papers}, y {\tt papers}
contiene el fichero {\tt history-final}. Si Larry quiere echar un vistazo a
ese fichero, puede usar la orden
\begin{tscreen}
/home/larry\# {\em more /home/larry/papers/history-final}
\end{tscreen}
La orden {\tt more} simplemente muestra el fichero, pantalla a pantalla.
Pero, como el directorio de trabajo actual de Larry es {\tt /home/larry},
podr\'{\i}a haberse referido al fichero de forma {\em relativa\/} a su 
directorio de trabajo actual. La orden ser\'{\i}a 
\begin{tscreen}
/home/larry\# {\em more papers/history-final}
\end{tscreen}
\index{camino!relativo}

Por lo tanto, si comienza el nombre de un fichero (como {\tt papers/final})
con un car\'acter distinto a ``{\tt /}'', el sistema supone que se est\'a
refiriendo al fichero con su posici\'on relativa a su directorio de trabajo.
Esto es conocido como {\bf camino relativo}.

\index{camino!completo}
\index{camino!absoluto}
Por otra parte, si comienza el nombre del fichero con ``{\tt /}'', el
sistema interpreta esto como un camino completo---es decir, el camino
al fichero completo desde el directorio ra\'{\i}z, {\tt /}.
Esto es conocido como {\bf camino absoluto}.

\subsection{Refiriendose al directorio home}
\index{directorio!home!\~ para referirse a@{\tt \~{}} para referirse a}
\index{directorio home!\~ para referirse a@{\tt \~{}} para referirse a}
\index{\~@{\tt \~{}}!para referirse al directorio home}

Bajo {\tt tcsh} y {\tt bash},\footnote{{\tt tcsh} y {\tt bash} son dos {\em
int\'erpretes de comandos} que corren bajo Linux. Un int\'erprete de 
comandos es el programa que lee las \'ordenes del usuario y las ejecuta; 
la mayor\'{\i}a de los sistemas Linux habilitan {\tt tcsh} o {\tt bash} 
para las nuevas cuentas de usuario.} el directorio ``home'' puede ser 
referenciado usando el car\'acter de la 
tilde ( {\tt \~{}} ). Por ejemplo, la orden
\begin{tscreen}
/home/larry\# {\em more \~{}/papers/history-final}
\end{tscreen}
es equivalente a
\begin{tscreen}
/home/larry\# {\em more /home/larry/papers/history-final}
\end{tscreen}

El car\'acter ``{\tt \~{}}'' es simplemente sustituido por el int\'erprete de
comandos, con el nombre del directorio home.

Adem\'as, tambi\'en puede especificar otros directorios home de usuarios 
con la tilde. El camino ``{\tt \~{}karl/letters}'' es traducido por el 
int\'erprete de \'ordenes a ``{\tt /home/karl/letters}'' (si {\tt 
/home/karl} es el directorio home de karl). El uso de la tilde es 
simplemente un atajo; no existe ning\'un directorio llamado ''{\tt 
\~{}}''---es simplemente una ayuda sint\'actica proporcionada por el 
int\'erprete de comandos.

\index{UNIX!conceptos b\'asicos|)}
