En un sistema multiusuario (como Linux) tienen que diferenciarse los espacios (ambientes de trabajo) de los diferentes usuarios. Esto es una función del login que se encuentra como portal cada vez que se accede a la computadora. El segundo objetivo del login es la autentificación del usuario, o sea, detectar a través de una clave (secreta)=Password que la persona que utiliza el espacio de usuario indicado es este mismo. Es una medida básica de protección de los datos individuales de cada usuario.
Posibles formas de presentación son:
o
Mientras el nombre del usuario es visible, la clave no se repite en la pantalla. Si, y solamente si, el par <nombre> <clave> coincide con un par de valores grabados en el sistema se provee acceso. En cualquier otro caso se denega el acceso. Es otra medida de seguridad que no se indica si fallo el nombre o la clave.
El nombre designa una cuenta (=account) que es el espacio o ambiente de trabajo del usuario.
El sistema prove directamente después de la autentificación una facilidad para interactuar, es decir efectuar comandos y visualizar las respuestas correspondientes del sistema. Esta facilidad se llama procesador de linea de commandos = command line processor, o shell en la nomeclatura de unix. ’shell’ es la cáscara de la concha y es un sinónimo para la capa visible desde exterior, encima del sistema operativo.
El shell lee una línea de texto que el usuario teclea, al apretar la tecla “Enter” interpreta el texto (por lo que también se le llama ’interpretador de línea de commandos=command line interpreter) y ejecuta los comandos encontrados. Si se cometió un error lo indica así. Al terminar los comandos el shell muestra una cadena de identificación llamado “prompt” y procede a leer la siguiente línea.
Existen diferentes shell, los tradicionales se llaman ’sh’ y ’csh’, otros son:bash, ash, zsh, ksh, csh, tcsh,. . . nosotros trabajamos unicamente con bash, que es compatible con sh y el shell official del software GNU.
En una línea de commando se pueden concatenar varios commandos, separados por el símbolo ’;’ (semicolon).
Un commando tiene tres partes: nombre, opciones, parámetros. Solamente el nombre es obligatorio. Ejemplo:
Tradicionalmente tienen que escribirse los parámetros antes de los parámetros, en los programas GNU muchas veces eso no está exigido, pero es buena práctica.
Wildcards o comodínes son símbolos que pueden aparecer en los nombres de archivos, a veces también en los de los directorios. El comodín es sustituido por el shell con todos los nombres de archivos que cumplen con su forma.
En el ejemplo de arriba se sustituye ’*.c’ con todos los archivos del directorio actual que terminan con los caracteres ’.c’.
’cp’ puede copiar una lista de archivos, explícitamente nombrado, como directorio, o con wildcards hacia otro directorio, si el directorio no existe se crea, pero no se pueden especificar jerarquías de directorios como destino. Se puede copiar un archivo a otro, que tiene un nombre diferente. Si el destino existe se sobreescribe (!).
’ln’ crea enlaces. Esto no son archivos, sino referencias hacia archivos, que se pueden imaginar como entradas duplificadas en un directorio. Existen enlaces simbólicos (soft link) y directos (hard link). Los primeros refieren a la entrada original en el directorio, los segundos son copias directas. Por lo general se prefieren usar soft links.
Generalmente el comando ’mv’ se utiliza mas veces que el comando ’cp’. Tiene prácticamente la misma funciónalidad, menos que el archivo original se elimina. Por lo general ’mv’ es mucho más eficiente, ya que solo tiene que cambiar una entrada en el directorio, y no hacer copia del contenido del (posiblemente largo) archivo.
Itera por todos los archivos del directorio especificado (o actual), y repite esta función recursivamente por todos los subdirectorios. Este comportamiento se puede modificar, usando operadores (en forma de opciones con parámetros). Ejemplos:
’find’ es muy poderoso y se utiliza mucho en la administración automatizada de sistemas. Sin embargo es muy ineficiente ya que itera cada vez por todo el disco duro. Para encontrar la ubicación de un archivo se utiliza mejor el comando ’locate’. Este comando utiliza una base de datos indexados de todos los archivos en el disco duro, y extrae de esta la ubicación. Ejemplo: locate fernando; imprime todos los archivos que en alguna parte de su nombre contienen la cadena ’fernando’.
Si un archivo se renombra, se borra, se copia desde otro medio, etc. la base de datos no se actualiza y locate no reporta correctamente. el programa ’updatedb’ actualiza (utilizando ’find’) la base de datos y se correo automáticamente una vez a la semana.
Los comandos usados en los shell de unix pueden considerarse en la mayoría de los casos como ’filtros’. Ellos reciben una serie de caracteres (stream=corriente) por la entrada estándard (=stdin), los manipulan y remiten el resultado por la salida estándard (=stdout). Si hay que darle algunos mensajes al operador estos se transmiten por el canal de la salida estándard de error (=stderr). En el shell stdout y stderr por defecto son conectados y mensajes de procesamiento se intermezclan con la salida del programa.
La salida de un programa puede redirectionarse con el operador ’>’ hacia un archivo. La entrada puede obtenerse desde un archivo con el operador ’<’.
La salida del stderr puede redirectionarse mediante el operador ’&>’ hacia un archivo, y de esta manera separarse de la salida estándard del filtro.
Con el operador ’|’ (pipe=tubo) se pueden concatenar dos programas, la salida del primero va entrando en el segundo programa. De esta manera se pueden crear cadenas de filtros, obteniendo efectos sofisticados con commandos sencillos.
’grep’ puede usarse con expresiones regulares y de esta manera ayudar a filtrar muy eficientemente archivos. Un uso básico de ’grep’ es, encontrar un archivo con un contenido específico, si no se conoce el nombre.
El nombre se deriva de ’stream editor’.
El editor tradicional de los unices es ’vi’ - sinónimo para “visual editor”, es basado en ’ex’, que manipula línea por línea. Sus comandos se encuentran en muchos otros programas filtros de unix.
El editor oficial del proyecto GNU es ’emacs’. Emacs no solo es un editor sino un ambiente de trabajo con capacidades y extension inmensos.
Otros editores son: jove - mini editor con semejancias a emacs, jed - de escala media, muy flexible, pico - el micro editor que viene con el sistema debian linux.
Estos editores trabajan en ambientes de texto, algunas también en ambiente gráfico.
La diferencia en relación con procesadores de palabras (Word, StarWriter, WordPerfect) es, que cada caracter de un archivo puede ser manipulado y lo escrito se graba en el archivo en formato ascii, caractér por caractér, mientras los procedadores de palabras utilizan “Formatos” de archivos propios, para agregarle al texto escrito información adicional sobre las fuentes de letras usados, tamaņo, posición, gráficas, diseņo de páginas etc.
Para la administración del sistema se necesita manipular archivos de solo texto = plain text, o ASCII - text (American Standard Code for Information Interchange).