- Objetivos
- Elementos de Operaciones de Sistemas. Aspectos Generales.
- Manipulación y uso de los comandos.
- Sistema de Archivos en UNIX.
- Programación Shell
- Bibliografía
- Que el estudiante adquiera los conocimientos necesarios sobre los sistemas operativos UNIX, Linux y su estructura.
Objetivos Específicos:
- Comprender la real evolución y los aportes de sistema operativo UNIX.
- Conocer y poner en práctica el concepto de los sistemas multiusuarios.
- Aprender el uso de los diferentes comandos del UNIX y Linux.
- Conocer los diferentes editores de texto con lo que cuenta el Sistema operativo UNIX, así como los comandos más usados en estos editores.
- Comprender y entender a construir programas usando la herramienta Shell, tomando en cuenta su estructura básica y las diferentes formas de transferencia de control.
- Aprender a utilizar las diferentes herramientas de programación.
CAPITULO I
Elementos de Operaciones de Sistemas. Aspectos Generales.
¿Qué es Unix?
Unix es un sistema operativo de los múltiples que existen en el mercado, sin embargo tiene ciertas características que lo hacen único y muy útil para ciertos tipos de trabajo. Este sistema surgió en los años 60, durante la aparición de lo que se podrían considerar como los primeros ordenadores modernos. Inicialmente desarrollado por ingenieros de los Bell Laboratorios se diseño para su uso en ambientes profesionales, en los que los usuarios tenían amplios conocimientos y experiencia en programación e informática
Evolución de Unix
A lo largo de muchos años estos sistemas han evolucionado enormemente y han adquirido gran popularidad en los entornos profesionales y empresariales por su gran fiabilidad, robustez y versatilidad. A pesar de la evolución e introducción en mercados no especializados Unix sigue fiel a sus líneas iniciales. Poco a poco se fueron mejorando y modernizando sus funciones y lo que es más importante, su facilidad de uso ha incrementado notablemente, llegando a un punto en el que se requieren escasos conocimientos avanzados de informática para poder iniciarse en el uso de estos sistemas. Eso sí, no se le podrá exprimir todo su potencial sin un considerable esfuerzo de aprendizaje por parte del usuario.
El momento actual
En estos momentos se está produciendo lo que se podría clasificar como una explosión de Unix en la informática personal. A pesar del avance de Windows NT como plataforma de servidor red en empresas (sobre todo en la pequeña y mediana, que precisan facilidad de uso con unas prestaciones aceptables), y del consiguiente retroceso en estas áreas de los sistemas gobernados por Unix, en las áreas no profesionales se esta produciendo un espectacular avance de este sistema operativo. Este avance está incitado por la escasa calidad de los sistemas Windows, sobre todo como plataforma de conexión a redes, es decir a Internet (léase problemas de nukes, poca estabilidad, lentitud, etc.). Llegados a este punto hay que hacer una referencia obligada a Linux, que se ha convertido en la gran alternativa a Windows para ordenadores personales.
GENERALIDADES
Antecedentes históricos.
El S.O. Unix fué creado a finales de la década de los 60 sobre la base de varios trabajos realizados conjuntamente por el MIT y Laboratorios BELL. Dichos trabajos (proyecto MULTICS) iban encaminados a la creación de un macrosistema de computación que diese servicio a miles de usuarios. Si bien el proyecto fracasó, posiblemente por intentar abarcar demasiado contando con unos elementos hardware limitados en esa época, influyó decisivamente sobre la evolución de los sistemas informáticos posteriores.
Un antiguo componente de dicho proyecto (Ken Thompson), desarrolló por su cuenta un sistema operativo monousuario con la característica principal de un sistema de archivos jerárquico.
El sistema encontró muchos entusiastas y se hizo portable al reescribirse casi íntegramente en lenguaje "C", y se suministró en código fuente a las Universidades como objeto de formación. Así, la Universidad de California en Berkeley retocó dicho sistema (fundamentalmente, comunicaciones y diversas utilidades como el editor "vi") , y liberó lo que luego sería el BSD , uno de los dos "dialectos" principales del UNIX.
Actualmente, existen dos corrientes, las cuales cada vez poseen más elementos comunes: la BSD 4.X y la System V R 4.
Mención especial merece el S.O. LINUX, un UNIX gratuito para computadoras personales (PC con Intel 386 o superior) y últimamente en proceso de "porting" a otras plataformas, tales como SPARC (Sun) o Motorola (m68k), cuya rápida expansión está revolucionando la comunidad informática.
Conceptos iniciales.
El S.O. Unix se encarga de controlar y asignar los recursos físicos del ordenador (hardware) y de planificar tareas. Podemos establecer tres elementos principales dentro de éste S.O.:
– El núcleo del sistema operativo (kernel), el escalón más bajo que realiza tareas tales como el acceso a los dispositivos (terminales, discos, cintas…).
– El intérprete de comandos (shell) es la interfase básica que ofrece UNIX de cara al usuario. Además de ejecutar otros programas, posee un lenguaje propio así como numerosas características adicionales que se estudiarán en un capítulo posterior.
– Utilidades "de fábrica"; normalmente se trata de programas ejecutables que vienen junto con el Sistema Operativo; algunas de ellas son:
– Compiladores: C, Assembler y en algunos casos Fortran 77 y C++.
– Herramientas de edición: Editores (vi,ex) , formateadores (troff) , filtros …
– Soporte de comunicaciones: Herramientas basadas en TCP/IP (telnet,ftp …)
– Programas de Administración del Sistema (sysadm, SA, SAM, va…)
– Utilidades diversas y juegos (éstos últimos se suele instalar aparte).
ORDENES BASICAS.
Conexión y desconexión.
Para acceder al sistema, éste presenta el mensaje de login, con el que quiere significar algo así como "introduce el usuario con el que quieres abrir una sesión".
UNIX(r) System V Release 4.2
Login:
Una vez tecleado el usuario que se quiere y haber pulsado RETURN, solicita una palabra de paso (password), la cual, como es natural, no se verá en pantalla aunque se escriba.
UNIX(r) System V Release 4.2
Login: antonio
Password:
$
Tanto el nombre del usuario como la palabra de paso han de ser escritas "de golpe", es decir, no se pueden dar a los cursores para modificar ningún carácter y mucho menos la tecla de Backspace, Ins, Del… Esto es debido a que, tanto este carácter como los aplicados a los cursores, son caracteres válidos en nombres de usuario y en palabras de paso.
El sistema, una vez aceptado el nombre del usuario (el cual como es obvio habrá sido asignado por el Administrador, así como la palabra de paso), lanza por pantalla unos mensajes de bienvenida y termina con el símbolo denominado "prompt", símbolo configurable (como casi todo en UNIX) y que suele ser un ‘$’ ó un ‘#’.
Existe en todos los sistemas UNIX un superusuario llamado "root", que puede hacer absolutamente lo que quiera en el sistema. Además, hay algunos usuarios especiales, dependiendo del sistema que se trate con más privilegios de los normales (admin ó sysadm, usuario de administración del equipo, uucp como usuario de comunicaciones) y el resto, que corresponden a usuarios normales.
El programa que está en este momento mostrando el prompt es la shell o intérprete de comandos. Con este prompt, indica algo así como "preparado para que me escribas el comando que quieres ejecutar".
También es significativa la diferencia entre mayúsculas y minúsculas; no es lo mismo "cal" que "CAL". El primero es un comando de calendario; el segundo no existe y la shell se queja de que no lo encuentra:
Conceptos: grupo, directorio de trabajo, shell, tipo de terminal.
Cada usuario, aparte de la palabra de paso, posee unos determinados atributos los cuales básicamente son:
– Grupo: A cada usuario, en el momento de su creación, se le asigna uno ( o varios , si la versión del sistema es moderno ) . La misión de esto radica en agrupar usuarios en "grupos" cara a permitir y a denegar accesos en el sistema. Para ver a qué grupo pertenecemos, se puede ejecutar el comando "id" , el cual producirá un resultado similar al siguiente :
$ id
uid=129(jose) gid=1(other)
Como era de esperar, el comando nos contesta con siglas en inglés; "uid" (UserID) , identificador de usuario , un número y un nombre (129 y José) ; "gid" (GroupID) , identificador de grupo , un número y un nombre (1 y other).
– Directorio de trabajo: Al iniciar una sesión (tras hacer "login"), cada usuario "cae" en un determinado directorio prefijado . Este habrá sido fijado por el administrador en el momento de la creación, y normalmente estará situado en "/home/jose" , "/users/acct/jose" ó similar. No existe un estándar sobre esto y puede ser cualquier subdirectorio del sistema, incluido el raíz.
Para visualizar cuál es nuestro directorio, podemos escribir el comando "pwd" (Print Working Directory) inmediatamente después de haber hecho "login" .
– Shell: Si bien nos hemos referido de forma genérica a la shell, existen diversas versiones asignables a usuarios, de las cuales podemos citar algunas:
– la Bourne shell ("sh") : Una de las más antiguas y , por tanto , más seguras.
– la Korn shell ("ksh") : Basada en la de Bourne pero más moderna y con más funcionalidades.
– la C-Shell ("csh") : Preferida en entornos BSD y bastante potente aunque más críptica que las dos anteriores.
Veremos más adelante las características de cada una de ellas con más detalle.
– Características del Terminal: Dependiendo de cómo se tenga configurado el terminal, la sesión se comporta de una manera determinada frente los siguientes caracteres especiales:
– Control + C (INTR) : Interrumpe el programa que se está ejecutando en ese momento.
– Control + H (ERASE) : Borra el último carácter escrito.
– Control + D (EOF) : Termina la sesión ; posee un efecto similar a escribir "exit" .
SHELL
La shell es el programa más importante para la mayoría de los usuarios y administradores de UNIX; con la excepción del editor de textos y del menú de administración, posiblemente es con el que más tiempo se trabaja.
La shell es el lenguaje de comandos de UNIX; es un programa que lee los caracteres tecleados por los usuarios, los interpreta y los ejecuta.
A diferencia de otros intérpretes más estáticos en otros sistemas operativos, aquí existe además un completo lenguaje de programación que permite adaptar de manera relativamente sencilla el sistema operativo a las necesidades de la instalación.
Una vez que un usuario común se ha registrado cara al sistema con su login y su password, se le cede el control a la shell, la cual normalmente ejecuta dos ficheros de configuración, el general ( /etc/profile ) y el particular( <directorio_del_usuario>/.profile ). Una vez aquí , la propia shell despliega el literal "inductor de comandos" , que normalmente será :
$
ó
#
Y el cursor en espera de que alguien escriba algún comando para ejecutar.
Tipos y propiedades.
Ya que, como hemos explicado anteriormente, la shell es un programa, existen varios, cada uno con sus características particulares. Veamos algunas de ellas:
– Bourne shell ( /bin/sh ) : Creada por Steven Bourne de la AT&T . Es la más antigua de todas y , por tanto , la más fiable y compatible entre plataformas . Esta es en la que se basan las explicaciones posteriores.
– Korn shell (/bin/ksh) : Creada por David G. Korn de los laboratorios Bell de la AT&T .Más moderna , toma todos los comandos de la Bourne y le añade varios más así como varias características de r eedición interactiva de comandos , control de trabajos y mejor rendimiento en términos de velocidad que la anterior. Existen dos versiones, una primera "maldita" y la actual, de 16/11/1988. (Podemos averiguar qué versi&oa cute;n tiene la nuestra ejecutando el comando "what /bin/ksh") Pero no es oro todo lo que reluce ; cuando se trata de situaciones extremas ó complicadas donde la ksh falla, la de Bourne normalmente está más "blindada&qu ot; .
– C Shell, desarrollada por Bill Joy en la Universidad de California y , por tanto , más extendida entre UNIX BSD. Bastante más críptica que la de Bourne , incorpora no obstante sustanciales mejoras .
Estructura de las órdenes – Metacaracteres.
Cuando escribimos cualquier comando y pulsamos <INTRO> , es la shell y no UNIX quien se encarga de interpretar lo que estamos escribiendo y ordenando que se ejecute dicho comando. Aparte de los caracteres normales, la shell Interpreta otros caracteres de modo especial : un grupo de caracteres se utiliza para generar nombres de ficheros sin necesidad de teclearlos explícitamente.
Cuando la shell está interpretando un nombre, los caracteres * ? [ ] Se utilizan para generar patrones. El nombre que contenga alguno de éstos caracteres es reemplazado por una lista de los ficheros del directorio actual cuyo nombre se ajuste al patrón generado.
Las reglas de generación de patrones son:
* Vale cualquier cadena de caracteres.
? Vale un carácter cualquiera.
[ .. ] Vale cualquiera de los caracteres que coincida con los que estén entre corchetes.
Ejemplo. Supongamos que en nuestro directorio actual tenemos los siguientes ficheros:
$ ls
tonto
Tonta
Diario
Mayor
Veamos cada una de las salidas correspondientes a las reglas anteriores:
$ ls * (valen todos)
tonto
tonta
diario
mayor
$ ls *o (todos, pero tienen que acabar en "o")
tonto
diario
$ ls tont? (que empiecen por tont y cualquier otro carácter)
tonto
tonta
$ ls tont[oa] (que empiecen por tont y el siguiente sea "o" ó "a" )
Características Generales:
Es un sistema operativo de tiempo compartido, controla los recursos de una computadora y los asigna entre los usuarios. Permite a los usuarios correr sus programas. Controla los dispositivos de periféricos conectados a la máquina.
Posee las siguientes características:
– Es un sistema operativo multiusuario, con capacidad de simular multiprocesamiento y procesamiento no interactivo.
– Está escrito en un lenguaje de alto nivel : C.
– Dispone de un lenguaje de control programable llamado SHELL.
– Ofrece facilidades para la creación de programas y sistemas y el ambiente adecuado para las tareas de diseños de software.
– Emplea manejo dinámico de memoria por intercambio o paginación.
– Tiene capacidad de interconexión de procesos.
– Permite comunicación entre procesos.
– Emplea un sistema jerárquico de archivos, con facilidades de protección de archivos, cuentas y procesos.
– Tiene facilidad para redireccionamiento de Entradas/Salidas.
– Garantiza un alto grado de portabilidad.
El sistema se basa en un Núcleo llamado Kernel, que reside permanentemente en la memoria, y que atiende a todas las llamadas del sistema, administra el acceso a los archivos y el inicio o la suspensión de las tareas de los usuarios.
La comunicación con el sistema UNIX se da mediante un programa de control llamado SHELL. Este es un lenguaje de control, un intérprete, y un lenguaje de programación, cuyas características lo hacen sumamente flexible para las tareas de un centro de cómputo. Como lenguaje de programación abarca los siguientes aspectos:
– Ofrece las estructuras de control normales: secuenciación, iteración condicional, selección y otras.
– Paso de parámetros.
– Sustitución textual de variables y Cadenas.
– Comunicación bidireccional entre órdenes de shell.
El shell permite modificar en forma dinámica las características con que se ejecutan los programas en UNIX:
Las entradas y salidas pueden ser redireccionadas o redirigidas hacia archivos, procesos y dispositivos;
Es posible interconectar procesos entre sí.
Diferentes usuarios pueden "ver" versiones distintas del sistema operativo debido a la capacidad del shell para configurar diversos ambientes de ejecución. Por ejemplo, se puede hacer que un usuario entre directamente a su sección, ejecute un programa en particular y salga automáticamente del sistema al terminar de usarlo.
El núcleo del Sistema Operativo
El núcleo del sistema operativo Unix (llamado Kernel) es un programa escrito casi en su totalidad en lenguaje C, con excepción de una parte del manejo de interrupciones, expresada en el lenguaje ensamblador del procesador en el que opera.
Las funciones del núcleo son permitir la existencia de un ambiente en el que sea posible atender a varios usuarios y múltiples tareas en forma concurrente, repartiendo al procesador entre todos ellos, e intentando mantener en grado óptimo la atención individual.
El Kernel opera como asignador de recursos para cualquier proceso que necesite hacer uso de las facilidades de cómputo. Es el componente central de Unix y tiene las siguientes funciones:
– Creación de procesos, asignación de tiempos de atención y sincronización.
– Asignación de la atención del procesador a los procesos que lo requieren.
– Administración de espacio en el sistema de archivos, que incluye: acceso, protección y administración de usuarios; comunicación entre usuarios v entre procesos, y manipulación de E/S y administración de periféricos.
– Supervisión de la transmisión de datos entre la memoria principal y los dispositivos periféricos.
El Kernel reside siempre en la memoria central y tiene el control sobre la computadora, por lo que ningún otro proceso puede interrumpirlo; sólo pueden llamarlo para que proporcione algún servicio de los ya mencionados. Un proceso llama al Kernel mediante módulos especiales conocidos como llamadas al sistema.
El Kernel consta de dos artes principales: la sección de control de procesos y la de control de dispositivos. La primera asigna recursos, programas, procesos y atiende sus requerimientos de servicio; la segunda, supervisa la transferencia de datos entre la memoria principal y los dispositivos periféricos. En términos generales, cada vez que algún usuario oprime una tecla de una terminal, o que se debe leer o escribir información del disco magnético, se interrumpe al procesador central y el núcleo se encarga de efectuar la operación de transferencia.
Cuando se inicia la operación de la computadora, debe cargarse en la memoria una copia del núcleo, que reside en e] disco magnético (operación denominada bootstrap). Para ello, se deben inicializar algunas interfaces básicas de hardware; entre ellas, el reloj que proporciona interrupciones periódicas. El Kernel también prepara algunas estructuras de datos que abarcan una sección de almacenamiento temporal para transferencia de información entre terminales y procesos, una sección para almacenamiento de descriptores de archivos y una variable que indica la cantidad de memoria principal.
A continuación, el Kernel inicializa un proceso especial, llamado proceso 0. En general, los procesos se crean mediante una llamada a una rutina del sistema (fork), que funciona por un mecanismo de duplicación de procesos. Sin embargo, esto no es suficiente para crear el primero de ellos, por lo que el Kernel asigna una estructura de datos y establece apuntadores a una sección especial de la memoria, llamada tabla de procesos, que contendrá los descriptores de cada uno de los procesos existentes en el sistema.
Después de haber creado el proceso 0, se hace una copia del mismo, con lo que se crea el proceso 1; éste muy pronto se encargará de "dar vida" al sistema completo, mediante la activación de otros procesos que también forman parte del núcleo. Es decir, se inicia una cadena de activaciones de procesos, entre los cuales destaca el conocido como despachador, o scheduler, que es el responsable de decidir cuál proceso se ejecutará y cuáles van a entrar o salir de la memoria central. A partir de ese momento se conoce el número 1 como proceso de inicialización del sistema, init.
El proceso init es el responsable de establecer la estructura de procesos en Unix. Normalmente, es capaz de crear al menos dos estructuras distintas de procesos: el modo monousuario y el multiusuario. Comienza activando el intérprete del lenguaje de control (Shell) en la terminal principal, o consola, del sistema y proporcionándole privilegios de "superusuario". En la modalidad de un solo usuario la consola permite iniciar una primera sesión, con privilegios especiales, e impide que las otras líneas de comunicación acepten iniciar sesiones nuevas. Esta modalidad se usa con frecuencia para revisar y reparar sistemas de archivos, realizar pruebas de funciones básicas del sistema y para otras actividades que requieren uso exclusivo de la computadora.
Init crea otro proceso, que espera pacientemente a que alguien entre en sesión en alguna línea de comunicación. Cuando esto sucede, realiza ajustes en el protocolo de la línea y ejecuta el programa login, que se encarga de atender inicialmente a los nuevos usuarios. Si la clave del usuario, y la contraseña proporcionadas son las correctas, entonces entra en operación el programa Shell, que en lo sucesivo se encargará de la atención normal del usuario que se dio de alta en esa terminal.
A partir de ese momento el responsable de atender al usuario en esa terminal es el intérprete Shell.
Cuando se desea terminar la sesión hay que desconectarse de Shell (y, por lo tanto, de Unix), mediante una secuencia especial de teclas (usualmente. < CTL > – D). A partir de ese momento la terminal queda disponible para atender a un nuevo usuario.
CAPITULO II
MANIPULACIÓN Y USO DE LOS COMANDOS.
El Sistema Operativo Unix
La forma de trabajo es similar a otros sistemas operativos: introduce un comando; el Shell (intérprete de comandos) lo reconoce y solicita al Kernel del Sistema Operativo (Núcleo) la ejecución de la acción, el Kernel realiza la acción indicada verificando su autoridad y retornando o bien la ejecución de lo solicitado o un mensaje de error en caso de no ser posible.
Sistema de Archivo:
El sistema operativo posee un sistema de archivos donde se puede almacenar la información en elementos llamados archivos o ficheros. La organización de éste es llamado "sistema de archivo jerárquico" o "sistema de archivo en forma de árbol".
Un tipo especial de archivo es el llamado directorio, el cual contiene una lista de archivos y punteros hacia donde ellos se encuentran. Un directorio a su vez puede tener directorios (subdirectorios). En Unix existe SOLO UN DIRECTORIO PRINCIPAL llamado root y se identifica por / (barra inclinada hacia la derecha) y este contiene un conjunto de directorios estándares tal como /bin, /dev, /etc., /lib, /tmp, /usr, /var, /opt, /home, etc. donde cada uno de ellos contiene comandos o subdirectorios específicos para determinadas acciones del sistema y del usuario.
Cada usuario en particular posee un directorio donde puede realizar su trabajo y donde él es el dueño absoluto (generalmente se encuentra en /home/nombre _ usuario o en alguna jerarquía similar). Todos los usuario de un SO Unix son iguales ante el sistema (igual privilegio y condiciones) excepto un usuario llamado root que es quien tiene posibilidad de realizar tareas administrativas (crear usuario, destruirlos, etc.) y por lo tanto posee privilegios especiales. Los usuarios normales pueden generalmente mirar todo los subdirectorios de SO, pero otras tareas como modificar/borrar están prohibidas en su mayoría para preservar la ejecución del operativo.
Conexión al sistema:
Esta actividad se llama login y permite al usuario identificarse ante la máquina. Primero se debe establecer una conexión con ella a través de un emulador de terminal, el cual es un programa que se ejecuta en un PC y permite que el teclado y display del PC sirvan para la interacción con el SO Unix que se está ejecutando en una máquina remota (llamada máquina host).
Ejemplos típicos de estos programas son: telnet (de dominio público y libre distribución – para dos), qvtnet (shareware, probar y si gusta pagar – para windows 3.11), ewan (para windows 3.11, pub. domain, libre de copiar), etc… Verifique cual de ellos tiene instalado en el aula y utilice el que más le agrade. Siempre en la conexión es necesario indicarle al emulador de terminal cual es el nombre de la máquina host a la cual uno se quiere conectar.
Realizada esta acción el sistema host le responderá con un mensaje de bienvenida y algo como login: al cual contestará con el nombre de usuario que le ha sido asignado. Para verificar su identidad el sistema solicitará la palabra clave de acceso password: y Usted deberá introducir la que le han asignado por primera vez. Se debe tener en cuenta que Unix responde a caracteres mayúsculas y minúsculas por lo tanto sea cuidadoso al ingresar su nombre de usuario y password tal como se lo han dado.
Si estos pasos han sido satisfactorios, el sistema podrá darle (o no) algunos mensajes de entrada y el shell le indicará a través del prompt que está disponible y a la espera de que le introduzca órdenes (comandos) (el prompt es diferente según el shell que posea: $, %, etc.)
*COMANDOS SIMPLES DE UNIX
Todos los comandos Unix son en minúsculas! (y sin los: con los cuales aparecen aquí) y además todos tienen el mismo formato: nombre_cmd -opciones archivos_si_los_hay (el nombre puede tener de 2 a 5 caracteres pero generalmente son las consonantes del verbo en inglés de la acción a realizar excepto los comandos peligrosos que incrementan su número de caracteres).
passwd: permite cambiar la palabra clave de acceso, vigile que no sea obvia, que Ud. se acuerde para la próxima vez que desee entrar y preste atención a las mayúsculas y minúsculas que pone.
Generalmente el sistema obliga a caracteres alfabéticos y caracteres especiales (al menos uno como. _ Dígito). Además para que Ud. este seguro le pedirá que lo repita antes de hacerlo efectivo. El passwd lo puede cambiar tantas veces como quiera pero existe un máximo de días para trabajar con el mismo passwd luego el SO le obligará a cambiarlo de lo contrario no lo dejará acceder.
Pwd: (print working directory) imprime el directorio donde estamos situados (actual).
CD: (change directory) cambia de directorio. Unix permite identificar los directorios padre e hijo por… y. como abreviaturas, por lo que el comando CD… Permite pasar al directorio superior (padre).
Ls: (list) permite listar el contenido de un directorio. Admite diferentes opciones: -l form. Largo, -a lista todos, -d sólo directorios, -s sólo tamaño, etc.
Chmod: permite cambiar los permisos de lectura(r), escritura (w), ejecución(x) de un archivo/directorio. Unix reconoce tres grupos de usuarios: dueño (owner) del archivo/dir, grupo (group) y resto (public) y por cada arch/dir existen 9 bits (rwxrwxrwx) que indican qué está permitido para el dueño-grupo-resto hacer con ese archivo (estos bits se pueden visualizar con ls -l) por ejemplo rw-r–r– indicará: dueño lee-escribe, grupo-resto sólo lee. Para cambiarlo existen diferentes formas pero la más sencilla es considerar los bits agrupados de tres en tres y el siguiente código (valor octal de los bits): 7 significa rwx, 6 rw-, 5 r-x, 4 r–, 3 -wx, 2 -w-, 1 –x, 0 —, por lo cual para poner el código anterior (rw-r–r–) será chmod 644 nombre_del_fichero.
Chown y chgrp: permiten cambiar el dueño de un fichero y su grupo. Cuidado con esta opción pues si le cambiamos el dueño a un fichero luego no podremos recuperar el antiguo (sólo lo puede hacer el nuevo), además sólo podemos cambiar el dueño a nuestros ficheros.
Vi: (visual editor) editor de textos en modo pantalla (ver guía rápida de caracteres de control).
Man: (manuals) manuales interactivos de Unix, para utilizarlos poner man nombre_del_comando.
Cat: (concatenate) permite concatenar ficheros o ver su contenido (1 o más).
Cp: (copy) permite copiar ficheros.
Date: da información sobre hora y fecha.
DF: (disk free) información sobre espacio de disco libre.
Du: (disk usage) información sobre espacio de disco ocupado.
Find: busca archivos en el árbol de directorios.
Mail: permite enviar mensajes a otros usuarios sobre la misma máquina o sobre otras máquinas.
Mkdir: (make directory) crea directorios.
More, page: visualizador del contenido del fichero (más agradable que el cat).
Mv: (move) permite mover ficheros o renombrar.
Rm, rmdir: (remove) borra fichero / borra directorios (rm -r borra fich./dir.)
Who: permite ver quién está conectado (whoami indica quien soy).
W: permite ver quien esta conectado y qué hace.
PS: (process status) permite ver los procesos que está ejecutando el SO.
Cal: (calendar) imprime un calendario.
Clear: borra el display de la terminal (si está bien configurado el emulador)
Compress, uncompress: compacta/descompacta archivos.
DC: (desk calculator) calculadora.
Diff: (different) permite comparar dos archivos.
Env: (environmnet) imprime el entorno (variables).
Expr: (expression) evalúa argumentos de una expresión.
Exit: Se desconecta (termina la sesión activa). Idem que ^D.
File: imprime el tipo de fichero que es (ejecutable/texto/archivo de C/etc.).
Grep: busca un patrón en un archivo.
Kill: elimina un proceso de ejecución.
LN: (link) genera un link a un fichero.
Lp: (line printer) envía un fichero a imprimir (si la impresora está habilitada) (lpstat información sobre las impresoras conectadas).
Mesg: habilita/deshabilita los mensajes de otros usuarios sobre el terminal (se envían con write).
Nice: ejecuta los comandos con baja/alta prioridad.
Nohup: (no hangup) permite ejecutar un comando aún después de desconectarse de la máquina.
Quota: muestra el espacio de disco restante del total asignado.
Sed: stream editor.
Awk: procesamiento de patrones y lenguaje incluido.
Ftp: (file transfer protocol) permite transferir ficheros entre diferentes máquinas.
Telnet: permite comunicarse con otras máquinas en forma interactiva.
Sleep: suspende la atención por un determinado tiempo.
Sort: ordena por campos.
Su: reemplaza la identidad de un usuario temporalmente.
Tail: permite ver el contenido de un archivo comenzando por el final.
Tar: (tape archiver) agrupa ficheros/directorios en un único fichero.
Tee: permite que una salida de un comando sea dirigida a dos sitios simultáneamente.
Test: evalúa condiciones.
Users: lista los usuarios del sistema.
Wc: (word count) cuenta caracteres/campos/etc.
Write: envía mensajes a usuarios que se encuentren conectados.
CUT: permite eliminar campos de una línea de entrada.
Head: envía mensajes a usuarios que se encuentren conectados.
- LS Y SUS DIFERENTES USOS
–Descripción de ls
Ls Imprime información relativa a los archivos de un directorio.
-Opciones de ls
Ls -a
Lista todas las entradas de un directorio, incluso aquellas que comienzan con un punto.
Ls -A
Es igual al anterior, a excepción de aquellas cuyo nombre completo es "." y ".."
Ls -b
Fuerza la impresión de caracteres no representables en notación octal (ddd)
Ls -q
Fuerza la impresión de caracteres no representables en el nombre de archivos, como son los siguientes signos (!?)
Ls -t
Realiza una clasificación cronológica, en lugar de alfabética. Por defecto utiliza la fecha de la última modificación del archivo o directorio.
Ls -d
En caso que un argumento sea un directorio, la opción -d muestra su contenido.
Ls -f
Considera cada nombre como un directorio, listando en su orden de ocurrencia
Ls -l
Imprime en formato de máxima información.
Ls -g
Imprime en formato de máxima información, pero sin especificar la identidad del propietario
Ls -n
Imprime en formato de máxima información, pero especificando los valores correspondientes a la identidad del propietario y del grupo, en vez de los nombres de éstos.
Ls -o
Imprime en formato de máxima información, pero sin especificar la identidad del grupo
Ls -i
Imprime el número del modo como primer campo y el nombre del archivo o directorio
Ls -m
Imprime los nombres de los archivos en una sola línea, separados por comas
Ls -p
Imprime una barra inclinada (/) a continuación de cada nombre, si corresponde a un directorio
Ls -F
Imprime una barra inclinada (/) a continuación de cada nombre, si corresponde a un directorio y un asterisco (*) si es un archivo ejecutable
Ls -L
Imprime un signo mayor que (>) a continuación de cada nombre, si corresponde a un enlace simbólico
Ls -r
Invierte el orden de clasificación, ya sea alfabético o cronológico
Ls -s
Imprime el tamaño de bloques de cada anotación, incluyendo los bloques indirectos
Ls -x
Imprime en formato de multicolumna, ordenados los nombres por columna y luego por línea
Ls -C
Imprime en formato multicolumna, los nombres ordenados por línea y luego por columna
Ls -R
Imprime recursivamente los subdirectorios encontrados
Ls -1
Lista solo un archivo por línea, aunque la salida sea un terminal
*CD Y SUS DIFERENTES APLICACIONES
–Descripción de CD
CD cambiarse a directorio de usuario.
Cd << nombre-directorio >> Cambiese a directorio indicado.
Cd.. cambiase a directorio de nivel padre
Cd../cambiese a directorio hermano
Ejemplos
1.- Si me encuentro en mi direccionamiento principal o Home, supongamos que me encuentro en el siguiente posicionamiento: /usr/camucet/Documentos si ejecuto el comando:
Cd
Voy a encontrarme después en /usr/camucet, que es mi direccionamiento principal
2.- Si deseo regresar al directorio Documentos, ejecuto lo siguiente:
Cd Documentos
Después de hacer esto, voy a encontrarme posicionada en /usr/camucet/Documentos
3.- Veamos el siguiente caso, yo estoy posicionada en el siguiente lugar: /usr/camucet/Documentos/unix
Cd..
Voy a quedar ubicada en /usr/camucet/Documentos
4.- Y por ultimo, me enuentro en /usr/camucet/Documentos/Unix
Cd../tcl
Ahora estoy en /usr/camucet/Documentos/tcl
*COMANDOS MÁS COMUNES
1. Comandos para el manejo de directorios y archivos
He supuesto vuestro previo conocimiento, de qué es un directorio y archivo, si necesitas información sobre ello, por tu calidad de neófito o principiante, por favor anda a la siguiente introducción básica de este breve torpedo.
La clasificación en sencillos y complejos es en el grado de concentración que éstos requieren al ser ejecutados, porque cuando no se sabe lo que se está haciéndose, muchas veces genera situaciones que se escapan de control por nuestra falta de conocimientos y práctica.
Comandos sencillos
Cd pwd cp ls mkdir cat
Descripción de pwd
Pwd Nos ayuda a saber, donde estamos posicionados, esto permite conocer el directorio activo o de trabajo
Ejemplo
Siguiendo el caso anterior, si de repente uno necesita saber donde está posicionado,
Pwd
Y esto le imprimirá lo siguiente en la pantalla /usr/camucet/Documentos
Descripción de cp
Cp Copia archivos dentro de un mismo directorio o en otro directorio. En este último caso se puede escoger entre conservar el nombre, o bien cambiarlo.
Opción de cp
Cp -r Se usa para copia recursiva de directorios
Ejemplos de Uso del comando cp
Veamos los siguientes casos:
1.- Desde un archivo1 a otro archivo2, ubicados en el mismo directorio
Cp archivo-origen archivo-destino
2.- Desde un archivo a otro directorio distinto
Cp archivo-origen Directorio-destino
3.- Desde un directorio a otro directorio que se creara al momento de la copia
Cp -r Directorio-origen Nuevo-Directorio-destino
4.- Desde un directorio a un Directorio que existe
Cp -r Directorio-origen Directorio-destino
En este caso: Directorio, quedara copiado bajo Directorio1
Ejemplo
1.- cp cobranza1 cobranza2
2.- cp cobranza1 PAGADO
3.- cp -r PAGADO CANCELADO
4.- cp -r DESPACHADO PAGADO
Ejemplos de Uso del comando ls
Ejemplo
Comando ls: ARCHIVO DOCUMENTOS carta1.fm carta2.fm documento1.doc documento2.doc script-ordena1 script-junta1
Descripción de mkdir
Mkdir Con este creamos directorios
Opción de mkdir
Mkdir Con este se crean directorios.
Mkdir -p Con este es posible crear directorios intermedios
Mkdir -m Con este es posible otorgar proteccion al archivo para su lectura o escritura.
Ejemplos de Uso del comando mkdir
Veamos los siguientes casos:
1.- Crear un directorio
Mkdir nombre-directorio
2.- Crear un directorio dentro de otro que ya existe
Mkdir -p nombre-directorio1/nombre-directorio2
3.- Desde un directorio a otro directorio que se creara al momento de la copia
Mkdir -m usg nombre-directorio
Ejemplo
1.- mkdir DOCUMENTOS
2.- mkdir -p DOCUMENTOS/CARTAS
3.- mkdir -m 700 DOCUMENTOS
Descripción de cat
cat Con este podemos ver archivos, también se pueden crear archivos o bien podemos concatenar archivos
Opción de cat
Cat Con este podemos ver el contenido de un archivo.
Cat > Es posible crear un archivo y comenzar a tipearlo.
Cat -b Muestra un archivo, indicando sus números de líneas sin numerar aquellas que se encuentran vacías y que son de espacios, esto selecciona automáticamente la opción "-n".
Cat -e Muestra el archivo, marcando su fin de línea con el signo $, esto selecciona automáticamente la opción "-v".
Cat -n Muestra el archivo, con todas sus líneas numeradas secuencial mente de 1 en 1, comienza desde el número 1.
Cat -r Reemplaza varias líneas vacías consecutivas por una sola línea.
Cat -s Con esta opción suprimimos todos los mensajes de error, sobre archivos no existentes, nombre idénticos tanto de entrada como salida.
Cat -t Muestra un archivo, indicando el uso de los tabuladores mostrándolos con los signos ^I, esto selecciona automáticamente la opción "-v".
Cat -u Deshabilita el uso del buffer y usamos el manejo de carácter por carácter.
Cat -v Muestra el archivo, con los signos de $, ^I, ^?, es lo que se llama con sistema hablador (verboseé), muestra todo los códigos que está usando el archivo, puede resultarnos in leíble o incomprensible.
Ejemplos de Uso del comando cat
Veamos los siguientes casos:
1.- Lee y abre un archivo.
Cat nombre-archivo
2.- Crear un archivo nuevo, (se termina con ctrl+Z).
Cat > archivo-destino
3.- Abrir un archivo, numerando todas las líneas, menos las de espacio.
Cat -b nombre-archivo
4.- Lee y abre el archivo mostrándome cada fin de línea con un signo $.
Cat -e nombre-archivo
5.- Lee y Abre un archivo, numerando todas las líneas.
Cat -n nombre-archivo
6.- Lee y abre el archivo eliminando todas las líneas de espacio redundantes.
Cat -r nombre-archivo
7.- Lee y abre el archivo omitiendo sus mensajes de error.
Cat -s nombre-archivo
8.- Lee y abre el archivo mostrándome cada tabulación con el signo ^I.
Cat -t nombre-archivo
9.- Lee y abre el archivo sin ponerlo en un buffer, lo maneja carácter por carácter.
Cat -u nombre-archivo
10.- Lee y abre el archivo, entregando la mayor información posible, es el estado hablador (verbose), identificando varios tipos de caracteres.
Cat -v nombre-archivo
11.- Concatena uno o dos archivos en el primer archivo.
Cat archivo1 archivo2 > archivo1
12.- Concatena uno o dos archivos a un tercer archivo.
Cat archivo1 archivo2 > archivo3
Ejemplos
1.- cat carta1
2.- cat > carta2
3.- cat -b carta1
*CLASIFICACIÓN DE ARCHIVOS
Archivo de inicialización. Se lee al comienzo de cada ejecución del shell (No es estándar, algunos operativos no lo tienen). Pertenece al usuario. /etc/cshrc Idem anterior, se ejecuta antes que .cshrc y pertenece al sistema. /etc/.login Se lee antes que .cshrc y después de /etc/cshrc. /etc/csh.cshrc Se lee antes de .cshrc y después de /etc/.login. ~/.login Se lee después de .cshrc. ~/.logout Se lee al salir. ~/.history Historia salvada para la próxima conexión.
Las palabras no pueden tener más de 1024 caracteres. El sistema limita la lista de argumentos a 1,048, 576 caracteres. Sin embargo el número de argumentos donde una expansión de nombre se aplica es 1706. Para detectar lazo el shell restringe el número de alias sobre una línea a 20.
*CLASIFICACION DE SISTEMA DE ARCHIVOS EN UNIX
Un archivo se puede definir como un conjunto de datos con un nombre asociado. Los archivos suelen residir en dispositivos de almacenamiento secundario tales como cintas, discos duros o discos flexibles. Algunos sistemas operativos imponen a los archivos una estructura determinada bien definida. Este no es el caso de UNIX, donde un archivo no es más que una secuencia de bytes (8bits).
Un sistema de archivos se debe entender como aquella parte del sistema responsable de la administración de los datos en dispositivos de almacenamiento secundario. Por lo tanto, es el sistema de archivos el que debe proporcionar los medios necesarios para un acceso y almacenamiento seguro y privado de la información.
-Estructura del sistema de archivos
En UNIX los archivos están organizados en lo que se conoce como directorios. Un directorio no es más que un archivo especial, el cual contiene información que permite localizar en el dispositivo otros archivos. Los directorios pueden contener a su vez nuevos directorios, los cuales se denominan subdirectorios. A la estructura resultante de esta organización se la conoce con el nombre de estructura en árbol invertido. Un ejemplo típico de árbol de directorios UNIX lo tenemos representado en la figura 2.1:
Figura 2.1
- Directorio raíz (/)
Todos los archivos y directorios dependen de un único directorio denominado directorio raíz o root, el cual se representa por el símbolo /. En el caso de que en el sistema tengamos varios dispositivos físicos de almacenamiento secundario (normalmente discos), todos deben depender del directorio raíz, y el usuario tratará cada uno de los discos como un subdirectorio que depende del directorio raíz (root).
- 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:~$ pwd /users/so/so00
En este ejemplo, el directorio "." y ".." serían respectivamente /users/so/so00, y /users/so.
- 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.
Ejemplo: /usr/bin/troff
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:
1. 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, programa.c.primera_version, base_datos.1992
Expansión de nombre de archivo: caracteres comodines 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 carácter 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 Apis:~$ lp ab* # imprime los archivos que empiecen por ab
? Representa cualquier carácter.
Apis:~$ 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 b
Aparte del carácter 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 comodines son los siguientes:
Utilizando el carácter se pueden escapar caracteres individualmente.
Cuando se quiere escapar cadenas completas se recurre a encerrarlos entre comillas’. Archivos y directorios
Uno de los – Fichero "normal" : Es algo que , referido a un nombre , contiene una secuencia determinada de caracteres (bytes). El sistema operativo no impone ningún tipo de formato ni de registro. Ejemplos de ficheros "normales" puede ser el que nos creamos con algún editor, conteniendo un documento. Por ejemplo, el fichero "/etc/motd" es un fichero cuyo contenido es el mensaje del día . Si ejecutam os el comando "cat" (ver el contenido de un fichero),
Podemos crear un archivo de múltiples formas; utilizando un editor , mediante un programa o utilizando algún comando. Únicamente se tendrá en cuenta, a la hora de escoger nombres para los ficheros, las siguientes reglas:
– El nombre no podrá exceder de 255 letras (14 en versiones UNIX anteriores a la R2.1)
– Utilizar caracteres "normales" (Si bien se puede usar cualquier carácter , desechar aquellos que no sean A-Z /a-z / 0-9) Especial atención merecen aquellos ficheros cuyo primer carácter es el punto " ;." , ya que se consideran "ocultos" en la medida en que determinados comandos , al detectar este hecho , los ignoran.
– Vamos a crear un fichero cuyo contenido sea "hola" :
$ echo "hola" > tonto
$
(… parece que no ha ocurrido nada…)
$ cat tonto
hola
$
(Efectivamente – ahora, el comando "ls" nos da un listado de los ficheros)
$ ls
tonto
$ ls -a
.
..
tonto
.profile
$
¡Ahora parece que el fichero "tonto" ha criado! Lo que ocurre es que estamos en nuestro directorio de trabajo , y ahí existe desde el principio un fichero "oculto" (el .profile) el cual sólo podemos listar utilizando la opción "-a" (all) del ls. Además de esto, aparecen el "punto" (.) y el "punto-punto" , sinónimos de "directorio actual" y "directorio anterior".
Primero , vamos a ver en qué directorio estamos , para lo cual emplearemos el comando "pwd" (Print Working Directory).
$ pwd
/usr/jose
$ ls
tonto
Nuestro directorio de trabajo es "/usr/jose" y tenemos dentro del mismo el fichero "tonto" . Utilizando los conceptos de "." y ".." , podemos ejecutar el comando "ls" pasando los mismos como argumentos :
$ ls . ( listar el contenido del directorio "actual" ; funciona igual que "ls" a secas )
tonto
$ ls ..
jose
paco
antonio
bin
(….)
Estamos diciendo que nos liste el "directorio anterior" , es decir , "/usr" .
Podemos hacer lo mismo cambiando al directorio anterior y ejecutando "ls" : nos cambiamos de directorio usando el comando "cd" (Change Directory) , con direccionamiento absoluto ( indicando todo el camino de subdirec torios desde el directorio "raiz" (/) :
$ cd /usr
$ pwd
/usr
$ ls
jose
paco
antonio
bin
(…)
O bien , cambiando con direccionamiento relativo , y se dice así por ser relativo al directorio donde estamos trabajando :
$ cd .. ( nos cambiamos al directorio anterior , es decir , a "/usr" )
$ pwd
/usr
ls
jose
paco
antonio
bin
(…)
Para volver a nuestro directorio "origen" (home directory) , bastaría con ejecutar el comando "cd" solo ; él vuelve siempre al mismo sitio , en este caso , a "/usr/jose" estemos donde estemos.
Si queremos crear un nuevo directorio emplearemos en camino absoluto o relativo el comando "mkdir" con el argumento "nombre_del_directorio_que_queremos_crear" . Para eliminarlo , ejecutaremos "rmdir" con el mismo argumento :
$ mkdir nuevo
$ ls
tonto
nuevo
Tenemos ahora el fichero de siempre y un directorio que se llama "nuevo". Pero escribiendo "ls" no vemos a simple vista ninguna diferencia; hay que dar la opción "-F" ó "-l" :
$ ls -F
tonto
nuevo/
$ ls -l
-rw-r–r– 1 jose sys 4 Mar 1 11:07 tonto
drw-r–r– 1 jose sys 84 Mar 1 11:07 nuevo
(la letra "d" al principio del listado largo nos indica que se trata de un directorio)
$ cd nuevo
$ pwd
/usr/jose/nuevo
(.. nos hemos cambiado al directorio nuevo ..)
$ cd ..
$ pwd
/usr/jose
( .. homes vuelto … )
$ rmdir nuevo
$ ls
tonto
( .. ! ya no está .. )
* Tipos de archivos.
Si bien UNIX no impone una estructura a ningún fichero, éstos tendrán características comunes dependiendo para lo que sirvan; podemos agrupar éstos en varios tipos :
– Ejecutables. Normalmente se trata de programas compilados y contienen código binario ininteligible para la mayoría de los humanos pero no así para la máquina. Ejemplos de estos ficheros pueden ser los ficheros "/bin/ls" , "/bin/cat/" … Todos ellos deben tener activados los permisos de ejecución que más tarde veremos.
– Binarios, englobando dentro de esta categoría aquellos que son empleados por programas capaces de entender su contenido ( un fichero indexado accesible desde COBOL , por ejemplo ) pero no legibles.
-Texto, correspondientes a aquellos ficheros que contienen registros de caracteres terminados en "nueva línea" y normalmente son legibles. Ejemplo de fichero de texto puede ser el "/etc/motd" , "/etc/pas swd" y cualquiera que haya sido confeccionado con el editor.
– Dispositivo. Cualquier fichero asignado a un dispositivo físico ; normalmente residen a partir del subdirectorio "/dev" y son ficheros de terminales , de particiones de discos , de puertos de impresora …. Dentro de ésta categoría podemos incluir el fichero especial "/dev/null" , el cual tiene como misión el que cualquier cosa que se le mande es desechada.
Cualquier fichero de tipo dispositivo puede tener dos categorías: bien de tipo "carácter" , ó "raw mode" ( lee y escribe "de golpe" ) o de tipo "bloque" ó "cooked mode" ( lee y escribe a trozos según el tamaño de buffer que tenga asignado).
Si se tienen dudas acerca del tipo de fichero, podemos ejecutar el comando "file <nombre_del_fichero>.
$ file /bin/ls
/bin/ls: ELF 32-bit MSB executable M88000 Version 1
(Ejecutable dependiente del procesador 88000 de Motorola )
$ file /dev/null
Carácter especial.
Directorios del sistema.
Si bien la estructura de los directorios varía entre versiones y dialectos de UNIX , podemos mencionar algunos de los más representativos :
/bin,/usr/bin,/usr/sbin,/usr/ucb: Directorios de programas ejecutables . Es aquí donde se mantienen la mayoría de los comandos (/bin/ls , /bin/vi , /usr/bin/chmod … )
/etc : Programas y ficheros diversos : aquí residen la mayoría de los archivos de configuración y las shell-scripts de arranque y parada del equipo.
/tmp,/usr/tmp,/var/tmp : Directorios "temporales" ; el propio sistema operativo los usa como almacenamiento intermedio en muchas de sus tareas ; normalmente , todo el contenido de éstos directorios se borra al apagar el equipo.
/home,/usr/acct,/var/acct : Directorios de usuarios.
/var/adm,/usr/adm : Directorios de administración : programas de administrador , ficheros con informaciones de la paquetería instalada y demás.
/usr/log, /var/log : Directorios para ficheros de "log" de sistemas y de programas . Normalmente, existirá un fichero "console" con toda la información que se desvía a la consola del sistema, y varios ficheros informativos, de advertencia y de errores del sistema.
/lib,/usr/lib : Directorios de archivos de librería.
/usr/spool : Directorios de spool de ficheros de impresión (/usr/spool/lp) , de comunicaciones (/usr/spool/uucp) y demás.
/usr/mail : En éste directorio se halla el correo de todos los usuarios.
/usr/preserve,/var/preserve : Aquí se guardan todas las copias de ficheros incompletamente terminados por los editores de UNIX.
/dev : Directorio de ficheros de dispositivos.
/usr/games : Juegos. Casi nunca están instalados.
Resumen del editor de pantalla "vi" .
Vi es un editor de pantalla completa creado en el UNIX de Berkeley y extendido más tarde a todos los demás dialectos.
La ventaja de éste editor radica en su compatibilidad con el resto de herramientas de edición UNIX.
Vi contempla, una vez iniciada la sesión con él, dos modos:
– Modo comando: es el modo en el que arranca por defecto. Vale para dar comandos tales como: leer un fichero , escribir un fichero , búsqueda o sustitución de caracteres dentro del texto actual …
Este modo es al que se vuelve siempre, pulsando la tecla <ESC>.
– Modo inserción/reemplazo: es el que se usa para escribir caracteres. Se entra a este modo desde el modo comando pulsando la letra " i ".
Desde el modo comando, podemos pasar también a modo inserción escribiendo las siguientes letras :
– i : Pasar a modo inserción , delante de la posición del cursor.
– a: Igual , pero detrás de la posición del cursor.
– I : Pasar a modo inserción ,pero empezando a insertar al principio de la línea donde se esté.
– A : Igual , pero empezando al final de la línea donde se esté.
– o : Pasar a modo inserción, pero abriendo una línea nueva debajo de donde se esté.
– O : Igual , pero la línea nueva se abre arriba.
– <ESC>: Pasar a modo comando.
– Backspace: Borra la última letra escrita.
– <Control>v: Identifica el carácter que vamos a escibir a continuación como un caracter especial, es decir , un escape , o salto de hoja (^L) , ó cualquier carácter ascii entre el 1 y el 31. ( 1=^A , 2=^B …..).
Pasando a modo comando, podemos emplear las siguientes secuencias para movernos por el texto:
– ^: Ir al principio de la línea.
– $: Ir al final de la línea.
– l,h: Izquierda / derecha.
– j,k: Abajo / Arriba.
– ^F (Control + F ): Una pantalla adelante.
– ^B (Control + B ): Una pantalla atrás.
– ^G (Control +G): Enseña el número de línea donde estamos posicionados.
– 1G: Al principio del todo.
– G: Al final del todo.
– /<cadena>: Busca <cadena> desde la línea actual hasta el final del texto.
– / Sigue buscando más ocurrencias de la cadena.
-?<cadena>: Busca <cadena> desde la línea actual para atrás.
-? Sigue buscando más ocurrencias, para atrás.
-ZZ Grabar y salir.
-dd: Borrar la línea donde se esté.
-J: Juntar la línea donde se esté y la de abajo.
-r: Reemplaza una sola letra.
-R: Reemplaza todo hasta que se pulse <ESC> .
-yy: yank/yank: Marca la línea actual.
-p: Copia la línea marcada despues del cursor.
-P: Copia la línea marcada antes del cursor.
-.: Repite el último cambio.
-u Undo (anula el último cambio)
-U Undo , pero en la línea actual.
Ordenes de "dos puntos" : Al pulsar en modo comando el carácter ":" , el cursor se baja a la última linea y el editor saca los dos puntos en espera de que le demos algún comando de estos. Salimos de aquí pulsando <ESC> .Algunos son :
:wq! (write/quit)Grabar y salir.
:w! <nombre_fichero> (write) Graba el texto en <nombre_fichero>.
:r <nombre_fichero> (read) Incluye el fichero como parte del texto en edición.
:!<comando> Ejecutar <comando> . Vuelve al terminar el comando.
:<número de línea> Ir a <número de línea>.
:q! (quit) Salir sin grabar.
:se nu
:se nonu Numera las líneas.(set number,set nonumber-pone y quita).
:1,5de Borra desde la 1 a la 5.
:1,5co20 Copia desde la 1 a la 5 a partir de la línea 20.
:1,5mo20 Igual, pero mueve.(desaparece desde la línea 1 a la 5).
:g/XXX/s//YYY/g Cambia en todo el texto XXX por YYY.
Hay muchísimos más comandos, pero para ir tirando, con éstos son suficientes.
Página siguiente |