diff --git a/es_ES.ISO8859-1/books/handbook/basics/chapter.sgml b/es_ES.ISO8859-1/books/handbook/basics/chapter.sgml index 8005219d5c..e3a5a3b350 100755 --- a/es_ES.ISO8859-1/books/handbook/basics/chapter.sgml +++ b/es_ES.ISO8859-1/books/handbook/basics/chapter.sgml @@ -1,634 +1,634 @@ Chris Shumway Reescrito por Conceptos Básicos de Unix Sinópsis basics El siguiente capítulo cubre la funcionalidad y órdenes básicas del sistema operativo FreeBSD. Mucho de este material es relevante para cualquier sistema operativo tipo &unix;. Si es nuevo en FreeBSD, seguramente querrá leer este capítulo cuidadosamente. Después de leer este capítulo, usted sabrá: Cómo usar la consola virtual de FreeBSD. Cómo trabajan los permisos de ficheros en &unix;. La disposición de archivos de sistema en &os; por defecto. Cómo montar y desmontar archivos de sistema. - Qué que son los procesos, demonios y señales. + Qué son los procesos, demonios y señales. Qué es una cónsola (shell) y como cambiar el ambiente de su entorno (login). Cómo usar editores de texto basicos. Qué son los dispositivos y nodos de dispositivos. Qué formato binario se utiliza en &os;. Cómo leer los manuales para más información. Permisos FreeBSD, cuya raiz histórica es el UNIX BSD, tiene sus fundamentos basados en varios conceptos clave de UNIX. El primero, y más remarcado, es que FreeBSD es un sistema operativo multi-usuario. El sistema puede manejar varios usuarios trabajando todos simultáneamente y en tareas que no guardan relación entre sí. El sistema es el responsable de compartir y administrar peticiones de dispositivos de hardware, periféricos, memoria y tiempo de Unidad Central de Proceso (CPU) de manera equitativa para cada usuario. Debido a que el sistema es capaz de soportar múltiples usuarios, todo lo que el sistema administra tiene un conjunto de permisos que gobiernan quién puede leer, escribir y ejecutar el elemento. Estos permisos se guardan como octetos divididos en tres partes: una para el propietario del archivo, otra para el grupo al que el archivo pertenece, y otra para cualquier otro. Esta representación numérica funciona así: Valor Permiso Listado de Directorio 0 No leer, no escribir, no ejecutar --- 1 No leer, no escribir, ejecutar --x 2 No leer, escribir, no ejecutar -w- 3 No leer, escribir, ejecutar -wx 4 Leer, no escribir, no ejecutar r-- 5 Leer, no escribir, ejecutar r-x 6 Leer, escribir, no ejecutar rw- 7 Leer, escribir, ejecutar rwx Si se muestra un listado expandido de directorio mediante ls -l, se mostrarán en una columna los permisos de fichero para el propietario, grupo y todos los demás. Veamos como se descompone: -rw-r--r-- El primer carácter, de izquierda a derecha, es un carácter especial que indica si se trata de un archivo normal, un directorio, un dispositivo especial de tipo carácter o bloque, un socket, o cualquier otro dispositivo de pseudo-archivo. Los siguientes tres caracteres, expresados como rw- muestran los permisos para el propietario del archivo. Los siguientes tres caracteres, r-- muestran los permisos para el grupo al que el archivo pertenece. Los últimos tres caracteres, r--, muestran los permisos para el resto del mundo. Un guión indica que el permiso está desactivado. En el caso de este archivo, los permisos están asignados de tal manera que el propietario puede leer y escribir en el archivo, el grupo puede leer el archivo, y el resto del mundo sólo puede leer el archivo. De acuerdo con la tabla que se muestra más arriba, los permisos para este archivo serían 644, donde cada cifra representa las tres partes de los permisos del archivo. Todo ésto está muy bien, pero ¿cómo controla el sistema los permisos de los dispositivos? FreeBSD en realidad trata la mayoría de los dispositivos hardware como un archivo que los programas pueden abrir, leer y en los que pueden escribir datos como si de cualquier otro archivo se tratara. Estos archivos especiales de dispositivos se encuentran en el directorio /dev. Los directorios también son tratados como archivos. Tienen permisos de lectura, escritura y ejecución. El bit de ejecución en un directorio tiene un significado ligéramente distinto que para los archivos. Cuando un directorio está marcado como ejecutable significa que se puede mirar dentro, por ejemplo, se podría hacer un listado de ese directorio. Hay más permisos, pero se usan principalmente en circunstancias especiales como los binarios ejecutables de tipo "setuid" y los los directorios de tipo "sticky". Si desea más información acerca de los permisos de archivos y cómo establecerlos, asegúrese de mirar la página de manual de &man.chmod.1;. Estructura de directorios Como FreeBSD utiliza sus sistemas de archivos (file systems) para determinar muchas operaciones fundamentales en el sistema, la jerarquía del sistema de archivos es extremadamente importante. Dado que la página de manual de &man.hier.7; proporciona una descripción completa de la estructura de directorios, no la vamos a repetir aquí. Para más información, puede consultar &man.hier.7;. De una especial importancia es el raiz (root) de todos los directorios, el directorio /. Este directorio es el primero en ser montado al arrancar y contiene contiene el sistema básico necesario a la hora de iniciar. El directorio raiz también contiene puntos de montaje para cualquier otro sistema de archivos que se desee montar. Un punto de montaje es un directorio donde se pueden injertar al sistema de archivos raiz otros sistemas de ficheros adicionales. Los puntos de montaje convencionales incluyen /usr, /var, /mnt y /cdrom. Estos directorios directorios se corresponden habitualmente con entradas en en archivo /etc/fstab. /etc/fstab es una tabla que sirve como referencias al sistema y contiene los diferentes sistemas de archivos y sus respectivos puntos de montaje. La mayoría de los sistemas de archivos que figuran en /etc/fstab son montados automáticamente al arrancar por el guión de órdenes (script) &man.rc.8; a no ser que contengan la opción . Consúltese la página del manual &man.fstab.5; para más información acerca del formato del archivo /etc/fstab y de las opciones que se pueden especificar. Intérpretes de órdenes (Shells) En FreeBSD, gran parte del trabajo diario se realiza a través de un interfaz de la linea de órdenes llamado "shell". El principal trabajo del shell es recoger órdenes del canal de entrada y ejecutarlas. Muchos shells tienen también integradas funciones para ayudarnos en las tareas cotidianas tales como la manipulación de archivos, edición de líneas de órdenes, macros de órdenes, expansión de expresiones regulares en nombres de archivo y variables del sistema. FreeBSD viene con un conjunto de shells, como sh, el shell Bourne y csh, el shell C. Hay disponibles muchos otros shells en la "FreeBSD Ports Collection" que son mucho más potentes, como bash y tcsh. ¿Qué shell usar? Es cuestión de gustos. Si se es programador de C se puede sentir más cómodo con tcsh, un shell con una sintaxis similar al C. Si se proviene del mundo Linux o se es nuevo en el interfaz de órdenes de Unix, se puede probar con bash. El asunto es que cada shell posee unas propiedades únicas que pueden o no funcionar con el entorno de trabajo preferido y se ha de efectuar una elección sobre el shell a usar. Una de las propiedades comunes de un shell es que completa los nombres de archivo. Dada la introducción de las primeras letras de una orden o del nombre de un archivo, se puede hacer que el shell complete automáticamente el resto de la orden o el nombre del archivo pulsando la tecla TAB. Aquí va un ejemplo. Supongamos que se tienen dos archivos llamados foobar y foo.bar. Se quiere borrar foo.bar. Lo que habría que teclear es: rm fo[TAB].[TAB]. El shell nos mostraría rm foo[BEEP].bar. El [BEEP] es el pitido de consola (console bell): es el shell diciéndonos que fue incapaz de completar totalmente el nombre de archivo porque hay más de una coincidencia. Tanto foobar como foo.bar comienzan por fo, pero solo se pudo completar hasta foo. Si se teclea ., y de nuevo TAB, el shell será capaz de introducir el resto del nombre por nosotros. Otra función del shell son las variables de entorno. Las variables de entorno son parejas de valores clave almacenados en el espacio de entorno del shell. Este espacio puede ser leído por cualquier programa invocado por el shell y, por tanto, en él se encuentra bastante información relativa a la configuración de programas. Lo siguiente es una lista de las variables de entorno más comunes y su significado: Variable Descripción USER Nombre de usuario con el que se ha entrado al sistema. PATH Lista de directorios, separada por puntos y coma, en los que se busca ejecutables. DISPLAY Nombre en la red de la pantalla de X11 a la que conectarse, si se encuentra disponible. SHELL El shell actual. TERM El nombre del terminal del usuario. Se usa para determinar las posibilidades del terminal de datos. TERMCAP Base de datos donde encontrar los códigos de escape necesarios para realizar diferentes funciones en el terminal. OSTYPE Tipo de sistema operativo. Por ejemplo, FreeBSD. MACHTYPE Arquitectura de la CPU en la que el sistema se está ejecutando. EDITOR El editor de texto preferido por el usuario. PAGER El paginador de texto preferido por el usuario. MANPATH Lista de directorios en los que se busca páginas de manual, separados por puntos y coma. Visualizar o establecer una variable de entorno difiere ligeramente de shell a shell. Por ejemplo, en los shells al estilo C como tcsh y csh, se usaría setenv para establecer y visualizar las variables de entorno actuales. Siguiendo el ejemplo, para establecer o modificar el valor de EDITOR, bajo csh o tcsh una orden como la siguiente establecería el valor de EDITOR a /usr/local/bin/emacs: &prompt.user; setenv EDITOR /usr/local/bin/emacs Bajo los shells tipo Bourne (Bourne Shells): &prompt.user; export EDITOR="/usr/local/bin/emacs" También se puede hacer que la mayoría de los shells muestren el contenido de una variable de entorno situando el carácter $ delante del nombre de la variable desde la línea de órdenes. Por ejemplo, echo $TERM mostrará cualquiera que sea el valor que se le haya establecido a TERM, porque el shell expande el valor de TERM y se lo pasa al programa echo. Los shells manejan muchos caracteres especiales, llamados meta-caracteres, como representaciones especiales de datos. El mas común es el carácter *, que representa cualquier número de caracteres en un nombre de archivo. Estos meta-caracteres especiales se pueden usar para la expansión de nombres de archivos. Por ejemplo, teclear echo * es casi lo mismo que introducir ls porque el shell recoge todos los archivos que coinciden con * y se los pone en la línea de órdenes a echo para que los vea. Para evitar que el shell interprete estos caracteres especiales, se pueden salvar poniendo el carácter contrabarra (\) delante de ellos. echo $TERM muestra cualquiera que sea el valor establecido para el terminal que estamos usando. echo \$TERM muestra $TERM tal cual. Cambiando de shell La manera más fácil de cambiar de shell es usando la orden chsh. Al ejecutar chsh se nos situará dentro del editor de texto que figure en la variable de entorno EDITOR o, de no estar configurada, se nos abrirá vi. Cámbiese la línea Shell: adecuadamente. También se le puede suministrar a chsh la opción ; ésto establecerá el shell por nosotros sin necesidad de entrar en el editor de texto. Por ejemplo, si se desea cambiar el shell a bash, lo siguiente realizará el ajuste: &prompt.user; chsh -s /usr/local/bin/bash Ejecutar chsh sin parámetros y cambiar el shell desde allí tambien funcionaría. El shell que se desee usar debe figurar en el archivo /etc/shells. Si se ha instalado un shell desde la colección de ports, entonces esto ya se habrá realizado. Si se ha instalado manualmente el shell, se debe realizar el cambio pertinente. Por ejemplo, si se instaló manualmente bash y se situó en /usr/local/bin, debería hacer: &prompt.root; echo "/usr/local/bin/bash" >> /etc/shells Y entonces volver a ejecutar chsh. Editores de texto Gran parte de la configuración de FreeBSD se realiza modificando archivos de texto. A causa de esto, es una buena idea familiarizarse con un editor de texto. FreeBSD viene con unos cuantos como parte del sistema base y muchos más se encuentran disponibles en la colección de ports. El editor de textos más fácil y rápido de aprender es uno llamado ee, cuyo nombre proviene del inglés "easy editor" (editor fácil). Para iniciar ee se debería teclear en la línea de órdenes ee filename, donde filename es el nombre del archivo que deseamos editar. Por ejemplo, para editar /etc/rc.conf, tecléese ee /etc/rc.conf. Una vez dentro de ee, todas las posibles órdenes para manipular las funciones del editor se presentan en la parte superior de la pantalla. El carácter acento circunflejo ^ representa a la tecla de control en el teclado, o sea que ^e significa pulsar simultáneamente la tecla control y la letra e. Para abandonar ee, se debe pulsar la tecla escape y elegir abandonar (leave) el editor. El editor preguntará entonces si se desean conservar los cambios si el archivo hubiera sido modificado. FreeBSD viene también con editores de texto mucho más potentes. Por ejemplo, vi como componente del sistema básico y emacs o vim como parte de la colección de ports. Estos editores ofrecen mucha más funcionalidad y potencia a expensas de un aprendizaje un poco más complicado. De cualquier manera, si se planea editar muchos textos, aprender un editor más potente como vim o emacs le ahorrará mucho tiempo a largo plazo. Para más información Páginas de manual La documentación más exhaustiva de FreeBSD se encuentra en la forma de páginas de manual. Casi todos los programas del sistema vienen con un sucinto manual de referencia explicando el funcionamiento básico y los diferentes argumentos. Estos manuales pueden ser revisados con el programa man. El uso del programa man es sencillo: &prompt.user; man command command es el nombre del programa del que se quiere saber algo. Por ejemplo, para saber algo acerca del programa ls tecléese: &prompt.user; man ls El manual en línea está dividido en secciones numeradas: Órdenes/programas de usuario. LLamadas de sistema y códigos numéricos de error. Funciones de las librerías de C. Manejadores de Dispositivos. Formatos de Archivos. Juegos y otros divertimentos. Información miscelánea. Programas relativos al mantenimiento y operación del sistema. Desarrolladores del Kernel. En algunos casos, el mismo epígrafe puede aparecer en más de una sección del manual en línea. Hay, por ejemplo, un programa de usuario llamado chmod y una llamada de sistema chmod(). En este caso se le puede especificar a man cuál se desea especificando la sección: &prompt.user; man 1 chmod Esto nos mostrará la página del manual en línea del programa de usuario chmod. Las referencias a una sección concreta del manual en línea se sitúan tradicionalmente entre paréntesis en la documentación impresa, de tal manera que &man.chmod.1; se refiere al programa de usuario chmod y &man.chmod.2; se refiere a la llamada de sistema. Esto está muy bien si se conoce el nombre del programa y simplemente se quiere saber cómo usarlo. Pero, ¿qué si se recuerda el nombre del programa? Se puede usar man para que realice una búsqueda mediante palabras clave en las descripciones de programas usando el argumento : &prompt.user; man -k mail Con esta orden se nos mostrará una lista de programas que contienen la palabra clave mail en sus descripciones. Ésto equivale a usar el programa apropos. Si se está mirando todos esos curiosos programas que residen en /usr/bin y no se tiene ni puñetera idea de que narices hacen realmente, hágase un sencillo: &prompt.user; cd /usr/bin &prompt.user; man -f * o &prompt.user; cd /usr/bin &prompt.user; whatis * que hace exactamente lo mismo. Archivos de información GNU FreeBSD incluye muchas aplicaciones y utilidades producidas por la Free Software Foundation (FSF). De manera adicional a las páginas de manual estos programas vienen con documentos de hipertexto más detallados, llamados archivos info, que pueden ser revisados con el programa info o, si se ha instalado emacs, el modo "info" de emacs. Para usar el programa &man.info.1; simplemente tecléese: &prompt.user; info Para una descripción breve, tecléese h. Para una referencia rápida de un programa, tecléese ?.