Shell, Primeros Pasos Estructura de directorios (Sería útil imprimir estas hojas para tenerlas a mano) Si vienes de un ambiente Windows o Macintosh, te enfrentarás a conceptos potencialmente desconocidos que son esenciales para el manejo efectivo del sistema. Veamos algo sumamente importante: la estructura de directorios de Linux. Si vienes de un ambiente, digamos, Windows, estás acostumbrado a ciertos tipos de archivos y ciertas ubicaciones; Linux no es diferente en este aspecto, excepto que las ubicaciones son diferentes. La estructura de directorios de Linux es mucho mejor que la de otros sistemas operativos por la jerarquía lógica de dicha estructura. Lo primero que debemos notar en una ruta de directorios, es que los nombres de directorios y archivos van separados con diagonales ("/") en lugar de diagonales invertidas ("\"). En Linux, los directorios están dispuestos en una estructura tipo árbol, comenzando con lo que se conoce como "root" (raíz), el directorio de mayor jerarquía. El directorio root se representa con una sola diagonal; bajo root están los directorios principales del sistema. Para ver el contenido del directorio root, podemos usar el comando "ls" (listar), especificando el directorio root: [usuario@maquina usuario]$ ls / El resultado de ese comando sería: bin boot dev etc home lib mnt proc root sbin tmp usr var Ahora, veamos la importancia de cada uno de ellos: "/bin" - Contiene programas y comandos de sistema esenciales (en lenguaje máquina o binario, eso significa "bin"), como "ls", "cp" (usado para copiar archivos), "mv" (usado para mover archivos a un lugar diferente) y otros. También contiene "bash", el shell que seguramente usas. El shell es un programa que te permite enviar comandos al sistema operativo y recibir su salida. Cuando estás trabajando en una ventana terminal, estás usando el shell. "/boot" - Contiene los archivos que son necesarios para arrancar el sistema. Durante el proceso de arranque del sistema se realizan varias tareas, como verificar la integridad de los discos, detectar dispositivos y dejarlos listos para ser usados por el sistema, iniciar programas esenciales para ayudar a mantener el sistema corriendo. Además, el kérnel (las "entrañas" del sistema) puede estar localizado en "/boot". "/dev" - Contiene archivos que representan dispositivos del sistema, como son los discos, puertos seriales, ratón, módem, etc. Por ejemplo, "/dev/hda" representa el primer dispositivo IDE de la máquina (normalmente el disco duro). Si esto te confunde, no te preocupes, lo más importante es entender lo que hay dentro de este directorio. "/etc" - Contiene archivos de configuración esenciales para todo el sistema. Si estás administrando un sistema, con mucha frecuencia estarás editando archivos en este directorio. Estos archivos controlan muchos de los servicios del sistema. Algunos ejemplos de estos archivos son "/etc/resolv.conf" (contiene información acerca de los servidores de nombre) y "/etc/fstab" (una lista de dispositivos o directorios que contienen información y necesitan estar accesibles para el sistema, tales como el disco duro o un CD-ROM). "/home" - Contiene los directorios base para todos los usuarios regulares. Un directorio base (o home) es donde generalmente un usuario guarda su información personal. Por ejemplo, si tu nombre de usuario (login) es "gnome", entonces tu directorio base será "/home/gnome". Una forma rápida de referirte a tu directorio base es "~/" (una tilde seguida de una diagonal), así, para el usuario "gnome", "~/mp3/eminem.mp3" se referiría al archivo "/home/gnome/mp3/eminem.mp3". "/lib" - Contiene las bibliotecas del sistema. Una biblioteca es un archivo que contiene códigos de programa comunes a varias aplicaciones. Por ejemplo, una tarea común para un programa sería el escribir un archivo en el disco; en lugar de incluir ese código en cada programa que lo requiera, un programador puede simplemente apuntar hacia una biblioteca específica que contenga esa instrucción. Las bibliotecas ayudan a que los tamaños de los programas sean pequeños, eficientes y más sencillos de mantener. Otros archivos que podrías encontrar en este directorio, bajo "/lib/modules/(versión-del-kérnel)" son los módulos del kérnel. Los módulos generalmente sirven como controladores de dispositivos, esto es, proveen la interfase necesaria para "hablar" con los dispositivos (hardware) del sistema, como la tarjeta de red, de sonido o una unidad SCSI. "/mnt" - Contiene los "puntos de montaje", los cuales son las vías de acceso a archivos en varios tipos diferentes de dispositivos, como unidades de disco flexible o CD-ROM's. Por ejemplo, "/mnt/floppy" podría ser la vía de acceso para llegar a la unidad de disco flexible. Todo esto está definido en el archivo "/etc/fstab" mencionado anteriormente. "/proc" - Contiene archivos con información del sistema. Por ejemplo, "/proc/cpuinfo" tiene información acerca del procesador de la computadora y "/proc/modules" contiene los nombres de los módulos que el kérnel está utilizando. "/root" - Contiene el directorio base del usuario "root". "/sbin" - Contiene comandos usados por el superusuario ("root") para la administración del sistema. Entre ellos están "shutdown" (usado para apagar o reiniciar el sistema) y fsck (una herramienta para verificar y reparar la información del disco duro, similar al "scandisk" de Windows. "/tmp" - Un lugar para archivos temporales. Algunas aplicaciones usan frecuentemente este directorio, el cual puede ser accedido por todos los usuarios del sistema. "/usr" - Contiene importantes subdirectorios, "/usr/bin" contiene la mayoría de los programas del sistema. "/usr/sbin" contiene comandos para la administración del sistema que no están en "/sbin". Entonces, ¿cuál es la diferencia entre "/bin" y "/usr/bin" o "/sbin" y "/usr/sbin"? Bueno, "/bin" y "/sbin" deben contener todos los comandos necesarios para echar a andar el sistema sin estar conectados a la red; esto le permite a "/usr" estar localizado en otra computadora en la red y accedido remotamente. Ahora echemos un vistazo al resto de los subdirectorios en "/usr". "/usr/lib" contiene más librerías del sistema. "/usr/include" contiene pedazos de código adicionales similares a las librerías, pero que se usan a la hora de compilar programas. Compilar es el proceso de tomar "código fuente" (instrucciones escritas por programadores utilizando algún lenguaje en particular, como C o Pascal) y usando un programa especial llamado "compilador" crear un archivo que pueda ser entendido por la computadora, llamado un "archivo binario". "/usr/src" contiene código fuente almacenado en el sistema (como el código fuente del kérnel) u otros. "/usr/local" contiene programas y archivos de datos que han sido añadidos localmente al sistema con la intención de manterlos separados de los archivos principales de dicho sistema. "/var" - Contiene archivos de administración (tales como las bitácoras del sistema) e información que cambian constantemente (como el correo entrante). Bueno, así concluye este paseo a la estructura de directorios de Linux. Considera esto como tu mapa del camino a la hora de moverte por el sistema. [traducido por aardvark]