UNIX es el punto de partida para numerosos sistemas operativos. Es la parte que tienen en común el sistema original con las distintas distribuciones que se han ido lanzando basadas en Linux, por ejemplo. De esta manera, Linux es un SO basado en UNIX, y desde Linux se derivan numerosas distribuciones que seguramente te suenen (Ubuntu, Fedora, Mint, Debian…). Así pues, UNIX es el sistema operativo original del que se ha tomado una base para crear Linux (entre otros), y a partir de Linux se personalizan diferentes sistemas operativos para crear las distribuciones, que ya son versiones específicas que indagan en ciertos aspectos.
Por ello, UNIX es una base de código propietario, es decir, no libre, de la cual se extrae y utiliza parte de él para crear código libre. Las distintas distribuciones basadas en Linux (y, por lo tanto, en UNIX), se solidarizan con el usuario sin conocimientos en programación, ya que ofrecen interfaces visuales (GUI) para que el usuario medio pueda realizar todas o casi todas las instrucciones mediante interfaz y no mediante líneas de comandos.
sirve para dar vida a un ordenador. Es un sistema operativo, sin esto no es posible la interactuación entre usuario y máquina. Hoy en día, UNIX es utilizado en una gran cantidad de dispositivos, tanto directa como indirectamente (los que están basados en él), por lo que es un apoyo completamente esencial en la tecnología actual. Sistemas operativos como Linux y Android están basados en UNIX. Linux se utiliza en gran medida en entornos profesionales de servidores, programación y computación, mientras que Android se utiliza en la gran mayoría de smartphones en todo el mundo.
Además de lo ya comentado, UNIX sirvió en el pasado como ejemplo de cómo se deben hacer las cosas. El sistema operativo incorporó un orden jerárquico de archivos, la posibilidad de crear cuentas con distintos permisos, un sistema de archivos para almacenar y manejar toda la información, un conjunto de aplicaciones que desarrollan tareas específicas y, juntas, conforman el SO… Fue una herramienta clave para establecer qué debe ser un buen sistema operativo, y es por ello el éxito que tuvo.
UNIX sirve para tener una base sobre la que crear otros sistemas operativos con características similares pero personalizados. Si lo asemejamos al mundo de los smartphones, UNIX sería como el Android original y las capas de personalización de los fabricantes (MIUI de Xiaomi, ZenUI de ASUS, EMUI de Huawei…) serían las distribuciones creadas a partir de Linux y, por lo tanto, a partir de UNIX obviamente.
El uso de UNIX como SO implica el no tener una interfaz gráfica de usuario, todas las instrucciones se deben hacer por línea de comandos, por lo que es complicado atraer a nuevos usuarios en masa. Al igual que MS-DOS se ejecuta en comandos desde la CMD, UNIX viene a ser lo mismo en ese sentido.
- Directorio de conexión (~)
Se trata de un directorio que el administrador del sistema crea o asigna cuando da de alta a un usuario. El propósito de este directorio es suministrar un punto en la jerarquía de directorios del sistema de archivos UNIX a partir del cual el usuario puede almacenar y estructurar sus propios archivos y directorios. Este directorio suele ser tomado como directorio de trabajo inicial cuando el usuario establece una sesión de trabajo. Se representa mediante el símbolo ~.
- Directorio de trabajo (.)
El directorio de trabajo o act el directorio en el que nos encontramos operando en cada momento de la sesión. Se representa mediante un punto .Asociado al concepto de directorio de trabajo esta el concepto de directorio padre, que se representa mediante .. y que sirve para denotar al directorio del que depende el directorio de trabajo. La manera de conocer en todo momento el directorio de trabajo es a través de la orden pwd (print working directory). Su sintaxis es:
pwd
Ejemplo:Apis:~$ pwdEn este ejemplo, el directorio "." y ".." serían respectivamente /users/so/so00, y /users/so.
/users/so/so00
- Trayectorias o nombres de camino
Los archivos se identifican en la estructura de directorios por lo que se conoce como nombre de camino, trayectoria o path name. Fijándonos en la figura 2.1. distinguiremos las tres formas existentes para refenciar un archivo:Camino absoluto o completo. Consistente en el conjunto de nodos por los que hemos de pasar, partiendo del directorio raíz, para llegar al archivo o directorio que queremos referenciar. Va precedido siempre por el caracter /. Identifica de modo único a un directorio o archivo dentro del sistema de archivos.Camino relativo. Tenemos dos formas de acceder a un archivo usando una trayectoria relativa, según tomemos en consideración el directorio de trabajo o el directorio de conexión:Ejemplo: /usr/bin/troff1. Respecto del directorio de trabajo:
Suponiendo que nuestro directorio de trabajo es /usr, el camino para llegar al archivo /usr/bin/troff sería bin/troff.NOTA: Para el camino relativo se pueden utilizar las cadenas "." y "..", permitiéndose entonces ascender en el árbol de directorios para referenciar archivos de modo relativo.
Por ejemplo, si el directorio de trabajo es el /usr/bin/troff y queremos referenciar el archivo /usr/local/bin , usando una trayectoria relativa, escribiríamos ../../local/bin.2. Respecto del directorio de conexión.Suponiendo que nuestro directorio de conexión actual es /users/ssp, la referencia al archivo o directorio anterior seria ~/../../usr/bin/troff
- Nombre de archivo
El nombre de un archivo en UNIX puede tener hasta 255 caracteres y aunque no existe el concepto de extensión de un archivo es posible incluir el carácter . tantas veces como se desee, la única consideración a tener en cuenta en este sentido, es la referente a los nombres de archivo cuyo primer carácter es . a los que históricamente se denominan archivos ocultos, ya que por defecto no son mostrados por la orden ls. Una denominación más precisa para estos archivos sería la de archivos sin interés habitual, ya que se suelen utilizar para configurar aplicaciones y normalmente el usuario no tiene interés en verlos.Es importante tener en cuenta que los intérpretes de órdenes de UNIX (denominados shell) consideran distintos los caracteres en mayúsculas de los caracteres en minúscula. Por lo tanto no son equivalentes los archivos: programa.c y Programa.c.
Ejemplos de nombres de archivos:
programa, programa.c, programa.c.primera_version, base_datos.1992
Expansión de nombre de archivo: caracteres comodín y especiales
Existen en UNIX un conjunto de caracteres cuya combinación permite que el intérprete de órdenes los sustituya por un grupo de símbolos. Estos caracteres se denominan caracteres comodín. De entre los existentes destacamos los siguientes:* Representa cualquier conjunto de símbolos. Por ejemplo, sabiendo que la orden lp permite imprimir archivos:Apis:~$ lp * # imprime todos los archivos del directorio de trabajo? Representa cualquier carácter.
Apis:~$ lp ab* # imprime los archivos que empiecen por abApis:~$ lp a?b # imprime los archivos cuyos nombres tengan tres caracteres, el primero sea una a y el último una b[...] Representan un símbolo del conjunto.Apis:~$ lp ab[123] # imprime (si existen) los archivos ab1, ab2 y ab3
[!...] Representa un símbolo NO contenido en el conjunto.Apis:~$ lp [!ab]* # imprime todos los archivos cuyo nombre NO comienza por ni por a ni por bAparte de los caracteres comodín, existen otros caracteres cuyo significado es especial para la shell. Entre estos destacamos:< , > , | , &
cuyo significado se explicará en prácticas posteriores.
De modo general para todos los caracteres especiales y comodín, se habilitan distintas maneras para forzar a que la shell los interprete literalmente como los caracteres que son. Los modos de escapar los caracteres especiales y comodín son los siguientes:Utilizando el carácter \ se pueden escapar caracteres individualmente. Cuando se quiere escapar cadenas completas se recurre a encerrarlos entre comillas '.
Apis:~$ lp `test?&' #imprime el archivo con nombre test?&
Apis:~$ lp \*a #imprime el archivo de nombre *a
Niveles de acceso a la información
Todo usuario tiene la posibilidad de crear, modificar y borrar archivos. Cada archivo tiene tres modos de acceso diferentes:
- Acceso para lectura "r". Se permite acceder para consultar el contenido del archivo sin modificarlo.
- Acceso para escritura "w". Se permite modificar el contenido del archivo.
En los sistemas multiusuario se hace necesario controlar el acceso a la información asegurando su privacidad. Como ya se ha visto anteriormente, cada usuario del sistema tiene un número identificador (UID) único dentro del sistema y también pertenece a un grupo de usuarios identificado unívocamente dentro del sistema por un número (GID). A estos números se les asocia unos nombres lógicos que se denominan login en el caso del UID y nombre de grupo en el caso del GID. Por lo tanto, una manera de identificar la información perteneciente a un usuario (el caso que nos ocupa son sus archivos), es que cada archivo lleve asociado el identificador de usuario propietario de la información y la del grupo a que este usuario pertenece.
- Acceso para ejecución "x". El archivo puede ser ejecutado (por ejemplo un programa compilado).
De la combinación de los tres modos de acceso explicados anteriormente rwx y los atributos propietario de un archivo y grupo al que pertenece dicho propietario, surgen los denominados niveles de acceso a la información. Estos son tres:
- Nivel de usuario. Son los modos de acceso a la información permitidos para el propietario del archivo.
- Nivel de grupo. Modos de acceso a la información permitidos para cualquier usuario que pertenezca al mismo grupo que el del propietario del archivo.
- Nivel de otros. Modos de acceso a la información permitidos para los usuarios del sistema que ni son el propietario del archivo ni pertenecen a su mismo grupo.
Listado de archivos
La orden ls se utiliza para visualizar el contenido de un directorio. Su sintaxis es la siguiente:Si no indicamos path_name, se presentará el contenido del directorio de trabajo actual. Ejemplo:ls [parámetros] [path_name]
Apis:~$ cd /binSegún los parámetros utilizados en la orden (campo parámetros en la sintáxis), obtendremos distintos tipos de información acerca de los archivos. Especialmente relevantes son los siguientes:
Apis:~$ ls c*
c89 cd chown colcrt cp csplit
cal cdoc chsh colrm cpio ct
calendar cdsuf cksum comm cpp ctod
capsar chfn clear command crashdc cu
cat chgrp cmp compress crontab cut
cc chmod col cord csh
-a permite visualizar los archivos ocultos (aquellos que empiezan por .).-F introduce el carácter / tras los nombres de los subdirectorios listados y un * tras los archivos ejecutables.
-l lista los archivos en formato largo, incluyendo información adicional completa acerca de cada uno de ellos.

No hay comentarios:
Publicar un comentario