Your SlideShare is downloading. ×
eman ta zabal zazu               Universidad     Euskal herriko              del país vasco   Unibertsitatea     COMANDOS ...
Sistema Operativo UNIX                                                                pág iINDICE1.         INTRODUCCIÓN _...
pág ii                                                                     Sistema Operativo UNIX       5.5.1    INTRODUCC...
Sistema Operativo UNIX                                                              pág iii    10.4.1 LA CONSTRUCCIÓN if _...
Sistema Operativo UNIX                                                                 pág 11.   INTRODUCCIÓN1.1 SISTEMAS ...
pág 2                                                                  Sistema Operativo UNIXEl UNIX AT&T es el UNIX stand...
Sistema Operativo UNIX                                                                 pág 32.   ACCESO AL SISTEMA Y COMAN...
pág 4                                                                   Sistema Operativo UNIX2.2 FORMATO DE COMANDOSUna v...
Sistema Operativo UNIX                                                                pág 5Un argumento es “aquello” sobre...
pág 6                                                                    Sistema Operativo UNIX• who:     este comando ind...
Sistema Operativo UNIX                                                                 pág 73.   FICHEROS3.1 CONCEPTO Y TI...
pág 8                                                                         Sistema Operativo UNIX3.2 EL SISTEMA DE FICH...
Sistema Operativo UNIX                                                                             pág 93.3 MANIPULACIÓN D...
pág 10                                                                    Sistema Operativo UNIX∗ touch: Si no existe el f...
Sistema Operativo UNIX                                                                   pág 11       $ ln dir1 dir2      ...
pág 12                                                                     Sistema Operativo UNIXEl permiso de lectura se ...
Sistema Operativo UNIX                                                                  pág 13En la siguiente tabla se pre...
pág 14                                                                     Sistema Operativo UNIX4.   COMUNICACIONES ENTRE...
Sistema Operativo UNIX                                                                  pág 15         s F1:     el mensaj...
pág 16                                                                  Sistema Operativo UNIX5.   EDITORESLa familia de e...
Sistema Operativo UNIX                                                                pág 17libro. Cada editor tiene una ú...
pág 18                                                                  Sistema Operativo UNIX5.4.1 PARA EMPEZAR EN viAunq...
Sistema Operativo UNIX                                                                  pág 195.4.3 EL MODO TEXTOTrabajare...
pág 20                                                                  Sistema Operativo UNIXEn cada uno de los casos, se...
Sistema Operativo UNIX                                                                pág 21                              ...
pág 22                                                                    Sistema Operativo UNIXestos operadores facilitan...
Sistema Operativo UNIX                                                                 pág 23Se suele aceptar como conveni...
pág 24                                                                   Sistema Operativo UNIX/buenos díasSi la primera a...
Sistema Operativo UNIX                                                                     pág 25p                        ...
pág 26                                                                  Sistema Operativo UNIXcolocación (yank y put) comb...
Sistema Operativo UNIX                                                                pág 27utilizan de nuevo las comillas...
pág 28                                                                   Sistema Operativo UNIX:g/e/s//#/gsustituye todas ...
Sistema Operativo UNIX                                                                   pág 295.5.4 LOCALIZACIÓN DE LÍNEA...
pág 30                                                                   Sistema Operativo UNIX3,8dborra todas las líneas ...
Sistema Operativo UNIX                                                                   pág 31/eso /encontrará “eso” y "b...
pág 32                                                                      Sistema Operativo UNIX5.5.8 EL COMANDO DE SUST...
90383990 comandos-basicos-unix
90383990 comandos-basicos-unix
90383990 comandos-basicos-unix
90383990 comandos-basicos-unix
90383990 comandos-basicos-unix
90383990 comandos-basicos-unix
90383990 comandos-basicos-unix
90383990 comandos-basicos-unix
90383990 comandos-basicos-unix
90383990 comandos-basicos-unix
90383990 comandos-basicos-unix
90383990 comandos-basicos-unix
90383990 comandos-basicos-unix
90383990 comandos-basicos-unix
90383990 comandos-basicos-unix
90383990 comandos-basicos-unix
90383990 comandos-basicos-unix
90383990 comandos-basicos-unix
90383990 comandos-basicos-unix
90383990 comandos-basicos-unix
90383990 comandos-basicos-unix
90383990 comandos-basicos-unix
90383990 comandos-basicos-unix
Upcoming SlideShare
Loading in...5
×

90383990 comandos-basicos-unix

841

Published on

