- 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 |