1

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
841
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
29
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Transcript of "90383990 comandos-basicos-unix"

  1. 1. eman ta zabal zazu Universidad Euskal herriko del país vasco Unibertsitatea COMANDOS BÁSICOS UNIX (LABORATORIO DE TELEMÁTICA) INGENIERÍA DE TELECOMUNICACIÓNSISTEMA OPERATIVO UNIX DEPARTAMENTO DE ELECTRÓNICA Y TELECOMUNICACIONES ÁREA DE INGENIERÍA TELEMÁTICA
  2. 2. Sistema Operativo UNIX pág iINDICE1. INTRODUCCIÓN _____________________________________________________ 1 1.1 SISTEMAS OPERATIVOS __________________________________________________1 1.2 BREVE HISTORIA DEL SISTEMA OPERATIVO UNIX ________________________1 1.3 CARACTERÍSTICAS GENERALES DEL S.O. UNIX ___________________________12. ACCESO AL SISTEMA Y COMANDOS GENERALES_______________________ 3 2.1 USUARIOS Y ACCESO AL SISTEMA ________________________________________3 2.2 FORMATO DE COMANDOS _______________________________________________4 2.3 COMANDOS INFORMATIVOS _____________________________________________5 2.4 COMANDOS DE MENSAJE ________________________________________________63. FICHEROS __________________________________________________________ 7 3.1 CONCEPTO Y TIPOS DE FICHEROS _______________________________________7 3.1.1 DENOMINACIÓN DE FICHEROS ________________________________________________ 7 3.2 EL SISTEMA DE FICHEROS. DIRECTORIOS ________________________________8 3.3 MANIPULACIÓN DE DIRECTORIOS _______________________________________9 3.4 MANIPULACIÓN DE FICHEROS ___________________________________________9 3.5 PROTECCIONES DE FICHEROS __________________________________________114. COMUNICACIONES ENTRE USUARIOS ________________________________ 14 4.1 MAIL ___________________________________________________________________14 4.2 NEWS____________________________________________ ¡Error! Marcador no definido. 4.3 WRITE__________________________________________________________________155. EDITORES __________________________________________________________ 16 5.1 EL BUFFER DE MEMORIA _______________________________________________16 5.2 DOS MODOS DE FUNCIONAMIENTO DE EDITORES _______________________16 5.3 COMPARACION ENTRE LOS EDITORES DE LÍNEAS Y DE PANTALLA ______17 5.4 EL EDITOR vi ___________________________________________________________17 5.4.1 PARA EMPEZAR EN vi _______________________________________________________ 18 5.4.2 MOVIMIENTOS DEL CURSOR _________________________________________________ 18 5.4.3 EL MODO TEXTO____________________________________________________________ 19 5.4.4 CÓMO AÑADIR TEXTOS A UN FICHERO YA EXISTENTE_________________________ 19 5.4.5 BORRADO Y ALTERACIÓN DEL TEXTO _______________________________________ 20 5.4.6 PARA DESHACER CAMBIOS: u y U ____________________________________________ 20 5.4.7 CÓMO ABANDONAR EL EDITOR vi ____________________________________________ 20 5.4.8 OTROS COMANDOS vi _______________________________________________________ 21 5.4.9 COMANDOS DE POSICIÓN DEL CURSOR _______________________________________ 22 5.4.10 "DESPLAZAMIENTO" Y "PAGINADO" DE LA PANTALLA_________________________ 22 5.4.11 BÚSQUEDA DE PATRONES ___________________________________________________ 23 5.4.12 OPERADORES QUE BORRAN, DUPLICAN O CAMBIAN Y REORGANIZAN EL TEXTO.24 5.4.13 LOS OPERADORES YANK Y DELETE COMBINADOS CON EL COMANDO PUT ______ 25 5.4.14 BORRADO, DUPLICACIÓN Y REORGANIZACIÓN DE TEXTOS EN BUFFERS TEMPORALES ______________________________________________________________________ 26 5.4.15 OTROS COMANDOS Y PARTICULARIDADES DE vi ______________________________ 27 5.5 EL EDITOR DE LÍNEAS ex ________________________________________________28 Laboratorio de Telemática
  3. 3. pág ii Sistema Operativo UNIX 5.5.1 INTRODUCCIÓN ____________________________________________________________ 28 5.5.2 LLAMADA AL EDITOR ex_____________________________________________________ 28 5.5.3 FORMATO DE LOS COMANDOS ex ____________________________________________ 28 5.5.4 LOCALIZACIÓN DE LÍNEAS __________________________________________________ 29 5.5.5 BÚSQUEDA DE PATRONES ___________________________________________________ 30 5.5.6 DESPLAZAMIENTOS POR EL TEXTO __________________________________________ 31 5.5.7 INTRODUCCIÓN DE TEXTO EN ex _____________________________________________ 31 5.5.8 EL COMANDO DE SUSTITUCIÓN: s ____________________________________________ 326. PROCESOS Y ENTORNO _____________________________________________ 34 6.1 CONCEPTO DE PROCESO ________________________________________________34 6.2 CONCEPTO DE ENTORNO _______________________________________________34 6.3 VISUALIZACIÓN DE PROCESOS __________________________________________35 6.4 VARIABLES _____________________________________________________________357. PROGRAMACIÓN SHELL. CONCEPTOS BÁSICOS _______________________ 37 7.1 METACARACTERES _____________________________________________________37 7.2 REDIRECCIONAMIENTOS _______________________________________________38 7.3 PIPELINES ______________________________________________________________39 7.3.1 FILTROS____________________________________________________________________ 40 7.4 ASIGNACIÓN DE SALIDA DE COMANDOS A VARIABLES __________________408. PROGRAMACION SHELL. COMANDOS ________________________________ 40 8.1 COMANDO sort __________________________________________________________40 8.2 COMANDO grep _________________________________________________________41 8.3 COMANDO wc ___________________________________________________________41 8.4 COMANDO tee ___________________________________________________________42 8.5 COMANDO cut __________________________________________________________42 8.5.1 CORTE POR CARACTERES ___________________________________________________ 42 8.5.2 CORTE POR CAMPOS ________________________________________________________ 42 8.6 COMANDO pr ___________________________________________________________43 8.7 COMANDO lp ___________________________________________________________43 8.8 EL COMANDO expr ______________________________________________________439. PROGRAMACIÓN SHELL. CONTROL DE PROCESOS ____________________ 44 9.1 EJECUCIÓN DE PROCESOS EN BACKGROUND ____________________________44 9.2 PRIORIDAD DE UN PROCESO ____________________________________________45 9.3 CÓDIGO DE RETORNO __________________________________________________45 9.3.1 COMANDOS true y false _______________________________________________________ 46 9.4 EL COMANDO test _______________________________________________________46 9.4.1 EL COMANDO test CON FICHEROS COMO ARGUMENTOS ________________________ 46 9.4.2 EL COMANDO test CON NÚMEROS O CARACTERES COMO ARGUMENTOS ________ 4610. FICHEROS DE COMANDOS __________________________________________ 47 10.1 ARGUMENTOS EN LOS FICHEROS DE COMANDOS ______________________47 10.2 INTRODUCCIÓN DE DATOS A TRAVÉS DE VARIABLES __________________48 10.3 COMANDO exit ________________________________________________________49 10.4 ESTRUCTURAS DE PROGRAMACIÓN ___________________________________49 Laboratorio de Telemática
  4. 4. Sistema Operativo UNIX pág iii 10.4.1 LA CONSTRUCCIÓN if _______________________________________________________ 49 10.4.2 LA CONSTRUCCIÓN while ____________________________________________________ 51 10.4.2.1 LOS COMANDOS break y continue __________________________________________ 52 10.4.3 LA CONSTRUCCIÓN for ______________________________________________________ 53 10.4.4 LA CONSTRUCCIÓN case _____________________________________________________ 53 Laboratorio de Telemática
  5. 5. Sistema Operativo UNIX pág 11. INTRODUCCIÓN1.1 SISTEMAS OPERATIVOSUNIX es un sistema operativo. Por tanto, su función básica es, por una parte, controlar losrecursos de un computador y, por otra parte, ofrecer a los programas una interfaz másindependiente del hardware.Estos recursos se pueden clasificar, de forma muy amplia, en: ♦ La Unidad Central de Proceso (CPU). ♦ La memoria RAM de funcionamiento del computador. ♦ La memoria de almacenamiento en disco.Un sistema operativo modeliza esos recursos por medio de lo que se denomina sistema dearchivos y gestión de memoria.1.2 BREVE HISTORIA DEL SISTEMA OPERATIVO UNIXEl sistema operativo UNIX nació en los laboratorios Bell, de la compañía AT&T de EstadosUnidos, en 1.969. El padre del sistema fue Ken Thompson, con la colaboración de RuddCanaday, Doug McIlroy, Joe Ossana y Dennis Richie, los cuales utilizaron un viejocomputador abandonado para desarrollar un pequeño "sistema de propósito general” detiempo compartido, que rápidamente comenzó a llamar la atención.A comienzos de la década de los 70, el sistema UNIX fue cedido a las universidades,alcanzando pronto gran popularidad, debido a varias razones:1. Era un sistema utilizable en minicomputadores.2. Era flexible, ya que a las universidades se les cedió el código fuente del sistema con lo que podían incorporar diversas modificaciones.3. Era barato, ya que se les cedió a las universidades de forma prácticamente gratuita.Obviamente, frente a estas ventajas debían contraponerse una serie de inconvenientes:1. El sistema no estaba lo suficientemente probado, por lo que contenía errores.2. La documentación existente era muy escasa.3. No existía soporte técnico.La llegada del sistema UNIX a la Universidad de Berkeley supuso un gran impulso, hasta elpunto de que lanzó su propia versión. Fue en este momento cuando AT&T lo comenzó acomercializar, al tiempo que Berkeley continuaba desarrollando el sistema, añadiendo máscapacidades, a lo largo de varias versiones, hasta llegar a la actualidad.1.3 CARACTERÍSTICAS GENERALES DEL S.O. UNIXHay cuatro clases de sistemas UNIX: ♦ UNIX de AT&T ♦ Berkeley ♦ Sistemas con licencia por AT&T ♦ Asimilados Laboratorio de Telemática
  6. 6. pág 2 Sistema Operativo UNIXEl UNIX AT&T es el UNIX standard; los sistemas con licencia deben estar autorizados porAT&T. Habitualmente los sistemas con licencia incluyen el UNIX AT&T al que añadenciertas capacidades adicionales.Los asimilados no son UNIX realmente (UNIX sólo es el de AT&T y Berkeley) pero sufuncionamiento y estructura es casi la misma.1.3.1 CARACTERÍSTICAS ESPECÍFICAS DEL SISTEMAS OPERATIVO UNIXAl sistema operativo propiamente dicho se le suele denominar kernel y está constituido porel código máquina que coordina el hardware, a fin de que efectúe las distintas operacionesrequeridas.Por otra parte, se suelen incluir junto con el sistema operativo una serie de utilidadesbásicas como un intérprete de comandos o shell, que interpreta las órdenes dadas alordenador y ejecuta otros procesos, así como pequeñas utilidades para manipular ficheros.1.3.2 El intérprete de comandos (shell) de UNIXEl intérprete de comandos de UNIX, o shell, es un proceso que muestra un indicador decomandos ($, %, o #) y aguarda que el usuario introduzca un comando. Toda vez que elusuario introduce un comando, el intérprete lo valida, y si es correcto crea un proceso hijoque realiza la acción encomendada. Al terminar el proceso hijo, exhibe nuevamente elindicador de comando e intenta leer una nueva línea de la entrada.1.3.3 ProcesosUn proceso es básicamente un programa en ejecución. Consta del programa ejecutable,datos, pilas, registros y toda la información necesaria para ejecutar. Un intérprete decomandos (shell) es un proceso que lee los comandos de usuario desde una terminal y creaprocesos hijo para ejecutar ese comando. Se crea así un árbol de procesos en ejecución.Los procesos se manejan mediante señales que los obligan a suspender, reiniciar oterminar su acción. Las señales se utilizan también para comunicación entre procesos.Cada usuario tiene asignado un identificador de usuario (uid), y grupos de usuarios tienenun identificador de grupo (gid). Un proceso tiene asignado el uid y gid del usuario que loinició. Ambos identificadores se utilizan para proteger la información manejada por elproceso.1.3.4 ArchivosExisten llamadas al sistema para crear, eliminar, leer y escribir archivos. Los archivos seagrupan en directorios, y existen llamadas al sistema para crear y eliminar directorios, ypara colocar y quitar archivos de ellos. Esto crea una jerarquía de directorios y archivosllamada sistema de archivos que se estudiarán en detalle en los apartados siguientes.Por otro lado, todos los sistemas UNIX tienen una serie de características comunes, quedeben ser tenidas en cuenta. Básicamente son:- Existe distinción entre letras mayúsculas y minúsculas.- No es un “user friendly system”. Existen pocos mensajes de advertencia en la ejecuciónde comandos.- No todo el mundo puede utilizar un sistema UNIX. Sólo los usuarios autorizados puedenhacerlo. Debe distinguirse entre el usuario normal y el manager o superusuario. Laboratorio de Telemática
  7. 7. Sistema Operativo UNIX pág 32. ACCESO AL SISTEMA Y COMANDOS GENERALES2.1 USUARIOS Y ACCESO AL SISTEMAComo ya se ha indicado, el sistema UNIX sólo puede ser utilizado por los usuariosautorizados. Los usuarios se clasifican en dos clases: usuarios normales y superusuario oroot. El superusuario es un usuario especial, con mayor capacidad y privilegios que losdemás, que se encarga de controlar y cuidar del buen funcionamiento del sistema. Susactividades y responsabilidades se estudiarán en los capítulos correspondientes a laadministración del sistema.Un usuario normal es una persona que tiene permiso para utilizar el sistema. A su vez, losusuarios están distribuidos por grupos, asignados por el root, y que habitualmente reciben ausuarios con tareas similares.A diferencia de un computador personal al que cualquiera puede acceder una vez puesto enmarcha, en UNIX sólo los usuarios pueden acceder. Cuando se enciende un sistema bajoUNIX, el sistema, después de realizar una serie de tests y operaciones previas, lanza estemensaje a pantalla:login:Esa es la señal de que el sistema está preparado para atender la petición de acceso de unusuario. El usuario es reconocido por el sistema mediante el nombre de usuario. Estenombre puede estar formado por cualquier cadena de caracteres (tradicionalmente con unmáximo de 8 caracteres, aunque en muchos sistemas Unix actuales el límite sea mayor), yes introducido al sistema por el superusuario.Una vez introducido el nombre, se accede al sistema, de forma que en la pantalla apareceráel prompt, representado habitualmente por el símbolo $. A partir de este momento, elusuario ejecutará los comandos y procesos que desee. Así pues, un usuario sólo necesitasu nombre para acceder al sistema. Sin embargo, cualquier persona que posea este datopuede acceder al sistema en nombre de otro. Para evitar esto, un usuario puede protegersemediante la utilización de una palabra clave o password. La asignación del password esrealizada por el propio usuario, mediante el comando passwd. Este comando solicita alusuario el password, que será introducido por duplicado para evitar confusiones, ya que sutecleado no se refleja en la pantalla. De esta forma, el usuario queda protegido, de modoque al solicitar acceso al sistema, tras el login, aparecerá el mensajepassword:indicando que el mismo debe ser introducido. Si éste no es correcto, volverá a lanzarse apantalla el mensaje login:Si alguien teclea un nombre no autorizado, el sistema le solicita el password, con el fin deque no sepa si ese usuario existe o no.Una vez terminado el trabajo, el usuario debe abandonar el sistema, lo que hará mediante elcomando exit o bien con las teclas ctrl-d.Al período de tiempo transcurrido entre un acceso y posterior abandono del sistema se ledenomina sesión. También, al hecho de poseer un nombre autorizado en el sistema se ledenomina "tener una cuenta". Por tanto, ser usuario autorizado o -tener una cuenta- en unsistema expresa el mismo concepto. Laboratorio de Telemática
  8. 8. pág 4 Sistema Operativo UNIX2.2 FORMATO DE COMANDOSUna vez dentro de una sesión, el manejo del sistema se realiza a través de comandos oaplicaciones.Un comando es una orden propia del sistema que realiza una función determinada. Unaaplicación es un programa de computador creado por un usuario, que igualmente transmiteórdenes al computador. Operativamente, no existe ninguna diferencia entre comando yaplicación. La única distinción reseñable entre ambos es el hecho de que el comandopertenece al sistema operativo, y en todos los UNIX standard el mismo comando ejercerá lamisma función. En UNIX los distintos comandos están escritos originalmente en lenguaje Ccomo ya se indicó previamente.Si se desea conocer el programa concreto que se utiliza al ejecutar un comando, se puedevisualizar mediante el comando which:$ which echo/bin/echoCuando se ejecuta un comando, debe tenerse en cuenta el formato del comando. Demanera general. este formato responde a la siguiente estructura.$ comando opciones argumentosEl comando es, sin más, su nombre, que lo distingue de los demás, y que permite alsistema determinar la orden a ejecutar cuando es tecleado. Los comandos siempre seescriben en letras minúsculas.Una opción es un indicador que modifica de alguna manera el funcionamiento general yhabitual del comando. Como tal opción no tiene por qué utilizarse siempre. Habitualmente,las opciones consisten en un solo carácter (si bien pueden ser más) escrito en mayúsculaso minúsculas (aunque a veces pueden intervenir caracteres numéricos). Normalmente, lasopciones van precedidas por un guión -. Las opciones son acumulativas, de modo quesobre un comando pueden actuar a la vez distintas opciones, dando como resultado laejecución del comando con las particularidades correspondientes a todas las opciones. Eneste caso, únicamente antes de la primera opción se colocará el guión. Así, si el comandocmd se ejecuta con la opción b o la c, el comando se escribirá$ cmd -b ó $ cmd -cPero si se ejecuta simultáneamente con las dos opciones, se escribirá$ cmd -bc ó $ cmd -cbEntre comando y opción debe existir al menos un espacio en blanco (y no comas, guiones uotros caracteres. El espacio en blanco es el separador universal en UNIX). No debendejarse espacios en blanco entre las distintas opciones de un comando. Además, debeindicarse que antes de escribir el comando pueden dejarse tantos espacios en blanco comose desee, con una sola excepción: el comando exit que debe ir situado al comienzo de lalínea. Laboratorio de Telemática
  9. 9. Sistema Operativo UNIX pág 5Un argumento es “aquello” sobre lo que recae la acción del comando, o bien unainformación externa suministrada por el usuario, y que resulta necesaria para la ejecucióndel comando. En muchas ocasiones, los argumentos serán ficheros del sistema.El número de argumentos que puede utilizar un comando puede decirse que es ilimitado, sibien raras veces se usan más de dos. Entre un argumento y las opciones (en caso dehaberlas) debe existir al menos un espacio en blanco, al igual que entre los distintosargumentos entre sí.Cuando se ha escrito correctamente un comando, debe presionarse la tecla INTRO, con loque el comando es ejecutado. Siempre que se pulsa INTRO, el cursor de pantalla se situaráen el primer lugar de la línea siguiente de la pantalla.Pueden combinarse varios comandos en una misma línea a través del símbolo ;. Sinembargo, esta no es una práctica aconsejable.2.3 COMANDOS INFORMATIVOSLos comandos informativos proporcionan al usuario informaciones generales sobre elsistema. Los principales son los siguientes:• date: escribe en pantalla la fecha y hora del sistema. Este comando no utiliza argumentos habitualmente, si bien posee numerosas opciones. Excepcionalmente, las opciones van precedidas por el signo + en lugar de -. Además, todas sus opciones comienzan con el símbolo %. Las más importantes son: % a: escribe únicamente el día de la semana de forma abreviada % A: escribe únicamente el día de la semana de forma completa % b: escribe únicamente el nombre del mes de forma abreviada % B: escribe únicamente el nombre del mes de forma completa % d: escribe únicamente el día del mes en número (01-31) % H: escribe únicamente la hora en número (00-23) % j: escribe únicamente el día del año en número (001-366) % m: escribe únicamente el mes como número (01-12) % M: escribe únicamente el minuto como número (00-59) % S: escribe únicamente el segundo como número (00-59) % x: escribe únicamente la fecha % X: escribe únicamente la hora % y: escribe únicamente el año sin el siglo (0-99) % Y: escribe únicamente el año con el sigloEl comando date también permite modificar la fecha y hora del sistema. Esta función sólo leestá permitida al manager; en este caso el comando utiliza un argumento compuesto por 10cifras, con la siguiente estructura.$ date mm dd hh nn aamm = mesdd = díahh = horann = minutoaa = año Laboratorio de Telemática
  10. 10. pág 6 Sistema Operativo UNIX• who: este comando indica qué usuarios están conectados al sistema en un momento determinado.Habitualmente, este comando no lleva argumentos. Cuando se utiliza, aparecen en pantallalos usuarios que en ese momento se hallan conectados al sistema. Por cada usuario, seescribe el nombre, la terminal a la que está conectado, la fecha y la hora de conexión. Suprincipales opciones son:-b: indica la fecha y hora en que el sistema fue conectado por última vez-t: indica el último cambio del reloj del sistema realizado por el manager utilizando elcomando date.Además de éstas, el comando posee la opción am i", escrita sin guión (who am i) y queproporciona el nombre del usuario conectado a mi terminal. No debe confundirse conwhoami comando que realiza la misma función. “whoami” es un comando, mientras que“who am i” es un comando con una opción.• id: proporciona la identificación del usuario invocante, dando el nombre de usuario y su número (UID), nombre de grupo primario y su número (GID), nombres de otros grupos a los cuales pertenece (si los hay) y sus números.• finger: proporciona nombre del usuario en el sistema, nombre en la vida real y otros datos del usuario invocante, indicando si está en este momento en el sistema, y si tiene correo por leer.• hostname: muestra el nombre de la máquina UNIX sobre la que se está trabajando.• man: este comando proporciona información sobre el funcionamiento de un comando del sistema. Es un manual incorporado al sistema, y resulta muy útil. El comando man siempre lleva un argumento, que es el nombre del comando del cual queremos la información. Posee una opción, la “k” con la cual, se obtiene una información más resumida que en el caso anterior y referente a todos los comandos similares al solicitado.• apropos: muestra el nombre de la máquina UNIX.2.4 COMANDOS DE MENSAJESon comandos que únicamente reflejan en pantalla la información suministrada por elusuario. Los principales son:• banner, este comando escribe en pantalla en grandes caracteres el argumento que lleve a continuación. Este argumento estará constituido por cualquier cadena de caracteres.• Echo: refleja en pantalla el argumento que lleve a continuación. Su auténtica utilidad se verá posteriormente. Laboratorio de Telemática
  11. 11. Sistema Operativo UNIX pág 73. FICHEROS3.1 CONCEPTO Y TIPOS DE FICHEROSUn fichero es un conjunto de información agrupada bajo un nombre que reside almacenadaen un disco. Toda la información del sistema se halla contenida en ficheros, inclusoaquellas órdenes que cada comando supone para el sistema.Algo importante a tener en cuenta es el hecho de que en UNIX son ficheros tanto lo quehabitualmente se conoce como ficheros, como los directorios, e incluso los periféricos(discos, terminales, teclados, impresoras, .... ). Estos últimos son denominados device filesy pueden ser de dos tipos: character (o especial) y block.Cada fichero tiene un propietario, que es el usuario que lo ha creado (ya sea mediante uneditor o mediante copia de otro).3.1.1 DENOMINACIÓN DE FICHEROSLos nombres de los ficheros pueden estar constituidos por cualquier cadena de caracteres(salvo algunos caracteres especiales, como *, /, etc.). Debe recordarse que en UNIX sedistinguen mayúsculas y minúsculas, y por lo tanto el fichero FILE será distinto del ficherofile.Un dato importante es que en UNIX, al contrario que en otros sistemas como el DOS oWindows, no existen extensiones para los nombres. Así pues, un fichero denominadofile.abc tiene un nombre de 8 caracteres, no un nombre de 4 con una extensión de 3.Por otra parte, para cada fichero (cualquier tipo de ficheros) deben distinguirse su nombreabsoluto y los nombres relativos.El nombre absoluto de un fichero es el formado por todos los directorios por los que se debepasar para, partiendo del directorio raíz, llegar al fichero. Los nombres absolutos siemprecomienzan por /. Un fichero sólo tiene un nombre absoluto. Sin embargo, puede tenerdiversos nombres relativos, tantos como directorios haya en el sistema.El nombre relativo de un fichero respecto a un directorio es el formado por todos losdirectorios por los que se debe pasar para, partiendo del directorio en cuestión, llegar alfichero. Los nombres relativos nunca empiezan por /.El salto de un directorio a otro situado en un nivel inmediatamente inferior (o que cuelgadirectamente de él) se representa mediante el símbolo /. El paso al directorioinmediatamente superior (o directorio padre) se representa mediante el símbolo ../( elsímbolo .. representa al directorio padre). Laboratorio de Telemática
  12. 12. pág 8 Sistema Operativo UNIX3.2 EL SISTEMA DE FICHEROS. DIRECTORIOSComo ya se ha dicho, toda la información del sistema se almacena en ficheros, los cuales asu vez se agrupan en directorios.Un directorio es un fichero cuyo contenido es más ficheros o directorios.Cuando un sistema UNIX está instalado, tiene definidos una serie de directorios connombres standard, y cuya estructura es la siguiente: /bin usr lib etc home lost+found dev tmpPor supuesto, los usuarios pueden definir sus propios directorios. Los contenidos básicosde los directorios indicados suelen ser los siguientes:• bin: contiene diferentes comandos del sistema, habitualmente los más utilizados• usr contiene comandos menos utilizados que los anteriores, o bien ficheros referentes a aplicaciones externas al sistema• lib: librerías de ficheros objeto (gráficas, matemáticas...)• etc: ficheros propios de la administración del sistema• users: directorios login de los usuarios• dev: ficheros asociados a los periféricos del sistema• lost+found: directorio utilizado en ciertas tareas de la administración del sistema. Habitualmente estará vacío.• tmp: directorio de ficheros temporales. Suele utilizarse cuando se instala alguna aplicación o revisión del sistema, o cuando se producen errores en ciertas aplicaciones.Hay una serie de directorios particulares para los usuarios que es necesario considerar:∗ El directorio raíz /: es el directorio del que cuelga todo el sistema de ficheros. No tiene padre.∗ Directorio login o directorio de acceso es aquel directorio al cual va a parar un usuario cuando accede al sistema. Cada usuario tiene su propio directorio login, que es asignado por el manager. El directorio login del manager es el /.∗ Directorio actual: es el directorio en el que un usuario está situado en un momento determinado. Su nombre absoluto se representa por el símbolo ..∗ Directorio padre: cada directorio cuelga directamente de otro (salvo el /) que es su directorio padre. El nombre absoluto del directorio padre del directorio actual se representa por ... Laboratorio de Telemática
  13. 13. Sistema Operativo UNIX pág 93.3 MANIPULACIÓN DE DIRECTORIOSLos principales comandos que intervienen en la manipulación de directorios son lossiguientes:∗ mkdir: crea uno o más directorios, con los nombres indicados como argumentos: $ mkdir dir1 dir2 crea los directorios dir1 y dir2.∗ rmdir: borra los directorios indicados como argumentos, con la condición de que están vacíos.∗ cd: permite situarse en el directorio indicado como argumento. Si se utiliza sin argumento, el usuario es situado en su directorio login.∗ pwd: escribe en pantalla el nombre absoluto del directorio actual.3.4 MANIPULACIÓN DE FICHEROSA continuación se indican los principales comandos que se utilizan en el sistema deficheros. Las operaciones que realizan y sus principales opciones:∗ ls: escribe en pantalla los nombres de los ficheros que contiene el directorio(s) indicado como argumento. Salvo aquellos cuyo nombre empieza por el símbolo .. Si no se da argumento, se toma por defecto el directorio actual. Los ficheros salen ordenados alfabéticamente (primero las mayúsculas, después las minúsculas). Si el argumento es un fichero no directorio, escribirá el nombre sin más.Sus principales opciones son: -a: muestra en pantalla todos los ficheros del directorio, incluidos aquellos cuyo nombre comienza por .. -d: si el argumento es un directorio, muestra sólo su nombre, no su contenido. -s: además del nombre, se muestra el tamaño de cada fichero en bloques (1 bloque = 512 bytes) -t: los ficheros salen ordenados cronológicamente y no alfabéticamente. -F: detrás de cada directorio aparece el símbolo /, detrás de cada fichero ejecutable el símbolo * y detrás de cada link simbólico el símbolo @. -R: opción Recursiva. Si alguno de los ficheros del directorio es a su vez un directorio, se muestra en pantalla su contenido, y así sucesivamente hasta completar todos los niveles de ficheros. -l: para cada fichero muestra una línea con una serie de informaciones adicionales. El formato de cada línea es el siguiente.- rwxr-xr-x 1 root other 1072851 May 6 18:22 hp-ux↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ permisos propietario espacio en bytes nombrecarácter nº links grupo propietario fecha y hora deidentificador la última modificacióndel fichero Laboratorio de Telemática
  14. 14. pág 10 Sistema Operativo UNIX∗ touch: Si no existe el fichero crea un archivo sin contenido alguno. Si el fichero existe, cambia la fecha del fichero.∗ cat: muestra en pantalla el contenido de un fichero que se utilice como argumento. No tiene opciones.∗ head: muestra las primeras 10 líneas de un archivo.∗ tail: muestra las primeras 10 líneas de un archivo∗ more: su función es muy similar a cat. Muestra en pantalla el contenido de un fichero de forma paginada. De esta manera, se puede leer el contenido de ficheros cuya longitud rebasa la de la pantalla. Cuando la terminal se llena, se detiene la ejecución del comando hasta que sea pulsada la tecla espaciadora, momento en que se pasa a la página siguiente. No tiene opciones.∗ cp: permite copiar un fichero en otro. La estructura del comando es la siguiente: $ cp F1 F2 F1 y F2 pueden ser nombres relativos o absolutos. Si F2 no existe, se crea un fichero con ese nombre. Si F2 existe y es un directorio, se crea en F2 un fichero con el nombre de F1. Si F2 existe y no es directorio, su contenido desaparece y es sustituido por el de F1. El comando puede tener más de dos argumentos (nunca menos). En este caso, es necesario que el último de ellos sea un directorio de modo que todos los demás representarían ficheros que serán copiados a ese directorio con el nombre original. El comando cp posee una opción, la -r, que permite copiar directorios de forma recursiva, es decir, copiando íntegramente su contenido (y el de los directorios que contenga) en otro directorio.∗ mv: permite renombrar o trasladar un fichero a otro. Su esquema de funcionamiento es el mismo que el de cp, salvo que no dispone de la opción recursiva. • ln: permite crear un link de un fichero. Un link de un fichero es una copia virtual del mismo. Es como tener un fichero con varios nombres o en distintos directorios, de modo que todos representan el mismo fichero, hasta el punto de que una modificación realizada en uno de ellos puede ser trasladada a todos. Existen dos tipos de links: hard o soft. Un enlace "hard" (hard link) es una nueva referencia a un mismo archivo; consiste en una nueva entrada de directorio que apunta a un archivo ya existente y apuntado desde otra entrada de directorio. El contenido se encuentra en un solo lado, pero el archivo puede ser accedido desde varios lugares, eventualmente con diferentes nombres. El comando utilizado para crear un enlace hard es ln. $ ln F1 F2 Crea un segundo nombre referido al mismo archivo; no se hace copia, crea un enlace (link).Cuando se borra un archivo con varios enlaces hard, sólo se borra el enlace. El archivo es realmente borrado sólo cuando desaparece el último enlace. Laboratorio de Telemática
  15. 15. Sistema Operativo UNIX pág 11 $ ln dir1 dir2 Da error; no se puede crear un enlace hard para un directorio. Un enlace "soft" (symbolic link) es un archivo que apunta a otro archivo o directorio. El archivo de enlace simbólico contiene solamente la ruta del otro archivo o directorio. El comando utilizado para crear un enlace hard es ln –s. $ ln -s F1 F2 crea F2 como enlace simbólico a F1. Cuando se borra un enlace simbólico, sólo se borra un archivo puntero, y no el objeto real. $ ln –s dir1 dir2 Crea dir2ls como enlace simbólico hacia un directorio.∗ rm: borra los ficheros indicados como argumentos. Este comando presenta dos opciones principalmente: - i: por cada fichero que va a ser borrado se pide al usuario la confirmación de la operación. -r: opción recursiva. Se utiliza con directorios y permite borrar todo el contenido del directorio, incluidos los ficheros de los directorios que contenga hasta el último nivel. Esta opción debe manejarse con mucha precaución.3.5 PROTECCIONES DE FICHEROSTodos los ficheros en UNIX están protegidos. Cuando se estudiaba el comando ls con laopción -l (ls –l), veíamos que se obtiene en pantalla el conjunto de ficheros de un directorio,con una serie de informaciones referentes a cada uno de ellos. Entre ellas están lospermisos de ese fichero, simbolizados por 9 caracteres. A estos caracteres nos referiremosen lo que sigue.Cada fichero posee tres tipos de permisos: permiso de lectura, permiso de escritura ypermiso de ejecución.Los permisos actúan en tres niveles diferentes: permisos para el propietario, permisos parael grupo del propietario y permisos para el resto de los usuarios. De los 9 caracteres querepresentan los permisos, los 3 primeros representan los permisos del propietario, los tressiguientes son los permisos de los usuarios pertenecientes al grupo del propietario. Los tresúltimos corresponden a los permisos del resto de usuarios.--- --- --- --- --- --- --- --- ---permisos propietario permisos grupo permisos otrosPara cada uno de esos niveles definen los permisos de lectura, escritura y ejecución. Todolo que se explique a continuación para un nivel es aplicable a los otros dos.La primera posición corresponde al permiso de lectura, la segunda al de escritura y latercera al de ejecución._____ _____ _____lectura escritura ejecución Laboratorio de Telemática
  16. 16. pág 12 Sistema Operativo UNIXEl permiso de lectura se representa por una r, el de escritura por una w y el de ejecución poruna x. Si el permiso existe, la letra aparece en la posición correspondiente. De lo contrario,aparecerá un guión.El significado de los permisos de un fichero es diferente según que se trate de un directorioo de un fichero ordinario. A continuación se indica el significado de la no existencia de unpermiso.∗ Permiso de lectura: para un fichero o directorio, quiere decir que no se puede ver su contenido. Por tanto, no puede ejecutarse el comando cat en caso de fichero, o ls en caso de directorio∗ Permiso de escritura: para un fichero, significa que no puede modificarse ni borrarse por tanto, no puede utilizarse con él el comando rm, ni grabar modificaciones con un editor de textos. Para un directorio significa que no puede alterarse su contenido. Por tanto, no pueden borrarse ni añadirse ficheros a él, pero sí a los directorios que cuelgan de él∗ Permiso de ejecución: para un fichero significa que no puede ser ejecutado (obviamente, siempre que tenga capacidad de serlo). Para un directorio significa que no se puede acceder a él (por tanto, no puede ejecutarse el comando cd sobre él ni a ninguno de sus directorios. Esta imposibilidad de acceso supone en la práctica también la negación del permiso de escritura.Los permisos de un fichero sólo pueden ser modificados por su propietario (y por elmanager, evidentemente). Para ello, se utiliza el comando chmod, que puede ser utilizadoen dos formas distintas:* Comando chmod: 1ª forma:La estructura del comando es:$ chmod nivel modificación permiso ficheroEl primero de los argumentos, como puede verse, es una combinación de tres datos: el nivelal que va a afectar la modificación (propietario, grupo, otros), el tipo de modificación (adiciónde un permiso, eliminación o asignación), y por último, el permiso o permisos implicados enla modificación. El nivel de la modificación se indica mediante las letras: u (propietario) g (grupo) o (otros) a todos (dueño, grupo y otros)Si no se indica, se entiende que la modificación afecta a los 3 niveles.El tipo de modificación se representa por los símbolos + añadir permiso (dejando los demás como están) - eliminar permiso (dejando los demás como están) = asignar sólo los permisos asignados (y eliminando los demás)Los permisos implicados se representan por sus correspondientes letras: r lectura w escritura x ejecución Laboratorio de Telemática
  17. 17. Sistema Operativo UNIX pág 13En la siguiente tabla se presentan unos ejemplos del funcionamiento del comando. inicial Modificación final rw-rw-rw- +x rwxrwxrwx rwxrwxrwx o-w rwxrwxr-x r-xr-xr-- u+w rwxr-x--- rwxr-xr-- g=rw rwxrw-r-- rwxr-xr-x = ---------Ejemplos de permisos en notación simbólica: u+r g+w-r ug+r ugo+w-rx u+rwx,g+r-wx,o-rwx chmod u+rwx,g+rw-x,o+r-wx arch1 chmod u=rwx,g=rw,o=r arch1cambian los permisos de los archivos indicados.* Comando chmod: 2ª forma:La estructura del comando en esa segunda forma es similar a la primera. Sin embargo, elprimer argumento en este caso se expresa mediante tres cifras. Cada una de las cualestoma valores ente 0 y 7. La primera de ellas indica los permisos del propietario; la segunda,los del grupo, y la última los de los otros usuarios.Para cada nivel, existen 8 posibles combinaciones de sus permisos de lectura, escritura yejecución, que se representan por cada uno de los 8 valores comprendidos entre 0 y 7.La forma de obtener el número correspondiente a cada combinación es la siguiente: r w x 4 2 1Se asigna el número 1 al permiso de ejecución, el 2 al de escritura y el 4 al de lectura, y sesuman los números correspondientes a los permisos deseados. El número obtenido indicala combinación deseada de permisos. Así, el 7 indica todos los permisos, mientras que el 0significa ningún permiso.Ejemplos de permisos en notación absoluta: 0777 0755 0764 0640 0710 chmod 0764 arch1 Laboratorio de Telemática
  18. 18. pág 14 Sistema Operativo UNIX4. COMUNICACIONES ENTRE USUARIOS4.1 MAILEl comando mail sirve para enviar mensajes entre usuarios como si se tratara de un correo.El mensaje puede ser leído días más tarde de haberse emitido, y es independiente de lasterminales del computador, es decir, va dirigido a un usuario, no a una terminal concreta. Elcomando sirve tanto para enviar como para leer los mensajes.* Funcionamiento del mail enviar mensajes:En este caso la estructura del comando es:$ mail usuario(s)Los argumentos son nombres de usuarios a los que se enviará el mensaje. Al pulsar elreturn, no aparece el prompt $, sino que la pantalla queda en espera para recibir elmensaje. Dicho mensaje es escrito por el usuario emisor a través del teclado. Para finalizarel mensaje, se pulsan las teclas Ctrl d, momento en que aparece de nuevo el prompt $.* Funcionamiento del mail para leer mensajes:Cuando un usuario recibe un mail, no tiene, en principio, notificación alguna de ello, si bienla mayor parte de los sistemas UNIX lanzan el avisoYou have mailal usuario cuando éste entra en sesión. (Es lo mismo que cuando una persona recibe unacarta en el buzón. Si no se mira, no se sabe que ha llegado).Para leer los mensajes recibidos (o para ver si hay alguno), basta con teclear$ mailEn ese momento, si existe algún mensaje, éste aparece en pantalla. De lo contrarioaparecerá el textono mailUn usuario puede tener varios mensajes acumulados. En este caso, el mensaje queaparece en pantalla es el último recibido.Cuando el mensaje se ha escrito en su totalidad, el computador queda a la espera de lacontestación por parte del usuario. Esta espera se simboliza mediante el símbolo ? enpantalla. La contestación puede ser del siguiente tipo: Return: aparece en pantalla el siguiente mensaje. Sin embargo, el anterior permanece en el mail. Esto quiere decir que cuando se vuelva a ejecutar mail, volverá a aparecer ese mensaje. p: vuelve a aparecer en pantalla el mismo mensaje d: se borra el mensaje y aparece el siguiente Laboratorio de Telemática
  19. 19. Sistema Operativo UNIX pág 15 s F1: el mensaje queda almacenado en el fichero F1, pasándose al siguiente. Si con la opción s no se especifica un nombre de fichero, el mensaje se almacena en el fichero mbox. -: se vuelve al mensaje anterior sin alterar el presente. m user: se reenvía el mensaje al usuario user.El comando mail, cuando se utiliza para leer mensaje tiene una opción, -r, con la cual losmensajes aparecen ordenados en orden cronológico. Siempre que se contesta al últimomensaje, se retorna al entorno UNIX.4.2 WRITEEl comando write se utiliza para mantener una conversación entre dos usuarios que estánconectados simultáneamente en dos terminales distintas. La estructura del comando es$ write U1Esto quiere decir que el usuario establece comunicación con el usuario U1. Este usuariorecibirá en pantalla el aviso correspondiente, y a partir de ese momento, cada usuarioescribirá por teclado los mensajes que quiera enviar. Siempre que se pulse return. elmensaje aparecerá en la otra terminal. Para finalizar la comunicación, basta con pulsar ctrld, con lo que se obtendrá de nuevo el prompt $.En ocasiones, puede ocurrir que un mismo usuario esté conectado a la vez a variasterminales. En este caso, si se lanza un write a ese usuario, en la pantalla aparecerá la listade terminales a las que está conectado, con el fin de elegir una concreta.En ocasiones, un usuario puede no querer ser molestado con este tipo de acciones. Porello, existe un comando, mesg, que permite inhabilitar la terminal para recibir mensajes. Elcomando puede ser utilizado en solitario, o bien con las opciones y o n. Nunca llevaargumentos. Su funcionamiento es:$ mesg n: se inhabilita la terminal para recibir mensajes$ mesg y: se habilita la terminal para recibir mensajes$ mesg: escribe en pantalla la situación de la terminal (habilitada o no) Laboratorio de Telemática
  20. 20. pág 16 Sistema Operativo UNIX5. EDITORESLa familia de editores en UNIX está compuesta de tres editores distintos, llamados ex, ed yvi. ed el editor de líneas estándar original ex un editor “de líneas” que sustituye a ed vi un editor de pantallaEn el sistema operativo UNIX, todo se almacena en ficheros, incluso el propio sistemaoperativo UNIX Los editores UNIX permiten alterar los ficheros de un modo fácil y eficiente,facilitando el soporte básico que se necesita para la mayoría de tareas UNIX. En estassecciones daremos un repaso al funcionamiento de los editores y sus buffers, y acontinuación describiremos las principales características de vi. En el siguiente capítuloestudiaremos el editor ex.5.1 EL BUFFER DE MEMORIANuestros ficheros están clasificados en la memoria del sistema: cuando disponemos que uneditor trabaje con un fichero, la copia original de este último permanece inalterada. Paraello, se crea una copia del fichero sobre la que se trabaja: esta copia se mantiene en unárea de memoria temporal denominada buffer. Los cambios realizados se ejecutan sobreesta copia, no sobre el fichero original. Si se desea que estos cambios afecten al fichero deforma permanente, se deberá sustituir el fichero original por la nueva copia. Esta últimaetapa es muy sencilla: simplemente se da a la máquina la orden de escritura y el ordenadorse encarga de sustituir el original por la versión actualizada.El trabajo con buffer supone una gran ventaja: por ejemplo, si hacemos una chapuza en eltrabajo que estamos editando (borrar una página accidentalmente), no se habrá dañado elfichero original. Para reparar nuestro despiste, basta con abandonar el editor y quedaránperdidas para siempre las pruebas de nuestro error, dejando el original inalterado.Evidentemente, este modo de funcionamiento supone también una desventaja: los cambiosno se almacenan automáticamente. Es importante recordar que se deben escribir dichoscambios; si no se hace, todo el trabajo de alteraciones se perderá. Algunas versiones deeditores UNIX intentan refrescarle su memoria con una aviso si trata de abandonar el editorantes de escribir su texto, otras, no.Nos ocuparemos de inmediato de estudiar cómo funciona el proceso de edición.5.2 DOS MODOS DE FUNCIONAMIENTO DE EDITORESLos editores ex y vi tienen dos modos básicos de operación: el modo texto (Text InputMode) y el modo comando o modo de edición (Command Mode).Cuando “entramos” por primera vez al editor, nos encontramos en comando. Esto significaque cualquier tecla que se pulse se toma como si fuera una orden, semejante a loscomandos que ya hemos visto anteriormente. En este modo de funcionamiento se puedeborrar una palabra o línea, o cambiar un error ortografía. Accedemos al modo textoutilizando el comando Añadir (Append), es decir, pulsando la tecla <a>. A partir de esemomento, cualquier tecla que se pulse se interpretará como texto para ser almacenado enel buffer, no como comandos tal como sucedía antes. Ahora podemos introducir un textoque eventualmente sea un programa FORTRAN, unos datos de ventas o los capítulos de un Laboratorio de Telemática
  21. 21. Sistema Operativo UNIX pág 17libro. Cada editor tiene una única forma de salir del modo texto: en el caso de( editor vi esla tecla <esc> mientras que el editor ex abandona el modo texto cuando se introduce unpunto <.> como primer y único carácter de una línea.5.3 COMPARACION ENTRE LOS EDITORES DE LÍNEAS Y DE PANTALLATodos los sistemas UNIX contienen la familia completa de editores ex. ¿Con qué editor nosquedamos?. Recomendamos que se comience con el editor de pantalla vi. En el capítulosiguiente nos preocuparemos del estudio detallado del editor de líneas ex.5.4 EL EDITOR vivi es un editor de texto interactivo, diseñado para utilizarse con un terminal provisto depantalla. En dicha pantalla se muestra normalmente una “ventana” del fichero que se estáeditando: esta última permite ver unas cuantas líneas de fichero al tiempo, y además laventana se puede subir o bajar a lo largo del fichero. También se puede trasladar acualquier parte de cualquier línea de la pantalla, y realizar cambios allí, las adiciones ycambios que se realizan en el fichero quedan reflejados sobre lo que se ve en pantallaSi se intentase una descripción completa de los aproximadamente 100 comandos de vi, elprincipiante quedaría totalmente abrumado; por esta razón, se ha decidido dividir lapresentación de los comandos vi en tres partes. Estas partes representan tres nivelesdistintos de experiencia de manejo con el editor.1. Comandos básicos para comenzar a utilizar vi.A. Comandos de posición del cursor: h, j, k, l y <return>B Comandos para entrar en modo texto: a, i, o, OC Comandos para abandonar el modo texto: <esc>D. Comandos para borrar y sustituir x, dd, rE. Comandos para deshacer cambios: u, UF Comandos para almacenar y abandonar el editor: ZZ, :w, :q!, :wq, q2. Comandos vi avanzados para aumentar sus posibilidades.A. Comandos de posición del cursor incluyendo “desplazamiento”, “paginado” y “búsqueda”: <control-d>, <control-f>, <control-b>,<control-u>, e,b,G,nGB. Comandos que actúan sobre palabras, frases, líneas o párrafos: c,d,yC. Abreviaturas de palabras, frases, líneas o párrafos: w,b,e,<,>,O,$, {,}D. Comandos para imprimir lo almacenado en los buffers. p, PE. Unión de líneas: J3. Otros comandos viA. Existen unos 60 o más comandos adicionales, que permiten hacer otras operaciones de adición del mismo tipo que los descritos anteriormente. Laboratorio de Telemática
  22. 22. pág 18 Sistema Operativo UNIX5.4.1 PARA EMPEZAR EN viAunque, como ya se ha comentado. el editor vi es muy complejo y posee un enormenúmero de comandos, su estructura básica es muy simple. Existen dos modos deoperación, el modo comando y el modo texto.En esta sección nos limitaremos al mínimo número posible de comandos que permitancomenzar a utilizar el editor. Aunque el número de comandos comentados será muyreducido, en realidad quedan cubiertas las cuatro principales características de la edición: • llamada al editor: vi nombre de fichero • posicionado del cursor: h, j, k, l y <return> • inserción de texto: a, i, o, O • borrado y cambio: x, dd, r • almacenamiento permanente de la información: wqNuestro primer ejemplo mostrará cómo entrar y salir del editor vi. Debemos estar situadosen el sistema UNIX lo que quedará reflejado por el prompt ($) del mismo. El comando quese introduce es$vi fichero para iniciar el trabajo con el editorPara salir de vi, utilizaremos la secuencia de comandos<esc> :wq para abandonar el editorRecuerde que <esc> significa pulse la tecla marcada ESC o ESCAPE, dependiendo de laterminal: a continuación pulse :wq para escribir y abandonar la edición.El fichero puede ser un fichero ya existente en su directorio, en cuyo caso queda copiado enun buffer temporal para su edición. En el caso de que no exista un fichero con ese nombre,se crea un nuevo fichero. Cuando se llama al editor vi, éste responde en pantalla con elcontenido del fichero seguido con una serie de símbolos tilde (-). en caso de que la longituddel fichero sea menor que la de la pantalla. Al final de la pantalla, aparece el nombre delfichero. El editor se sitúa en modo comando y el cursor se coloca en la esquina superiorizquierda de la pantalla.Cualquier cambio, operación de borrado o adición que se quiera hacer se realizará tomandocomo punto de referencia la posición del cursor. Por consiguiente, la pregunta inmediata es“¿cómo se mueve el cursor?”5.4.2 MOVIMIENTOS DEL CURSORExisten más de 40 comandos en vi para ayudarle a colocar el cursor en cualquier posicióndel buffer. Habitualmente los terminales tienen teclas con “flechas” para desplazar elcursor. Más adelante, en la sección "comandos de posición del cursor, mostraremos otrosmuchos comandos para desplazarlo.La tecla <return> también desplaza el cursor una línea hacia abajo. Sin embargo, la tecla<return> coloca el cursor siempre al comienzo de la siguiente línea, mientras que la flechacorrespondiente desplaza el cursor en dirección vertical desde la posición en que seencuentre, que bien puede ser el centro de una línea.El cursor no puede moverse sobre un fichero nuevo que no contiene texto; es decir, lasteclas se moverán únicamente sobre líneas o caracteres de texto ya existente en el fichero. Laboratorio de Telemática
  23. 23. Sistema Operativo UNIX pág 195.4.3 EL MODO TEXTOTrabajaremos ahora con cuatro comandos que permitirán utilizar el teclado para introducirtexto en el fichero. Estos comandos son:a para añadir texto (append)i para insertar texto (insert)o y O para abrir (open)Todos estos comandos toman como punto de referencia la posición actual del cursor.Si se comienza una edición vi sobre un nuevo fichero, el cursor está restringido a la esquinasuperior izquierda de la pantalla; el cursor no puede desplazarse por medio de las teclasindicadas; sin embargo, si se utiliza la orden a, para añadir texto, i para insertarlo, o bienopen para abrir una línea, se podrá introducir el texto que se desee comenzandoprecisamente en la mencionada esquina superior izquierda, tal como se hace normalmenteen una hoja de papel.Puede ser que esté preguntándose: ¿y cómo meto texto en mitad de la línea, por ejemplo,un título? La respuesta es que debe utilizar la barra espaciadora después de haber entradoen modo texto.Si comienza una sesión de edición vi en un fichero y utiliza el comando de abrir (open, o uO), el cursor se moverá hacia arriba (O) o hacia abajo (o) una Iínea y quedará listo pararecibir texto desde teclado.La manera habitual de comenzar un nuevo fichero es teclear vi seguido por un espacio y elnombre del fichero que se desea utilizar. Cuando el editor esté listo, teclee a; a continuaciónpuede empezar a usar el teclado como si se tratase de una máquina de escribir. Pulse latecla <return> para comenzar una nueva línea: si comete algún error, puede utilizar la teclade borrado normal para retroceder y corregir. En algunos terminales, las letras borradas nodesaparecen de la pantalla hasta que se reescribe texto sobre ellas, pero en todo casoquedan eliminadas del buffer.5.4.4 CÓMO AÑADIR TEXTOS A UN FICHERO YA EXISTENTE¿Qué sucede cuando utilizamos los cuatro comandos de introducción de texto?Cada uno de ellos nos pasará a modo texto; a continuación podemos introducir una letra ovarias docenas de líneas, si así se desea. La mayor diferencia que existe entre los distintoscomandos es el lugar donde se coloca el nuevo texto:a introduce el texto que se teclee detrás del cursor, “empujando” el resto de línea hacia la derecha. En muchos terminales, no se ven las palabras desplazadas hasta después de pulsar la tecla <esc> para abandonar el modo texto.i Introduce cualquier cosa que se teclee antes del cursor, empujando el texto de la línea hacia la derecha igual que en el caso anterior.o abre una línea debajo de la línea en donde se sitúa el cursor, coloca el cursor al comienzo de la nueva línea e introduce el texto en esa posiciónO es igual que o, con la diferencia de que la línea se abre sobre la posición actual del cursor. Laboratorio de Telemática
  24. 24. pág 20 Sistema Operativo UNIXEn cada uno de los casos, se ha de pulsar la tecla <esc> para abandonar el modo texto;con ello quedaremos situados en modo comando de nuevo.5.4.5 BORRADO Y ALTERACIÓN DEL TEXTOExisten tres comandos utilizados con profusión para realizar pequeños cambios en elcontenido de un fichero. Nos referimos al comando x para borrar un carácter, el comando rpara sustituir un carácter, y el comando dd para borrar una línea. Estos tres comandos seejecutan en modo comando, y los tres vuelven a dejar el mismo modo una vez cumplida sumisión. Los tres emplean la posición del cursor en la pantalla como punto de referenciapara realizar los cambios.El comando x borra el carácter sobre el que está situado el cursar. Si va precedido de unnúmero n, borra n caracteres, comenzando a contar por aquél en el que está situado elcursor.El comando r sustituye el carácter en el que está situado el cursor por aquél que es tecleadoa continuación. Por último, el comando dd borra completamente la línea sobre la que estásituado el cursor. Al igual que el comando x, dd puede ir precedido de un número n, con loque se borrarán n líneas, contadas a partir de la línea en que se halla el cursor.5.4.6 PARA DESHACER CAMBIOS: u y UEn ocasiones se realiza un cambio y de repente se cambia de opinión o se decide que nodebería haberse hecho. En este caso, se usan los comandos “deshacer o undo”. Tal comoindica su nombre, estas órdenes deshacen lo que se acaba de hacer. El comando u sepuede introducir solamente en modo comando, y “niega” la orden anterior. Así, si se borrauna línea con dd, se puede pulsar u para regenerada; si se utiliza el comando i para insertaruna palabra en una línea, la orden u se encargará de eliminarla (previamente debe volver amodo comando para deshacer el cambio).El comando U es más general. Con él se deshacen todos los cambios que se hayanrealizado en la Iínea actual.5.4.7 CÓMO ABANDONAR EL EDITOR viProbablemente, una de las experiencias más frustrantes que se pueden tener con unordenador es perder un fichero con el que se ha estado trabajando durante siete horas.Realmente, no es difícil de conseguir, introduciendo un par de órdenes sin el debidocuidado. Siempre que esté pensando abandonar el editor, debe interrogarse a sí mismocon una cuestión básica: ¿deseo guardar los cambios que he realizado durante estasesión? Hay tres posibles respuestas: sí, no y quizá.Existen varias formas diferentes de abandonar el editor vi con o sin almacenamiento deinformación, tal como se resume a continuación:Comando Acción<ESC> ZZ <return> Escribe el contenido del buffer temporal en disco, para su almacenamiento permanente. Utiliza el nombre de fichero que se empleó Laboratorio de Telemática
  25. 25. Sistema Operativo UNIX pág 21 para entrar en vi. Lo coloca de nuevo en el shell.<ESC> :wq <return> Tiene el mismo efecto que ZZ, w deriva de write (escribir) y q procede de quit (abandonar).<ESC> :w <return> Escribe el contenido del buffer en<ESC>:q <return> memoria, y a continuación se abandona el editor. Es una versión en dos etapas de wq.<ESC>:q! <return> Abandona el editor y se olvida del contenido del buffer temporal. No se realizan cambios.Todas estas órdenes se han de ejecutar desde modo comando, y lo devolverán al sistema(shell), lo cual quedará reflejado por la aparición del prompt ($). Se ha indicadoexplícitamente una vez más que se utilice la tecla <return> para ordenar la ejecución de loscomandos.Si se desea abandonar el editor guardando los cambios realizados, la mejor salida es usar:wq estando en modo comando. También se pueden abandonar el editor con ZZ, o bien, w<return> :q.Para abandonar el editor sin guardar los cambios, la forma natural de irse es :q! Se puedeusar este comando cuando se comienza a editar un fichero y no le gusta el aspecto con elque estaba quedando. La orden :q! deja intacto el fichero original y abandona el buffertemporal del editor.Si no está seguro de la oportunidad de almacenar o no los cambios, lo mejor que puedehacer es guardar ambas versiones del fichero, la original y la alterada. Esta operación serealiza utilizando el comando write con un nuevo nombre de fichero. Por ejemplo, podríaser.:w fich.nuevoAsí, si ha editado el fichero fich y realizado en él algunos cambios, este comando creará unnuevo fichero con el nombre indicado. Ahora ya puede abandonar el editor tranquilamentecon :q o con :q!. La diferencia existente entre los comandos :q! y :q es que este últimoabandonará el fichero únicamente si no se han introducido cambios desde el últimocomando w. Con ello se ofrece una cierta protección contra abandonos accidentales deleditor. El comando :q! por su parte, abandona el editor sin más trámites.En realidad, cuando se está metido en una sesión de edición lo suficientemente larga, esaconsejable utilizar el comando write cada 15 ó 20 minutos, para actualizar la copiapermanente del fichero.5.4.8 OTROS COMANDOS viYa hemos visto en la sección anterior la enorme importancia de la colocación del cursor; esaimportancia es aún mayor, si cabe, en ficheros de tamaño medio y grande; por ello nosocuparemos de la colocación del cursor en cualquier lugar del fichero, por medio de unaspocas órdenes. A continuación estudiaremos tres comandos conocidos como operadoresque pueden realizar cambios que afectan a palabras, líneas, frases o párrafos. Dos de Laboratorio de Telemática
  26. 26. pág 22 Sistema Operativo UNIXestos operadores facilitan en realidad otros buffers de almacenamiento temporal quepermiten la reorganización de líneas y párrafos del texto.5.4.9 COMANDOS DE POSICIÓN DEL CURSORHasta ahora hemos utilizado las cinco teclas básicas de posición del cursor: las flechas y<return>. Añadiremos a este conjunto nueve teclas más y una función de búsqueda, queayudan a colocar el cursor con sencillez en ficheros de texto de cualquier tamaño. Nosocuparemos en principio de cuatro teclas (b,e,$,O) que resultan muy útiles en ficheros detextos cortos. Después añadiremos otras cuatro, <control-d>, <control-u>. <control-f> y<control-b>, que son más aplicables a ficheros medios (2-10 páginas de pantalla). Llegadosa ese punto, explicaremos también las operaciones de “desplazamiento” y “paginado”.Completaremos el repertorio de posicionamiento del cursor estudiando dos comandos quese utilizan para colocar el cursor en ficheros de texto grandes 10-100 o incluso más páginasde pantalla). Nos referimos a los comandos nG y /patrón.Las cuatro teclas <b,e,$,O> tienen una cierta simetría en su forma de operar. Su acciónconcreta es la siguiente:<b> Desplaza el cursor al comienzo de una palabra (beginning). Cada vez que se pulsa la tecla <b>, el cursor se mueve hacia la izquierda a la primera letra de la palabra anterior.<e> Desplaza el cursor al final de una palabra (end). Cada vez que se pulsa la tecla <e>, el cursor se desplaza a la derecha hasta la última letra de la siguiente palabra.De una forma similar, las teclas <O> y <$> desplazan el cursor al comienzo y al final de lalínea (no de la palabra): <O> Se refiere a la tecla cero. Desplaza el cursor al comienzo de la línea. <$> Desplaza el cursor al final de la línea.Estas dos teclas pueden utilizarse únicamente en la línea que contiene el cursor, éste nosaltará a la línea siguiente tal como ocurre con las teclas <b> y <e>.5.4.10 "DESPLAZAMIENTO" Y "PAGINADO" DE LA PANTALLAHay ocasiones en las que el buffer contiene más texto que el que se puede presentar deuna sola vez en pantalla. Ya habrá observado que, cuando se da esta circunstancia, laslíneas ocultas se pueden traer a pantalla llevando el cursor hacia el final (o el comienzo) dela misma e intentando avanzar aún más. En tal caso, el cursor permanece en pantalla, peroaparece una nueva línea, moviéndose hacia arriba (o hacia abajo) dentro del campo deedición. Esta forma de desplazamiento de texto se llama scrolling, por su semejanza alantiguo sistema de lectura de un pergamino en el que se desplazaba la parte visible delmismo desde un rollo interior a otro superior.Para visualizar este movimiento, imagínese que el texto está distribuido en una página largay continua (como un pergamino) y que la pantalla es una especie de “ventana” por la quepodemos observar un trozo de la página. Esta ventana tiene generalmente 80 caracteresde ancho por 24 líneas de largo; imagínese que la ventana se desplaza mientras el textopermanece fijo. Laboratorio de Telemática
  27. 27. Sistema Operativo UNIX pág 23Se suele aceptar como convenio que la dirección de desplazamiento está referida aldesplazamiento de la ventana, no del texto. Por ejemplo, un desplazamiento descendentemueve la ventana hacia abajo, mostrándose el texto que estaba en el fichero por debajo deloriginal (o lo que es lo mismo, el texto asciende). Por el contrario, en desplazamientoascendente, estamos "empujando la ventana hacia arriba, mostrando porciones del textoque precedía al texto de la localización de ventana original (el texto desciende).Generalmente, las teclas de posición de cursor <b>, <e>, <return> realizan desplazamiento"de pantalla de una línea cada vez. Sin embargo, como las pantallas contienen 24 líneas, losmovimientos línea a línea pueden resultar muy lentos cuando se trabaja con un fichero detexto grande, con las consiguientes pérdidas de tiempo, tanto del usuario como delordenador. El editor vi soluciona el problema con cuatro comandos de desplazamiento.Son los comandos <control-u>, <control-f>, <control-b> y <control-d>. Le recordamos quepara conseguir un <control-d>, se pulsa la tecla <control> y a continuación se oprime latecla <d> manteniendo la otra apretada.La acción de estas cuatro teclas de cursor es la siguiente:<control-d> Desplaza el texto moviendo el cursor hacia abajo (down), generalmente 12 líneas.<control-f> Desplaza el cursor hacia delante (forward) en el texto generalmente 24 líneas.<control-u> Desplaza el cursor hacia arriba (up), generalmente 12 líneas.<control-b> Desplaza el cursor hacia atrás (back), generalmente 24 líneas.El comando,nGsiendo n un número entero, colocará el cursar en la línea número n. Así, podemos teclear1400Gpara movernos a la línea 1400. Una orden similar es G (G mayúscula) sin ningún número,que coloca el cursor al final del fichero. Así, si se pulsaGestando en modo comando, el cursor se posiciona al final del fichero. Si queremos volver alprincipio, se puede indicar al editor la siguiente orden1GOtro comando muy útil relacionado con nG es el comando <control-g>, que informa delnúmero de línea en el que está colocado el cursor en ese momento.5.4.11 BÚSQUEDA DE PATRONESOtra forma de colocar el cursor en algún punto del fichero es enviar al editor una palabra ocadena de caracteres para que la busque. Cuando se está en el modo comando vi, sepuede teclear el carácter /, seguido de una cadena de caracteres terminado por un <return>.El editor colocará el cursor en la primera aparición de la cadena de caracteres dentro deltexto, tomando como punto de partida la posición actual del cursor, y desplazándose haciaabajo en el texto. Por ejemplo, si se desean localizar las palabras “buenos días”, se envía laorden Laboratorio de Telemática
  28. 28. pág 24 Sistema Operativo UNIX/buenos díasSi la primera aparición de “buenos días” no es la que deseábamos, se puede mover a lasiguientes pulsando n (next). Estos sistemas de búsqueda “enganchan” el final del buffercon el principio, de manera que si se alcanza el final sin encontrar el patrón de búsquedarequerido, se comienza por el principio del fichero hasta llegar a la posición actual delcursor. Esta operación continúa realizándose mientras se siga pulsando n.Si se prefiere organizar la búsqueda en sentido contrario (ascendente), se utiliza ? a talefecto.Una vez colocado el cursor en el punto deseado, podemos dedicarnos de nuevo a realizarcambios, desplazar textos o añadir nuevo texto al fichero. Nos ocuparemos ahora de estetipo de actividades. -5.4.12 OPERADORES QUE BORRAN, DUPLICAN O CAMBIAN Y REORGANIZANEL TEXTO.Algunas páginas antes, en la sección dedicada a los comandos básicos vi, aprendíamos aborrar una línea utilizando el comando dd. Este comando de borrado está compuesto enrealidad de dos partes: el “operador” d, (delete, borrado) y el operador “alcance”, referido ala línea, y simbolizado de nuevo por "d”. El comando dw utiliza el operador d pero sualcance es una sola palabra (word), definida por el cursor y simbolizada por “w”, Podemosrepresentar este tipo de órdenes de la siguiente manera: Operador + alcance = comandoEn esta sección nos ocuparemos de tres operadores y nueve alcances. Los operadores son“delete”, “change” y “yank” (borrar, cambiar y extraer). Pueden operar con los alcancessiguientes: palabras, líneas, frases y párrafos. Los utilizaremos para borrar, duplicar,cambiar y reorganizar el texto. En ocasiones, este tipo de cambios se llaman ypopularmente “cortar y pegar” (cut and paste), refiriéndose al viejo sistema de realizarcambios con tijeras y goma de pegar. Sin embargo, la versión electrónica de “cortar y pegar”es más poderosa, ya que puede “cortar” con más precisión y hacer copias múltiples al“pegar”.En la siguiente tabla se resumen los tres operadores y sus distintos alcances. (Incluimostambién una descripción de un comando put (poner, colocar), que funciona en combinacióncon los comandos yank y delete).Comando Operadord Operador delete. Borra el texto depositando una copia en un buffer de memoria temporal. La copia puede recuperarse empleando el comando put, p.y Operador yank. Saca una copia del texto (palabra, frase, línea, etc.), colocándola en un buffer de memoria temporal para depositarla en otro sitio. El texto original permanece inalterado; la copia se "pega" en el punto marcado por la posición del cursor, utilizando el comando put, p. Laboratorio de Telemática
  29. 29. Sistema Operativo UNIX pág 25p Comando put. Trabaja con los comandos yank y delete; coloca cualquier fragmento que haya sido borrado o extraído en el lugar correspondiente detrás o debajo del cursor.c Operador change. Equivale a una operación delete y un comando insert. Borra una palabra, frase, etc, y pasa a modo texto para permitir que se teclee el texto alternativo correspondiente. Se termina de operar con un <esc>.Estos operadores actúan sobre un alcance determinado, que se puede describir como:Operación Alcancee El alcance se define entre el cursor y el final de la palabra en que está colocado (end); por ejemplo, si el cursor se coloca sobre la letra u de "curioso", y se teclea de, se borra el fragmento “urioso”.w El alcance abarca desde el cursor hasta el comienzo de la siguiente palabra (word) incluyendo el espacio.b Abarca desde la letra anterior al cursor hasta el comienzo de la palabra (beginning).$ Tiene un alcance desde el cursor hasta el final de la línea.0 Comprende desde la letra o posición anterior al cursor hasta el comienzo de la línea.) El alcance está definido desde el cursor al comienzo de la frase siguiente. Se considera que una frase acaba con un “.”, “!”, o “?”, seguido de un “fin de línea” (procedente de la tecla <return> ) o dos espacios.( El alcance se determina desde la posición anterior al cursor al comienzo de la frase que contiene a dicho cursor.} El alcance abarca desde el cursor hasta el final del párrafo. Se considera que un párrafo comienza después de una línea vacía.{ El alcance está comprendido desde la posición anterior al cursor y el comienzo de su párrafo.Habrá observado que no existe ningún símbolo para línea completa. Los creadores del videcidieron que es una operación tan común, que la manera más fácil de obtenerlas seríapulsar el operador correspondiente dos veces. Los comandos que afectan a la líneacompleta, por consiguiente serán, dd, cc o yy.5.4.13 LOS OPERADORES YANK Y DELETE COMBINADOS CON EL COMANDOPUTSe puede utilizar la combinación de comando de borrado y colocación (delete y put) , paratrasladar un fragmento de texto en un fichero. Por otra parte, los comandos de extracción y Laboratorio de Telemática
  30. 30. pág 26 Sistema Operativo UNIXcolocación (yank y put) combinados resultan adecuados para copiar un fragmento de texto ycolocarlo en otra parte. Los nueve "alcances" descritos permitirán definir con precisión lasdistintas partes de palabras, líneas, frases y párrafos sobre los que se desea aplicar laoperación. Los comandos yank y delete almacenan estos fragmentos de texto en un buffertemporal, que se utiliza para ser copiado en pantalla con un comando put. Como siempre,las órdenes se ejecutan tomando como punto de referencia la posición del cursor. Por loque respecta al comando put, yank y delete funcionan de manera idéntica: producen unbuffer temporal con un fragmento de texto. La diferencia respecto al usuario es que deja eltexto original inalterado, mientras que delete lo borra.5.4.14 BORRADO, DUPLICACIÓN Y REORGANIZACIÓN DE TEXTOS ENBUFFERS TEMPORALESTal como se comentó anteriormente en este capítulo, cuando se desea comenzar unasesión de edición con un fichero ya existente, se deposita una copia de dicho fichero en lamemoria del buffer del editor. Se ha comprobado que el empleo de estos buffers es deenorme utilidad, por eso, el editor vi tiene en realidad más de 30 áreas de memoria temporalque se pueden utilizar para duplicar, reordenar y almacenar texto temporalmente. Además,si accidentalmente destruye una serie de líneas de texto, se puede recuperar no sólo elúltimo fragmento destruido, sino también los 8 anteriores. Estos fragmentos se almacenanen un conjunto de buffers temporales numerados del 1 al 9; para conseguir la recuperacióndel texto borrado que se almacena en el buffer n, se puede usar el comando “np (lascomillas sirven para indicar al editor que va detrás un nombre de buffer). Este comandocolocará el texto detrás del cursor. Si usamos otro comando put, P, el contenido se colocadelante del cursor. Así el comando:“1precupera el contenido de la última porción borrada y la coloca detrás del cursor, mientrasque el comando“1Pcolocará este mismo texto delante del cursor.Los comandos undo resultan especialmente útiles cuando se desea localizar entre losbuffers 1 a 9 un determinado párrafo que se borró. Por ejemplo, para averiguar el contenidodel buffer número 4 se ordena."4py si no es el que buscaba, se pulsauSe puede repetir esta operación cuantas veces se desee en los distintos buffers.Hay otro método mejor de guardar, duplicar y reordenar texto que no utiliza los buffers 1 a 9descritos aquí. El problema con estos buffers es que el buffer número 1 contiene siempre laúltima operación de borrado. Así, cuando se desplaza por el texto borrando aquí y allá, elcontenido de los buffers está cambiando constantemente. Si tiene pensado copiar odesplazar un texto, es mejor emplear otro conjunto de buffers que permanecen inalteradosen las operaciones de borrado normales. Este conjunto está formado por la serie de bufferscon nombres de letra, ordenados de la “a” a la “z”. Para usarlos, se debe anteponer elnombre del buffer en el que se desea almacenar el texto a la operación de borrado. Se Laboratorio de Telemática
  31. 31. Sistema Operativo UNIX pág 27utilizan de nuevo las comillas (“) para indicar al editor que estamos empleando un nombrede buffer. Por ejemplo, la orden“c5ddborrará 5 líneas y las guardará en el buffer c. Estas líneas pueden recuperarse en el mismositio o en sitios diferentes, utilizando los comandos put, p y P:“cpAsí se depositará el contenido del buffer detrás del cursor. Se puede mover el cursor yrepetir el comando para colocar copias adicionales del buffer c en cualquier otro lugar delfichero. Estos buffers alfabéticos también almacenan los contenidos de las operacionesyank, que se utilizan cuando se desea simplemente copiar una determinada parte del texto;la forma de utilizar los comandos es idéntica.5.4.15 OTROS COMANDOS Y PARTICULARIDADES DE viAdemás de los comandos anteriores, el editor vi tiene una serie de potencialidades queprobablemente le interesará conocer. Entre ellas se pueden destacar.• especificar el tipo de terminal• ajustar el tamaño de pantalla• ajustar la identificación, tabulado y margen derecho• usar macros y abreviaturas para simplificar una operación compleja o una entrada desde teclado demasiado larga• editar dos o más ficheros al mismo tiempo• utilizar comandos ex.Esta última particularidad merece un comentario más extenso, sobre todo porque la hemosutilizado varias veces en este capítulo sin avisarlo. Para emplear un comando ex, se pasa amodo comando y se pulsa la tecla [:]. Aparecerá un símbolo dos puntos en la parte inferiorde a la pantalla. A continuación se puede introducir cualquiera de los comandos que sepresentan en el capítulo dedicado a ex; una vez ejecutada la orden, el editor le devuelveautomáticamente al modo comando estándar de vi.Si se desea permanecer más tiempo en el editor de línea ex, se puede introducir elcomando Q desde modo comando vi. Con ello conseguiremos también un símbolo dospuntos en la parte inferior de la pantalla, pero permaneceremos en modo ex hasta que seteclee vi para volver.En este capítulo ya hemos usado algunos comandos prestados de ex, como write y loscomandos quit (:q, wq, y :q!).De los demás comandos ex disponibles, los más útiles son aquellos que permiten manejartrozos de texto grandes; como ejemplo, mencionaremos los dos más importantes: elcomando co para copiar texto, y el comando m para desplazarlo. Realizan el mismo tipo defunción que los comandos vi delete-put y yank-put, respectivamente, pero restringiéndose alíneas completas. Así, el comando::20,300m500realiza una copia de las líneas 20 a 300 inmediatamente después de la línea 500, dejandoinalterado el texto original en su posición. Otro comando ex extremadamente útil es la ordende búsqueda y sustitución global. Por ejemplo, el comando Laboratorio de Telemática
  32. 32. pág 28 Sistema Operativo UNIX:g/e/s//#/gsustituye todas las "e” del fichero por símbolos “#”.5.5 EL EDITOR DE LÍNEAS ex5.5.1 INTRODUCCIÓNEl editor de líneas ex es, con toda propiedad, el editor estándar del UNIY- Incluso si tienepensado trabajar preferentemente con vi, como hacen la mayoría de usuarios, resultaaconsejable aprender el funcionamiento básico de ex. Una gran parte de la potencia del vise deriva precisamente de este editor.Se dice que ex es un editor de líneas porque la mayoría de operaciones se realizanempleando como referencia una línea. (Recordemos que vi utiliza el cursor como punto dereferencia). El sistema de referencias por líneas hace que ex resulte útil para desplazar ocopiar grandes bloques de texto, y también para hacer operaciones de búsqueda ysustitución global.5.5.2 LLAMADA AL EDITOR exLa operación de arranque de un editor recibe diversos nombres en el argot informática. Siel nombre está ya en el directorio, el contenido del fichero se vuelca en el buffer temporal deex para permitir su edición. Si no existe fichero alguno con tal nombre, se crea uno nuevo.Cuando se llama a ex con un fichero ya existente, el editor responde en pantalla con elnúmero de caracteres almacenados en el mismo: si el fichero es nuevo, ex responde con elcomentario (new file) y el nombre del fichero. Con este convenio se advierte al usuario quepretendía reformar un fichero ya creado, pero inadvertidamente ha tecleado su nombre deforma incorrecta. Las respuestas devueltas por el editor pueden variar ligeramente de unaversión a otra.ex indica el número de líneas y caracteres del fichero, pero no imprime éste en la pantalla amenos que se le dé la orden de impresión adecuada.El editor está ahora en modo comando, listo para aceptar órdenes tales como añadir,mover, borrar, escribir, salirse, imprimir. Estos comandos deben seguir un formato concretoque se describe a continuación.5.5.3 FORMATO DE LOS COMANDOS exUn comando ex completo, en general, tiene tres partes: dirección, comando y parámetros.La dirección indica al editor la línea o líneas sobre las que ha de actuar. El comandoinforma al editor sobre la actuación concreta que debe realizar ejemplos de comandos son p(print, para imprimir una línea en la pantalla), d (delete, para borrar una línea) y s (parasustituir un fragmento de texto por otro). Los parámetros añaden la necesaria informaciónadicional; por ejemplo, cuando se ha de hacer una sustitución. Sin embargo, con frecuenciaun comando completo posee una o dos de estas partes tan sólo. Laboratorio de Telemática
  33. 33. Sistema Operativo UNIX pág 295.5.4 LOCALIZACIÓN DE LÍNEASUno de los principales problemas al utilizar editores es indicar al programa en qué parte deltexto se desea insertar o introducir cambios. El editor de líneas ex soluciona esta dificultadutilizando números de línea; el texto se distribuye en el buffer temporal de ex según unaserie de líneas numeradas; a tal efecto, se considera una línea cualquier cosa que se hayatecleado seguida de un <return>. Las líneas de buffer están numeradas consecutivamente,y se renumeran cada vez que se inserta, borra o traslada una línea nueva. Además de estalista de líneas de texto, el editor mantiene siempre el concepto de línea actual; se puedeimaginar la línea actual como una línea apuntada por un "cursor invisible”.Pero, ¿qué línea del buffer es la línea actual?. La primera vez que se llama al editor paraactuar sobre un fichero ya existente, la línea actual es la última del buffer del editor. Cuandose pulsa un comando de impresión, apéndice o inserción, el comando se ejecuta conrespecto a la línea actual. Por ejemplo, podemos utilizar el comando de impresión tecleandopCon esta orden se imprimirá en pantalla la línea actual. Por otra parte, si se teclea3pse imprimirá la línea 3. En este último caso, hemos dado al editor una línea específica sobrela que trabajar; a continuación, la línea 3 se transforma en la línea actual. En general,cuando se ejecuta un comando, se tomará como nueva línea actual la última línea afectadapor el mismo.Se puede emplear el símbolo punto (.) como abreviatura para indicar la línea actual, por ello,esta línea se llama también “línea punto”. Así, hablaremos de la línea 3, o de la línea 4, ode la línea punto. Por cierto, no permita que el múltiple uso del punto en el editor ex leconfunda. Recuérdese que cuando se pretende abandonar el modo texto se introduce unpunto solitario en la línea; sin embargo, si está en modo comando, el punto se interpretacomo una forma abreviada de expresar la dirección de la línea actual. Así, si tecleamos.Pse imprimirá la línea actual. mientras que si ordenamos.dse destruirá dicha línea.Otra abreviatura útil del editor es el símbolo $, indicando la última línea del fichero. Porejemplo$pimprime la última línea del fichero.También se pueden indicar direcciones relativas, utilizando los signos + y - seguidos por unnúmero. Su funcionamiento sería:.+3 3 líneas después de la línea actual$-2 2 líneas antes de la última línea del ficheroSe puede especificar un rango de líneas, indicando dos números de líneas separados poruna coma. Por ejemplo, Laboratorio de Telemática
  34. 34. pág 30 Sistema Operativo UNIX3,8dborra todas las líneas entre 3 y 8. en tanto que1,$pimprime todas las líneas del fichero en la pantalla. Por su parte,.-9,.+9pimprimirá 19 líneas, tornando la línea actual como centro.Se puede ver, por tanto, que hay varias formas de indicar direcciones de líneas. Así, sepuede enviar al editor un número de línea, o un rango; o emplear los símbolos especiales “.”y “$” para referirse a las líneas actual y final, respectivamente; además, utilizando signosmás y menos se puede localizar líneas con respecto a la línea actual o a la última línea.Bien, pero ¿cómo podemos saber los números de línea de cada una de ellas?.Si el fichero es corto, se puede usar 1,$nu para presentar el fichero completo en pantalla.Otra posibilidad es averiguar el número de línea de la línea actual (línea punto); esto últimose consigue tecleando un punto seguido de un signo igual:.=El editor responderá indicando el número de línea correspondiente a la línea actual.(Recuerde además, que todos los comandos ex a semejanza de los comandos UNIX, debenterminarse con un <return>.) Este comando es particularmente útil cuando se ha estadomoviendo con desplazamientos relativos usando los signos + y -, descritos anteriormente, ytambién cuando se utiliza el sistema de búsqueda de textos que se describe a continuación.5.5.5 BÚSQUEDA DE PATRONESEl editor ex presenta una alternativa interesante y útil para encontrar líneas; en lugar deespecificar el número de línea, se le puede entregar un patrón (combinación de letras,números y signos de puntuación) para que busque él mismo en el fichero. Para ello seencierra el patrón entre barras. Si se envía el comando/coliflor/el editor buscará a lo largo del fichero la palabra “coliflor” y, a continuación, imprimirá lalínea que contiene el primer ejemplo de ésta: en ese momento, detiene la búsqueda. Elproceso de búsqueda comienza a partir de la línea actual y en dirección hacia el final delfichero. Si ex no encuentra el patrón indicado cuando llega al fin de fichero, vuelve alcomienzo del mismo y rastrea hasta la línea original. Si aun así no lo encuentra, se loindicará imprimiendo un signo de interrogación.Los patrones son interpretados por ex como "cadenas de caracteres”, no como palabras.Así, si indicamos a ex que localice la cadena/eso/buscará una coincidencia con dicha cadena, sin importarle si es una palabra separada (eso,en este caso) o un fragmento de una palabra mayor (esotérico o resoplar, por ejemplo):simplemente buscará la primera aparición de las tres letras consecutivas e-s-o.Podemos introducir un espacio como parte del patrón de búsqueda, para evitarnos este tipode problemas. Así, el comando Laboratorio de Telemática
  35. 35. Sistema Operativo UNIX pág 31/eso /encontrará “eso” y "beso” pero no “resoplar”, ya que no existe espacio detrás de la “o” enesta última palabra.5.5.6 DESPLAZAMIENTOS POR EL TEXTOExiste aún otra técnica para localizar líneas de texto. Si se pulsa<return>sin ningún otro comando, el editor ex interpreta esta orden como.+1pEs decir, ex avanzará una línea y la imprimirá en pantalla. De este modo, si se deseaavanzar lentamente en el buffer para localizar determinados cambios, se puede emplear lasiguiente secuencia:1p<return><return><return>y así sucesivamente. Cuando se encuentre una línea que se desea cambiar, se tienen dosalternativas. Se puede trabajar sobre la línea actual con el número de línea, o bien utilizar ladirección por defecto, que es la línea punto. Es decir, si se teclea.púnicamente, la dirección considerada es la línea actual por defecto.Existe también en ex una forma muy conveniente de llenar la pantalla de texto de un solavez; es el comando z, que llena la pantalla con texto a partir de la línea actual hacia abajo;además, este comando acepta un número de línea a efectos de posicionamiento. Así, unbuen sistema de observar un fichero sería la siguiente secuencia de comandos: prompt del modo comando1z imprime texto en pantalla comenzando por la línea 1z imprime texto adicional según se requieraUna vez que sabemos localizar líneas, dedicaremos nuestra atención a la creación yalteración de ficheros.5.5.7 INTRODUCCIÓN DE TEXTO EN exEl editor ex posee tres comandos que transforman el teclado en una máquina de escribirpara la introducción de texto (o datos o programas) en su buffer. Estos comandos son apara añadir texto, i para insertarlo, y c para efectuar cambios. Cuando no se incluye ningunadirección, los comandos afectan a la línea actual. En caso contrario, los comandos añadir einsertar deberán contener una única dirección de línea, mientras que cambiar podrá tenerlas direcciones de una o más líneas. El comando añadir situará el texto a continuación de lalínea indicada, mientras que insertar lo colocará antes de esa línea. Las líneas anotadas enun comando cambiar quedan borradas para dejar sitio al nuevo texto que se introduzca. Laboratorio de Telemática
  36. 36. pág 32 Sistema Operativo UNIX5.5.8 EL COMANDO DE SUSTITUCIÓN: sSi se desea cambiar la ortografía de una palabra, o añadir palabras nuevas dentro de unalínea, se debe usar el comando s, o comando de sustitución. Recordamos que ex es uneditor de líneas, por lo que nuestro cursor imaginario puede únicamente distinguir entre unalínea y otra; no puede moverse dentro de una línea. Este defecto es quizá la mayordesventaja de un editor de líneas. Así, para indicar al editor la palabra que deseamoscambiar, tenemos que teclearla por completo. Recuérdese que el número es una dirección.Si no se específica, la sustitución se aplicará a la línea actual.Se puede añadir también un parámetro p (un parámetro es semejante a un comando) con elfin de imprimir el resultado. El parámetro se introduce al final de la línea de comando, y eleditor imprimirá la línea después de efectuar la sustitución. El aspecto de la línea completasería:3s/texto antiguo/texto nuevo/pLos patrones de sustitución son cadenas de caracteres, exactamente iguales a los patronesde búsqueda ya mencionados; por ello, se deben manejar con cierta precaución. Porejemplo, supongamos que la línea 3 contieneSobre usted pesa la responsabilidad de esa muerte.Como queda un poco cacofónico, intentamos la sustitución3s/esa/aquella/pSin embargo, el resultado es muy distinto al que se podía esperar. El editor rastrea la líneahasta encontrar la primera apariciÀa

×