Monografias.com > Sin categoría
Descargar Imprimir Comentar Ver trabajos relacionados

Material de Gestión de Sistemas (página 2)




Enviado por Carolina Azar



Partes: 1, 2

 

CAPITULO III

Sistema de
Archivos en
UNIX

El sistema de
archivos de UNIX, desde el
punto de vista del usuario, tiene una organización jerárquica o de
árbol invertido que parte de una raíz conocida como
"/" (diagonal). Es una diagonal al revés que la usada en
DOS. Internamente se usa un sistema de direccionamiento de
archivos de varios niveles, cuya estructura
más primitiva se le llama 'información node' (i-node) cuya
explicación va más allá de este trabajo. El
sistema de archivos de UNIX ofreceun poderoso conjunto de
comandos y
llamadas al sistema. En la tabla 8.2 se muestran los comandos
más útiles para el manejo de archivos en UNIX vs.
VMS.

Tabla 8.2 Manejo de Archivos en UNIX y
VMS

La protección de archivos en UNIX se maneja por
medio de una cadena de permisos de nueve caracteres. Los nueve
caracteres se dividen en tres grupos de tres
caracteres cada uno.

El primer grupo (1)
especifica los permisos del dueño del archivo. El
segundo grupo especifica los permisos para aquellos usuarios que
pertenecen al mismo grupo de trabajo que el dueño y
finalmente el tercer grupo indica los permisos para el resto del
mundo. En cada grupo de tres caracteres pueden aparecer las
letras RWX en ese orden indicando permiso de leer (READ),
escribir (WRITE) y ejecutar (EXECUTE). Por ejemplo, la cadena
completa RWXR-XR– indica que el dueño tiene los tres
permisos (READ,,WRITE,EXECUTE), los miembros de su grupo de
trabajo tienen permisos de leer y ejecutar (READ,EXECUTE) y el
resto del mundo sólo tienen permiso de leer (READ). Las
llamadas al sistema más útiles en UNIX son 'open',
'close' e 'ioctl'. Sirven para abrir, cerrar archivos; y
establecer las características de trabajo. Por ejemplo, ya
que en UNIX las terminales se accesan a través de archivos
especiales, el 'ioctl' (input output control) sirve
para establecer la velocidad,
paridad, etc; de la terminal.

El sistema de
archivos

Como hemos visto anteriormente, el sistema de
archivos está organizado como un árbol con un
único nodo raíz llamado root (se escribe "/");
todos los nodos que no son hojas de la estructura del sistema
de archivo son directorios de archivos, y los archivos que
están en las hojas del árbol son directorios,
archivos regulares o archivos de dispositivos. El nombre de
un archivo se obtiene por su camino que describe como
localizarlo dentro de la jerarquía del sistema de
archivos. El camino, o path name, es una secuencia de nombres
de componentes separados por el carácter barra "/"; un componente es
una secuencia de caracteres que identifican a un nombre de
archivo único contenido en el componente (directorio)
anterior. Un camino absoluto comienza con el carácter
barra y especifica un archivo que pude ser encontrado
empezando en la raíz del sistema de archivos y
recorriendo el árbol de archivos, siguiendo las ramas
que conducen a los sucesivos componentes del camino. De esta
forma los caminos "/etc/passwd", "/bin/who" y
"/usr/src/cmd/who.c" identifican archivos en el árbol
mostrado en la figura 4, mientras que "/bin/passwd" y
"/usr/src/date.c" no lo hacen. Un camino no tiene que empezar
en el nodo raíz, también puede ser identificado
con respecto al directorio actual de un proceso
que se está ejecutando, por omisión del
carácter barra inicial en el camino. Así,
empezando desde el directorio "/dev", el camino "tty01"
identifica al archivo cuyo camino absoluto es
"/dev/tty01".

      Los programas en
UNIX no tienen conocimiento del formato interno en el que el
kernel almacena los datos,
tratando los datos como un flujo de bytes. Los programas
deben interpretar el flujo de datos como ellos deseen, pero
la interpretación no interviene en como el
sistema
operativo almacena los datos. De esta forma, la sintaxis
del acceso a los datos en un archivo está definido por
el sistema y es idéntico para todos los programas, sin
embargo la semántica de los datos está
impuesta por el programa.

      Los directorios
son iguales a los archivos regulares en este sentido; el
sistema trata los datos en un directorio como un flujo de
bytes, pero los datos contienen los nombres de los archivos
en el directorio en un formato predefinido tal que el sistema
operativo y los programas puedan descubrir los archivos de un
directorio.

      Para el usuario,
el sistema UNIX trata a los dispositivos como si fuesen
archivos. Los dispositivos, identificados por archivos de
dispositivos, ocupan posiciones en la estructura de
directorios del sistema de archivos como nodos. Los programas
acceden a los dispositivos con la misma sintaxis que se usa
cuando acceden a archivos regulares; la semántica de
la lectura
y escritura
de los dispositivos es la misma que la de la lectura y
escritura de archivos regulares. Los dispositivos
están protegidos de la misma forma que los archivos
regulares están protegidos: por su propio conjunto de
permisos de acceso. Como los nombre de los dispositivos
aparecen iguales que los nombres de los archivos regulares y
las mismas operaciones
trabajan para dispositivos y archivos regulares, muchos
programas no tienen conocimiento internamente del tipo de
archivo con el que está trabajando.

Reglas para el manejo de directorios

Las dos órdenes que necesitamos para manipular
directorios son mkdir y rmdir. La forma de trabajar
de estas órdenes es la misma que en DOS.

mkdir nom_directorio

rmdir nom_directorio

mkdir (make directory) permite crear un nuevo
directorio, mientras que rmdir (remove directory) lo
elimina. Para eliminar un directorio, este tiene que estar
vacío. Ejemplo:

Apis:~$ ls -F
c/ personal/
pruebas.c
xxx
Apis:~$ rmdir c
Apis:~$ mkdir tmp
Apis:~$ ls -F
personal/ pruebas.c tmp/

Reglas del uso de
archivos

En UNIX existe un conjunto de órdenes que entre
otras funciones,
permiten visualizar el contenido de archivos. Si bien otras
aplicaciones se explicarán más adelante en otros
capítulos, aquí se introduce su utilización
como visores.

Orden cat

Se utiliza para visualizar el contenido de un archivo de
texto
(ASCII) por la
pantalla. Si a cat no le pasamos como argumento ningún
archivo de texto, entonces leerá de la entrada
estándar (teclado) hasta
que pulsemos Ctrl+d (^d). Una vez hecho esto, visualizará
lo que acabamos de escribir. Por lo tanto, cat es una orden que
por defecto (si no le pasamos parámetro alguno) lee de la
entrada estándar y dirige su salida a la salida
estándar (la pantalla). Ejemplo:

Apis:~$ cd
Apis:~$ cat /etc/motd
OSF/1 V2.0 (Rev. 240); Fri Aug 5 11:54:48 GMT 1994
OSF/1 V2.0 Worksystem Software (Rev.
240)

#############################################
# BIENVENIDO AL LABORATORIO DE
ARQUITECTURA
#
#############################################

Apis:~$ cat mensaje
Lo que estoy escribiendo es un
mensaje que se muestra por
pantalla
con el uso de la orden "cat".
Apis:~$

Orden more

La orden imprime por pantalla el contenido del archivo
de texto que le pasemos como argumento. Su sintaxis
es:

more [archivo1 …]

A diferencia de la orden cat, la visualización se
hace pantalla a pantalla. Para avanzar en la visualización
línea a línea, se debe pulsar retorno ( ).
Para visualizar la siguiente pantalla, se pulsará la barra
espaciadora, y para finalizar se pulsará la tecla q
(quit).

La tabla de opciones vista para la orden man es
aplicable también a esta orden.

Órdenes head y tail

En muchas ocasiones no se pretende visualizar el archivo
de texto completo, sino que con algunas líneas
sería suficiente (por ejemplo para identificarlo). Las
órdenes head y tail se pueden utilizar para visualizar las
primeras o las últimas N líneas de un archivo de
texto. Su sintaxis es:

head [-N] archivo1

tail [-N] archivo1

En esta sección se introducen las órdenes
básicas necesarias para poder
gestionar los archivos bajo UNIX.

Orden cd

Se utiliza para cambiar el directorio de trabajo
actual.

Su sintaxis es la siguiente:

cd [path_name]

Cuando se utiliza sin parámetros, el directorio
de trabajo actual pasa a ser el directorio propio (el del
arranque), también conocido como directorio HOME, dicho de
otro modo, si nuestro directorio act /usr/local, dando la orden
cd nos colocamos en nuestro directorio HOME.

HOME es el directorio en el que iniciamos sesión
de trabajo, es decir el CWD que tenemos al entrar en el
sistema.

Tanto cd, como pwd son ordenes internas del
intérprete, no existe ningún archivo ejecutable en
el que estén programadas.

Apis:~$ cd /usr/so
Apis:~$ pwd
/usr/so
Apis:~$ cd
Apis:~$ pwd
/users/so/tel/so01

Orden cp

Se utiliza para copiar archivos. Su sintaxis
es:

$ cp archivo1 [archivo2 …] destino

Como mínimo necesita dos argumentos. El primero
es el archivo existente que queremos copiar en otro lugar, y el
segundo es el nombre del archivo destino. Las rutas de ambos
archivos se pueden dar tanto en forma absoluta como relativa. En
caso de que el archivo destino exista, su contenido se
perderá, quedando sustituido por el contenido de
archivo1. Ejemplo:

Apis:~$ cd
Apis:~$ pwd
/users/so/tel/so25
Apis:~$ ls -F
c/ personal/ pruebas.c
pruebas xxx
Apis:~$ cp pruebas.c prnew.c
Apis:~$ ls -F
c/ personal/ pruebas.c
prnew.c pruebas xxx

Orden rm

Se utiliza para borrar un conjunto de archivos. Su
sintaxis es:

$ rm [-irf] archivo1 archivo2 …

Esta orden opera silenciosamente en ausencia de problemas, lo
c especialmente peligroso si se tiene en cuenta que en UNIX un
archivo borrado no puede ser recuperado de manera
alguna
.

Las opciones tienen el siguiente significado:

-i (interactive) antes de borrar cada uno de los
archivos, rm preguntará si realmente queremos
hacerlo.

-f (force) fuerza el borrado de los archivos,
incluso si estos están protegidos contra escritura (el
archivo debe pertenecer al usuario que quiere borrarlo).
Ejemplo:

Apis:~$ ls -F
c/ personal/ pruebas.c
prnew.c pruebas xxx
Apis:~$ rm prnew.c
Apis:~$ ls -F
c/ personal/ pruebas.c
pruebas xxx

Orden mv

Su funcionalidad es idéntica a cp, salvo que mv
provoca que los archivos o directorios origen desaparezcan de su
localización inicial. Su sintaxis es:

$ mv origen1 [origen2 …] destino

Ejemplo:

Apis:~$ mv pruebas personal
Apis:~$ ls -F
c/ personal/ pruebas.c
xxx
Apis:~$ ls personal
pruebas

Tipos de Permisos, propietario y grupo de un
archivo

Como hemos visto anteriormente, a cada archivo se le
asocian un conjunto de permisos de acceso (rwx) asociados
a cada uno de los tres niveles de la jerarquía de usuarios
existente: nivel de usuario, nivel de grupo y el nivel formado
por el resto de los usuarios del sistema.

La orden chmod (change mode) permite cambiar los
permisos de un archivo. La utilización de esta función
está restringida exclusivamente al propietario del archivo
cuyos permisos (modo) se desean alterar o al administrador del
sistema. La sintaxis es la siguiente:

chmod modo archivo1 [archivo2 … ]

donde modo supone el modo de acceso al archivo
que se desea asignar. Hay dos formas diferentes de utilizar la
orden:

  • Modo absoluto. Consiste en fijar con un
    número de tres dígitos los permisos de los tres
    niveles de la jerarquía de usuarios. Para ello, la
    cadena de 9 caracteres que indican los permisos de acceso al
    archivo que se quieren asignar, se convierten a dígitos
    binarios, poniendo un 1 en el caso de que se quiera activar el
    campo (rwx) o un 0 en el caso de querer desactivarlo.
    Así, si se desea asignar al archivo prog.c permisos
    rwxr-xr–, la secuencia de dígitos será:
    111101100. Con estos nueve dígitos se forman 3 grupos,
    cada uno perteneciente a los permisos asociados a cada uno de
    los niveles de la jerarquía de usuarios (111- usuario,
    101- grupo, 100- otros), y se asocia a cada uno su valor en
    octal (7- usuario, 5- grupo, 4- otros). Ejemplo:
  • Apis:~$ pwd
    /users/so/infges/so00
    Apis:~$ ls -l prog.c
    -rw-r—– 1 so00 users 1024 Sep 3 14:58 prog.c
    Apis:~$ chmod 754 prog.c
    Apis:~$ ls -l
    -rwxr-xr– 1 so00 users 1024 Sep 3 14:58 prog.c

Modo relativo. En este caso la
referencia a los permisos asignados al archivo se realiza de
acuerdo con la siguiente sintaxis:

chmod quién qué
dequémodo

El primer campo indica a quién se le modifica
el permiso: u(usuario), g (grupo), o
(otros) y a (todos).

El segundo campo indica si se activa (+), se
desactiva () o se fija (=) un permiso. Cuando se
utiliza = los permisos que no aparecen se
eliminan.

El tercer campo indica sobre que modos de acceso se
actúa (r, w, x).
Ejemplo:

Apis:~$ chmod a-x prog.c
Apis:~$ ls -l prog.c
-rw-r–r– 1 so00 users 1024 Sep 3 14:58 prog.c
Apis:~$ chmod go+w prog.c
Apis:~$ ls -l prog.c
-rw-rw-rw- 1 so00 users 1024 Sep 3 14:58 prog.c
Apis:~$ chmod gu-rw prog.c
Apis:~$ ls -l prog.c
——-rw- 1 so00 users 1024 Sep 3 14:58 prog.c
Apis:~$ chmod u=r prog.c
Apis:~$ ls -l prog.c
-r——– 1 so00 users 1024 Sep 3 14:58 prog.c

Por otro lado, la orden  umask  permite fijar
los permisos que tendrá por defecto cualquier archivo que
cree un determinado usuario. Su estructura es:

umask [###]

  • Llamado sin parámetros, el resultado son tres
    dígitos octales que indican de izquierda a derecha el
    valor de la máscara que determina los permisos iniciales
    para el propietario, el grupo y para el resto de usuarios. Cada
    dígito octal de la máscara contiene tres
    dígitos binarios, un 1 binario indica que cuando se cree
    un nuevo archivo, el permiso asociado (rwx) será
    borrado y un 0 binario indica que se utiliza el permiso
    implícito.

Si no se desea que por defecto los archivos y
directorios se creen con estos valores, se
puede cambiar el valor de la máscara de usuario pasando
como argumento a la orden umask un número de tres
dígitos en octal. Este número es el resultado de
fijar a 1 aquellos permisos que se desean limpiar y dejar a 0 los
bits de los permisos que no se quieren limpiar (es decir, justo
del revés a como se construían los permisos en
octal para chmod). Así, si se desea que a partir de este
momento los archivos y directorios que se creen tengan todos los
permisos desactivados para los niveles de grupo y de otros y que
no se limpie ningún permiso para el nivel de propietario,
la orden a introducir será:

$ umask 077

Cambio del propietario de un archivo. Orden
chown

La sintaxis de chown es la siguiente:

$ chown propietario_nuevo archivos

Ejemplo:

Apis:~$ ls -l a.out
-rwxr-xr-x 1 so13 so 2894 Nov 11 16:51 a.out
Apis:~$ chown so00 a.out
Apis:~$ ls -l a.out
-rwxr-xr-x 1 so00 so 2894 Nov 11 16:51 a.out

En muchos sistemas esta
orden sólo puede ser ejecutada por el administrador del
sistema.

Cambio de permisos

Los archivos y directorios tienen asignados una serie de
permisos que muestran quién puede leer, ejecutar y
modificar dicho archivo o directorio. Para poder ver los permisos
asignados se utiliza el comando ls -l :

Por ejemplo:

nodo5.cecalc.ula.ve>ls -l

drwxr-xr-x 2 hector ciencias 512
Apr 19 17:50 Miscellaneous

-rw-r–r– 1 hector ciencias 860 Dec 12 1996
index.html

lrwxrwxrwx 1 root ciencias 10 Apr 25 15:44 index.shtml
-> index.html

La información mostrada tiene la siguiente
forma:

-rw-r–r– usuario grupo tamaño HH:MM
nombre

La notación: d rwx r-x r-, indica la clase de
permiso y quién tiene asignado los diferentes tipos de
permisos:

d

–>

indica que se trata de un directorio

rwx

–>

permiso de lectura ( r) , escritura ( w ) y
ejecución ( x) para el usuario

r-x

–>

permiso de lectura y ejecución para el
grupo

r-

–>

únicamente permiso de lectura para todos
los demás usuarios

El usuario puede cambiar los permisos por medio del
comando chmod. Los cambios de permisos sólo lo
puede hacer el dueño del archivo y el administrador del
sistema.

chmod xyz

 

donde

x

= u (usuario), g (grupo), o (otro), a
(todos)

y

= + (Agregar el permiso), – (quitar el
permiso)

z

= r (lectura), w (escritura), x
(ejecución)

En el siguiente ejemplo se le coloca permiso de
escritura y ejecución, para todos los usuarios, al archivo
index.html.

nodo5.cecalc.ula.ve>chmod a+wx index.html

Para verificar los cambios simplemente escriba el
comando ls -l

nodo5.cecalc.ula.ve>ls -l

-rwxrwxrwx 1 hector ciencias 860 Dec 12 1996
index.html

Capítulo IV

Editores de
Texto Vi, Pico y Ed.

El sistema UNIX viene con varios editores de texto. Un
editor de textos, permite incluir o modificar textos en un
archivo.

Entre ellos se tienen algunos muy robustos como los
editores de línea ed, ex o más complejos como el
editor visual vi .

Editor Visual vi.

El editor vi viene incluído en casi todas
las versiones del sistema operativo UNIX. Por ello es útil
conocerlo, pues no siempre tendremos otras opciones.

vi archivo

Si el archivo existe, entonces aparecarán las
primeras líneas en la pantalla. De no ser así, un
archivo con ese nombre será creado.

Una vez dentro del programa vi, el ambiente de
trabajo es muy distinto que el del interpretador de comandos.
Dentro de vi, se pueden crear textos, hacer cambios, etc.
Para salir del vi y guardar el archivo con las
modificaciones, se utiliza el comando vi:

ZZ (Guardar archivo y salir de vi)

que guarda los cambios y nos regresa al nivel del
interpretador de comandos. Si se desea salir de la sesión
de vi sin guardar los cambios, escriba el comando de
vi:

:q! (salir de vi sin guardar)

seguido de RETURN.
Digamos que qeueremos editar un archivo llamado archivo.
Escribimos el comando
vi archivo

Si el archivo no existe, la pantalla se pondrá en
blanco, excepto mostrando tildes (~) en la primera columna de los
renglones y el cursos en el primer renglón. También
mostrará un mensaje en el último
renglón.

El editor vi tiene dos modos: el modo de
comandos y el inserción. El modo de
comandos, permite mover el cursor con las flechas, borrar textos,
mover textos, etc. El modo de inserción permite entrar a
modificar el texto.

El editor vi, siempre comienza en modo de
comandos. Para cambiar al modo de inserción se presión la
i (sin necesidad de hacer el RETURN). Cuando se termina de
hacer los cambios, se termina de hacer los cambios, se regresa al
modo de comandos con la tecla Esc.
Presentamos enseguida una serie de comandos básicos para
trabajar en vi:

Movimientos de Cursor

h

Mueve el cursor a la izquierda

j

Mueve al cursos hacia abajo

k

Mueve el cursor hacia arriba

l

Mueve el cursoe hacia la derecha

+

Mueve el cursor al principio del siguiente
renglón

Mueve el cursor al principio del renglón
anterior

^

Mueve el cursor al principio del
renglón

$

Mueve el cursor al final del
renglón

G

Mueve el cursor al final del archivo

iG

Mueve el cursor al inicio del i-ésimo
renglón

Borrado.

x

Borra el caracter donde está el
cursor

nx

Borra n caracteres desde el cursor

dw

Borra palabra frente al cursor

ndw

Borra n palabras

dd

Borra la línea donde se encuentra el
cursor

ndd

Borra n líneas

Inserción

Entra en modo de anexar. Escribe inmediatamente
a la
derecha del cursos.

A

Anexa al final del renglón.

i

Entra en modo de inserción. Escribe
inmediatamente a
izquuierda del cursor.

I

Inserta al inicio de renglón.

o

Abre una línea abajo del
cursor.

O

Abre una línea arriba del
cursor.

u

Anular el último cambio
hecho al archivo

Existe un comando adicional de utilidad. Este
comando sirve para buscar palabras o secuencias de cararcteres, a
partir del cursor hasta el final del archivo. Por ejemplo,
/salida(Esc)
busca la primera aparición de la palabra salida. Se
puede utilizar el RETURN en lugar del Esc. El comando
?salida(Esc)
busca hacia atrás la primera aparición de la
palabra salida
El comando de interrupción Ctrl-C del UNIX, sirve
también para evitar una señal al vi para que
abandona el último comando y regrese al modo de
comandos.

Figura 3.1: Movimiento de
cursor en vi

Referencia rápida del editor de textos
VI

Vi es una abreviación de visual. Es un
editor de textos que se incluye en todas las versiones del
sistema operativo UNIX. Fue uno de los primeros que se utilizaron
y entre sus ventajas está la de ser muy compacto y no
requerir por lo tanto mucha memoria del
sistema para su ejecución.

Existen dos modos de trabajo: de Mandos y de
Edición.

Para llamar al modo de mandos presionar Esc y
para llamar al modo de edición
presionar i.

% vi nombre de archivo -> edita el
archivo o lo crea si acaso no existe

Movimiento

h —> Mueve el cursor a la
izquierda

l —> Mueve el cursor a la derecha

k —> Mueve el cursor hacia arriba

j —> Mueve el cursor hacia abajo

CTRL-d –> Avanza una pantalla hacia
abajo

CTRL-u –> Avanza una pantalla hacia
arriba

/expresión –> Localiza
expresión a partir del cursor

Edición

dd —> borra la línea donde esta el
cursor

[n]dd -> borra n líneas a
partir de la posición del cursor

[n]x –> borra n caracteres a
partir del cursor

o —> crea una nueva línea abajo del
cursor

O —> crea una nueva línea arriba del
cursor

A —> agrega texto al final de una
línea

Inserción de texto

CTRL-W —> Borra la palabra
anterior

CTRL-U —> Borra la línea
actual

ENTER —> comienza una línea
nueva

Salir de vi

Estando en modo de mandos teclear el caracter " :
"

:q! —> termina la sesión sin guardar
cambios

:w —> graba la modificaciones sin
salirse

ZZ ó 😡 -> termina la
sesión y salva los cambios

Nociones básicas del editor
vi

Este editor a primera vista es confuso y por eso muchos
de nosotros preferimos ignorarlo, y usar otros editores, por
ejemplo yo prefiero el emacs. Pero lo que tiene este editor es
que esta absolutamente en todos las distribuciones, si ya se que
el emacs también, pero en muchos casos no se instala por
defecto y además ocupa mucho tamaño. Mientras que
el vi siempre esta y siempre va estar, ósea lo que quiero
hacerles llegar es que si las X fallan o si el sistema es antiguo
o si no tienen lugar en el disco rígido y no instalaron un
editor de texto, como el emacs, o etc.y necesitan editar un
archivo, EL QUE VA A ESTAR AHI PARA SALVARLOS ES " vi
".Por lo que me parece una buena idea tener al menos una leve y
pequeña idea de como utilizar este editor y eso lo que voy
a dar una pequeña reseña de este editor. Para mas
información pueden leer el capitulo que dedica L.I.P.P a
vi.

Nota: cuando utilizo {} no hay que teclearlo, solo las
uso para facilitar la explicación.

Bueno lo primero que tienen que saber es como comenzar,
se comienza llamando al editor y al archivo que queremos editar,
si el archivo es nuevo ponemos el nombre que le queramos dar.
El esquema basico es:

vi {nombre del archivo}

Esto lo que hace es abrir el archivo y situarnos en el
modo ingresar ordenes en este modo no podemos editar el
texto para hacer esto hay que dar la orden necesaria, esta orden
es:

i sin enter

Ahora ya puede editar el texto ósea agregar,
borrar, corregir etc. Puede moverse por el texto usando las
flechas.

Para salir de este modo solo tiene que teclear
Esc

De esta manera vuelve a estar en el modo ingresar
ordenes
, pueden volver a entrar al modo ingresar texto
cuando quieran como les indique antes.
Bueno ahora lo que tienen que saber es como irse sin grabar o
grabando los cambios, para esto hay que ingresar en el modo
última orden esto se hace tecleando:

:

El cursor aparece abajo de todo, es ahí donde
tiene que ingresar según lo que quieran lo
siguiente

Para irse sin guardar los cambios:

q! [enter]

Para irse guardando los cambios:

wq [enter]

Para guardar el archivo sin irse de vi:

w [enter]

Para abrir otro archivo sin irse de vi:

e {archivo nuevo} [enter]

Nota: previamente guarde el archivo en el que esta
trabajando, sino aparecera un mensaje de error.

Bueno con estas ordenes ya puede medianamente editar un
archivo con vi, les recuerdo que yo solo comente lo basico para
poder usarlo.Pero vi tiene muchísimas ordenes mas que
facilitan la tarea de edición continuación voy a
explicar dos ordenes que ayudan mucho.
La primera es como insertar el texto de otro archivo sin tener
que copiarlo a mano palabra por palabra.
Para esto se teclea:

:r {nombre del archivo a insertar}

Nota el texto se insertara en el lugar donde este el
cursor.

Funcionamiento general del vi

Al invocar este editor aparece en el monitor la
pantalla de edición. En ella aparece la posición
del cursor resaltada, las líneas en blanco
señaladas con el carácter ~ y en la parte inferior
de la pantalla aparece la línea de estado, que
muestra el nombre del fichero y el número de caracteres
que contiene.

Si se invoca el vi   pasándole como
parámetro el nombre de un fichero en la pantalla de
edición aparecerá su contenido. Cuando se invoca
este editor con el nombre de un fichero que no existe, se crea
automáticamente.

Existen dos modos de operación en el vi
 :

Para añadir texto al fichero


Modo Comando:

Para introducir órdenes que realizan funciones
específicas del vi  .

Cuando se edita un fichero con el vi  , los
cambios no se hacen directamente sobre el fichero. En realidad,
se aplican a una copia del fichero que el vi   crea
en un espacio de memoria temporal llamado buffer. La copia en
disco del fichero se modifica sólo cuando se graban los
contenidos del buffer.

Esto tiene sus ventajas y sus inconvenientes. Por un
lado, significa que se puede salir de la edición de un
fichero y descartar todos los cambios hechos durante una
sesión, dejando la copia de disco intacta. Por otro lado,
se podría perder el contenido no grabado del buffer de
trabajo si el sistema cae.

Lo más aconsejable es grabar el trabajo
frecuentemente, especialmente cuando se hacen cambios
importantes. Para grabar el fichero que se está editando
sin salir del vi  , basta pulsar en modo comando la
orden :w

Para terminar la sesión caben varias
posibilidades, siempre en modo comando:

:q

Salir cuando no se han hecho modificaciones

:q!

Salir y descartar los cambios

:wq

Salir y guardar los cambios

IMPORTANTE: Hay que procurar no editar un fichero
con varias copias del vi  al mismo tiempo, pues
de este modo no se está seguro de
cuál es la copia que está realmente grabada en
disco.

Modo Edición:

Cuando se arranca el vi  , siempre
está en modo comando, por lo que antes de poder escribir
texto en el fichero se debe teclear uno de los comandos de
entrada del vi  , tales como i  (insert),
para insertar texto en la posición actual del cursor, o
a  (append) para insertar texto después de la
posición actual del cursor.

Para regresar la modo comando, basta con presionar Esc.
Si en un momento determinado no se sabe en qué modo se
está, simplemente pulsando Esc se asegura uno de que
está en modo comando, y se podrá continuar con el
trabajo.

Modo Comando:

Cuando se abre un fichero con vi  , se
está en modo comando. En este modo se pueden introducir
comandos que implementan un amplio rango de funciones. Muchos de
estos comandos constan de una o dos letras y un número
opcional relacionado con distintas funciones.

Muchos comandos no requieren pulsar Return para que se
ejecuten, pero todas las órdenes que empiezan por dos
puntos (:) requieren pulsar Return para que se
ejecuten.

Editor de línea
ed

El editor ed fue hecho con la idea de tener un editor
rápido y pequeño con lo mínimo
indispensable. Es, además, un editor confiable y que puede
ser usado en las peores condiciones: con terminales lentas, en
conexiones por modem y,
quizá la más interesante, desde archivos por
bloques. La mayoría de los editores asumen que toman la
entrada directa desde el teclado y que controlan una terminal,
por esto no pueden ser empleados como ed.

En su modo de operación normal, trabajan sobre
una copia del archivo, para sobre escribirlo, hay que dar una
instrucción específica. Trabaja sobre una
línea o un grupo de líneas que cumplan con un
patrón. Cada comando es un solo carácter,
típicamente una letra. Cada comando puede ser precedido
por uno o dos números de línea, que indican la
línea o el rango de líneas al que serán
aplicados. De no ser dado el número de línea,
actúa sobre la actual. Veamos un ejemplo:

$ ed

a

Cuando abandonaste el cielo

?Donde dejaste tus alas?

Cuando abandonaste el cielo

Quisiera saberlo, ?perdiste el halo?

¿Como encontraste el camino?

¿Aun te escondes cuando sale el
sol?

Cuando abandonaste el cielo

? Perdiste las alas?

.

w ángel

233

q

$

Después de invocar a ed inmediatamente le pedimos
que añada el texto con el comando a y comenzamos a guardar
el texto de un pequeño poema. Terminamos poniendo un. Como
único carácter en la línea y después
le pedimos que salve el archivo con el nombre de ángel. ed
nos responde con el número de caracteres que contiene, y
terminamos la sesión de edición con una
q.

Si quisiéramos añadir unas cuantas
líneas más, podríamos hacerlo
con:

$ ed angel

233

a

Ahora veo a un largo tren venir despacio

y una muerte
agradecida que me reconforta

dime Reina Ines ?vendras a verme?

El amigo del diablo es amigo mio

.

q

?

w

384

q

$

En esta ocasión, invocamos a ed directamente con
el nombre de un archivo que ya existe, así que nos
responde con el número de caracteres que contiene el
archivo. Comenzamos a añadir unas líneas, nos
detenemos y tratamos de salirnos. Esta vez ed nos avisa con ? que
el archivo no ha sido salvado. No debemos esperar una comunicación más comprensible de ed.
Su manera de avisarnos que algo no le gusta o que las cosas no
van bien es con un críptico ?. En este caso una segunda q
le indicaría que realmente nos queremos salir sin salvar
los cambios que hicimos. En todo momento una Q le indica a ed que
deseamos terminar la sesión sin guardar los
cambios.

Cuando queremos revisar el texto ya escrito, le podemos
pedir que imprima las líneas en un cierto rango con la
instrucción a,bp donde a y b son números de
línea. Por ejemplo, para ver la segunda
estrofa:

$ ed angel

384

6,9p

?Como encontraste el camino?

?Aun te escondes cuando sale el sol?

Cuando abandonaste el cielo

?Perdiste las alas?

.,$p

?Perdiste las alas?

Ahora veo a un largo tren venir despacio

y una muerte agradecida que me reconforta

dime Reina Ines ?vendras a verme?

El amigo del diablo es amigo mio

q

$

Los caracteres. y $ tienen el significado especial de
ser la línea actual y la última línea
respectivamente como podemos ver en la segunda parte del
ejemplo.

Si damos un enter por si sólo o un – seguido de
un enter, nos lista la siguiente línea y la anterior
respectivamente, moviéndose hacia adelante y hacia
atrás en el archivo. No permite moverse más
allá de la primera y de la última línea, ni
imprimirlas en orden inverso.

Podemos hacer búsquedas utilizando los operadores
/patron/ y ?patron? hacia adelante y hacia atrás
respectivamente. Una vez que encontramos el primero, podemos
traer el siguiente con las formas // y ??.

$ ed angel

384

/con/

?Como encontraste el camino?

//

?Aun te escondes cuando sale el sol?

//

y una muerte agradecida que me reconforta

?alas?

?Donde dejaste tus alas?

??

¿Perdiste las alas?

q

$

Y podemos usar una búsqueda como parte de un
rango:

1,/saber/p

Cuando abandonaste el cielo

¿Donde dejaste tus alas?

Cuando abandonaste el cielo

Quisiera saberlo, ?perdiste el halo?

.-1,.+3p

Cuando abandonaste el cielo

Quisiera saberlo, ?perdiste el halo?

¿Como encontraste el camino?

¿Aun te escondes cuando sale el sol?

Y como vemos, también podemos usar el. Como ancla
e imprimir de la línea anterior a tres más adelante
de la actual.

La forma genérica de los comandos es
número de línea o rango seguido del comando. Para
añadir a partir de una línea a partir de
línea se usa #a, para insertar antes de la línea
#i. Para borrar el rango de líneas de la i-ésima a
la j-ésima i,jd y i,jc para reemplazar el rango de
líneas por las que se dan a
continuación.

Para hacer reemplazos en base a patrones se utiliza
s/viejo/nuevo/:

2p

¿Donde dejaste tus alas?

2s/alas/celtas/

2p

¿Donde dejaste tus celtas?

Después del cambio se puede usar el modificador g
para que haga el reemplazo en todas las ocurrencias de la
línea o en todas las ocurrencias en el rango de las
líneas: s/viejo/nuevo/g. Por supuesto que la sintaxis es
extensible a rangos delimitados por patrones de búsqueda:
4,9s/viejo/nuevo/, 1,$s/viejo/nuevo/, 1,/viejo/s/viejo/nuevo/,
etc.

Cuando necesitamos incluir el patrón viejo dentro
del nuevo, no necesitamos reteclearlo, el carácter &
toma el valor:

2p

?Donde dejaste tus alas?

2s/alas/& marchitas/p

?Donde dejaste tus alas marchitas?

Y como vemos, la p después del comando de
reemplazo imprime la línea.

Para copiar y mover bloques, tenemos las instrucciones
i,jtk i,jmk donde el primero copia las líneas en el rango
de la i-ésima a la j-ésima después de la
línea k-ésima. Igual en el segundo caso, pero
borrándolas de su posición original.

También podemos incluir un archivo en el actual
con la instrucción r en la forma nr archivo con la cual lo
insertamos en el actual a partir de la línea
n-ésima.

Con i,jw archivo copiamos de la línea
i-ésima a la j-ésima en el archivo denominado. Con
i,jW archivo copiamos de la línea i-ésima a la
j-ésima al final del archivo
denominado.

EDITOR PICO

El editor pico es un editor simple
pero poderoso.

Sintaxis: pico [opciones] [fichero]

Algunas opciones:

-w :

Deshabilita el picado automático de las
líneas.

-m :

Habilita la funcionalidad del Mouse en entornos
gráficos, para posicionarse en el
texto.

+<n> :

se establece el comienzo de la edición en la
línea n-ésima.

Algunas opciones durante la
edición
:

Ctrl k :

borra y copia la línea actual en el
clipboard.

Ctrl u :

inserta el contenido del clipboard en el
texto.

Ctrl o :

salva el texto.

Ctrl x :

sale del editor. Pregunta si se desea salvar primero
en caso de haberse modificado el texto.

CAPITULO V

Programación Shell

La programación del shell es una de las
herramientas
mas apreciadas por todos los administradores y muchos usuarios de
Linux/Unix ya
que permite automatizar tareas complejas, comandos repetitivos y
ejecutarlas con un solo llamado al script o hacerlo
automáticamente a horas escogidas sin intervención
de personas.

La programación shell en Unix/Linux es, en
cierto sentido, equivalente a crear archivos .BAT en DOS.
La diferencia es que en Unix/Linux es mucho mas potente. Estos
scripts pueden usar un sinnúmero de herramientas
como:

  • Comandos del sistema Linux/Unix (ejm: ls,
    cut)
  • Funciones intrínsecas del shell (ejm: kill,
    nice)
  • Lenguaje de programación del shell (ejm:
    if/then/else/fi) 3 (ver tabla )
  • Programas y/o lenguajes de procesamiento en
    línea. (ejm: awk, sed, Perl)
  • Programas propios del usuario escritos en cualquier
    lenguaje.

El lenguaje de
programación de cada shell provee de una amplia gama
de estructuras de
control como se muestra en la tabla 

  • for name [ in word; ] do
    list ; done
  • select name [ in word ; ] do list ; done
  • case word in [ pattern [ | pattern ]ldots ) list ;;
    ]ldots esac
  • if list then list [ elif list then list ]ldots [
    else list ] fi
  • $while list do list done
  • $until list do list done
  • [ function ] name () { list; }

Instrucciones bash para programación
shell tbl_instr_bash

Un sencillo ejemplo es realizar un backup de solo
ciertos directorios (prog_dir1 y prog_dir2), luego comprimirlos
usando bzip2 y enviarlos a un area de almacenamiento
(digamos una unidad ZIP previamente montada en /mnt/zipdrive), y
además con que el nombre del archivo contenga la fecha del
día. Suena difícil? Realmente no lo es.

Se crea un archivo texto con cualquier nombre, por
ejemplo mibackup que contenga las instrucciones que se
desea ejecutar.

#!/bin/sh

#

echo "———- Captura fecha ———–"

fecha=`date +%Y%m%d`

#

echo "———- Haciendo Tar ———–"

tar cvf backup$fecha.tar prog_dir1 prog_dir2

#

echo "———– Comprimiendo ———–"

bzip2 backup$fecha.tar

#

echo "———- Enviándolos a zip
——-"

cp ./backup$fecha.tar /mnt/zipdrive

#

echo "———– Limpiando ————–"

rm -f ./backup$fecha.tar

#

echo "———– Final ————-"

Luego, se le asigna permisos de ejecución con el
comando

chmod +x mibackup

y esta listo para ser ejecutado.

En el script aquí mostrado es importante
resaltar varios principios
importantes: la primera línea determina el shell que se
esta usando (sh o bash); las variables no
se declaran solo se asignan; su valor es retornado usando el
símbolo $.

Si desea mas información acerca de
programación en shell se puede consultar los manuales en
línea del shell: bash o
cts..

Intérprete de comandos: Shell

El intérprete de comandos es el programa que
recibe lo que se escribe en la terminal y lo convierte en
instrucciones para el sistema operativo.

En otras palabras el objetivo de
cualquier intérprete de comandos es ejecutar los programas
que el usuario teclea en el prompt del mismo. El
prompt es una indicación que muestra el
intérprete para anunciar que espera una orden del usuario.
Cuando el usuario escribe una orden, el intérprete ejecuta
dicha orden. En dicha orden, puede haber programas internos o
externos: Los programas internos son aquellos que vienen
incorporados en el propio intérprete, mientras que los
externos son programas separados (ej: aplicaciones de
/bin,/usr/bin,…).

En el mundo Linux/Unix existen tres grandes familias de
Shells como se muestra en la tabla 3.4.
Estas se diferencian entre sí básicamente en la
sintaxis de sus comandos y en la interacción con el usuario.

Tipo de Shell

Shell estándar

Clones libres

AT&T Bourne shell

sh

ash, bash, bash2

Berkeley "C" shell

csh

tcsh

AT&T Korn shell

ksh

pdksh, zsh

Otros interpretes

esh, gush, nwsh

Re-utilización de comandos

El shell almacena una historia de los comandos que
el usuario ha escrito. Por medio de esta historia es posible
volver a ejecutar una orden que ya se ha escrito anteriormente
sin tener que escribirla de nuevo.

El comando history muestra la secuencia de comandos, con
un número a su izquierda. Con este número es
posible llamar de nuevo el comando utilizando el carácter
admiración “!''; Por ejemplo history retorna

1 history

2 ls

3 cd public_html

4 ls

5 rm *.bak

6 history

y para ejecutar nuevamente el comando rm *.bak solo es
necesario escribir !5. También se puede pedir el
último “rm'' que se ha ejecutado escribiendo
!rm.

El último comando se repite con doble
admiración “!!''. Es posible también editar el
último comando utilizando el carácter “^'' pero
este conocimiento se esta volviendo poco útil, ya que los
nuevos shells permiten viajar por la “historia'' y editar los
comandos usando únicamente las flechas del
teclado.

Tuberías o pipes

En la línea de comandos la integración entre diferentes programas se
realiza por medio de la re-dirección de las entradas y salidas a
través de pipes o tuberías.

Una tubería o pipe es una
combinación de varios comandos que se ejecutan
simultáneamente, donde el resultado del primero se
envía a la entrada del siguiente. Esta tarea se realiza
por medio del carácter barra vertical “''. Por ejemplo si
se quiere ver todos los archivos que hay en el directorio
/usr/bin, se ejecuta lo siguiente: ls /usr/bin | more. De
este modo, la salida del programa ls (listado de todos los
archivos del directorio /usr/bin) irá al programa
more (modo paginado, es decir, muestra una pantalla y
espera a que pulsemos una tecla para mostrar la
siguiente).

Dentro de esta estructura se han construido una serie de
programas conocidos como “filtros'' los cuales realizan procesos
básicos sobre textos (ver tabla 3.6).

Filtros

Función

sort

Ordena las lineas de un texto

cut

Corta secciones de una linea

od

Convierte archivos a forma octal u
otras

paste

Une líneas de diferentes
archivos

tac

Concatena e imprime archivos
invertidos

tr

Traduce o borra caracteres

uniq

Remueve líneas repetidas

wc

Cuenta bytes, palabras y
líneas

Algunos Filtros en línea de comandos Linux/Unix
tbl_filtros

Algunos filtros han llegado a ser tan complejos que son
en si, un lenguaje de procesamiento de texto, de búsqueda
de patrones, de construcción de scripts, y muchas otras
posibilidades. Estas herramientas pasan a ser parte de la
siguiente sección. Entre ellos podemos mencionar
herramientas tradicionales en Linux/Unix como awk y sed y otras
mas modernas como Perl.

Variables de entorno

Una variable de entorno es un nombre asociado a
una cadena de caracteres.

Dependiendo de la variable, su utilidad puede ser
distinta. Algunas son útiles para no tener que escribir
muchas opciones al ejecutar un programa, otras las utiliza el
propio shell (PATH, PS1,…). La
tabla 3.5
muestra la lista de variables más
usuales.

Variable

Descripción

DISPLAY

Donde aparecen la salidas de X-Windows.

HOME

Directorio personal.

HOSTNAME

Nombre de la máquina.

MAIL

Archivo de correo.

PATH

Lista de directorios donde buscar los
programas.

PS1

Prompt.

SHELL

Intérprete de comandos por
defecto.

TERM

Tipo de terminal.

USER

Nombre del usuario.

Variables de entorno más usuales
tbl_var_ent

La forma de definir una variable de entorno cambia con
el interprete de comandos, se muestra tcsh y bash siendo los dos
mas populares en el ámbito Linux:

bash:

export VARIABLE=Valor

tcsh:

setenv VARIABLE Valor

Por ejemplo, para definir el valor de la variable
DISPLAY:

bash:

export DISPLAY=localhost:0.0

tcsh:

setenv DISPLAY localhost:0.0

SHELL SCRIPTS

Como se vió al principio del curso, la shell nos
permite acceder al kernel del sistema operativo. La shell en
reaildad lo que hace es interpretar la línea de comandos y
ejecutar los programas que
ésta indica. Sin embargo, además de leer la
línea de comandos, también puede ejecutar los
comandos que se encuentren en un fichero. Cualquier comando que
pueda ser tecleado en la línea de comandos puede ser
incluido en un fichero al que se le denomina como shell script o
shell programa.

Un shell script es un fichero donde hemos introducido
cualquier comando que se puede ejecutar en la shell. Se pueden
incluir comandos UNIX, utilidades, emplear pipes,
redireccionar
entradas y salidas, definir y utilizar variables, además
del uso de una serie de comandos UNIX creados para ser usados
fundamentalmente en los shell scripts, como son condicionales
y
comandos para controlar el flujo del programa.

Si queremos poner comentarios en nuestros scripts, lo
hacemos con el símbolo #

Declaración de
variables

Para definir variables se utilizan las palabras
reservadas set y setenv seguidas de la variable que
queramos definir. Set sirve para declarar variables
locales y setenv para variables de entorno. Variables del
mismo tipo pueden declararse juntas al principio del programa
(Ej: set name,  name1). Antes de darle un valor a una
variable, ésta debe estar definida.

1.1- Asignar números a variables ->Para
asignar un valor numérico a una variable se utiliza @
variable = valor,
dejando los espacios.
1.2.- Asignar palabras a variables -> Se utiliza set
name = "Esto es una frase"

1.3.- Asignar variables a otras variables -> Se utiliza
el símbolo del dollar set name1 = $name
Crear arrays ->  Para definir arrays, se hace
también con set. Los datos que componen el array hay que
separarlos por espacios y deben ir encerrados entre
paréntesis.
Ej: set direction = (Norte Sur Este Oeste)
     echo $direction
     echo $direction[1]
     echo $direction[1-3]

Interacción con el
usuario

Leer un valor desde teclado
->
Para introducir una palabra desde teclado se utiliza
$<, y para un número  es similar.
           
Ej: #!/bin/csh
            
clear

            
echo " "

            
echo " Cual es tu nombre?:"

            
set nombre = $<

            
echo "Y tu edad?:"

            
@ edad = $<

Escribir en un fichero -> Para
escribir algo en un fichero se utiliza el pipe >. Si el
fichero ya existe y se quiere añadir algo al final, se
utiliza >>.
          
Ej: #!/bin/csh
            
clear

            
echo " "

            
echo " Cual es tu nombre?:"

            
set nombre = $<

             
echo "Tu nombre es:" $nombre > fichero.dat

            
echo "Y tu edad?:"

            
@ edad = $<

             
echo "Tienes" $edad "años" >>
fichero.dat

Operaciones

Operadores
matemáticos

 

Operador

Operación

        
+

Suma dos números

        

Resta dos números

        
*

Multiplica

        
/

Divide 

        
%

Divide y saca el resto 

Ej: @ a = 47
      @ b = 32
      @ suma = $a + $b
      @ resta = $a – $b
      @ producto = $a
* $b

      @ divide = $a / $b
      @ resto = $a %
$b

Operadores lógicos

Operador

Operación

         
!

   Operador NO

         
&&

   Operador Y

         
||

   Operador O

Operadores de comparación

   

Operador

Operación

       
==

Igual a

       
!=

No igual a

        
>

Mayor que

        
>=

Mayor o igual a

        
<

Menor que

        
<=

Menor o igual que

 Condicionales

La instrucción para el condicional es if.
Es interesante utilizar el condicional cuando queremos que
nuestro programa  chequee si una condición es
verdadera o falsa. La forma del condicional es la
siguiente:

if (condición) then
  instrucción
end if

Si queremos ejecutar diferentes instrucciones de
pendiendo de si la condición es verdadera o falsa, se
utiliza el comando else

if (condición) then
   instrucción1
else
   instrucción 2
endif

También podemos hacer condionales con varias
condiciones

if (condición1) then
   instrucción1
else if (condición2) then
   instrucción2
endif
endif

Operadores

PHP nos ofrece una gran variedad de operadores, desde
los aritméticos hasta operadores a nivel de bits. Podemos
llevar a cabo la siguiente clasificación:

  • Aritméticos
  • Lógicos
  • De comparación
  • Lógicos
  • De cadenas
  • A nivel de bits
  • De asignación
  • De incremento y decremento
  • De control de errores
  • De ejecución

Operadores
aritméticos

Operación

Símbolo

Devuelve

Ejemplos

Suma

+

La suma de los operandos

$a + $b

Resta

La diferencia de los operandos

$a – $b

Producto

*

El producto de los operandos

$a * $b

División

/

El cociente de los operandos

$a / $b

Módulo

%

El resto del cociente $a / $b

$a % $b

Operadores
lógicos

En principio nos va a llamar la atención el hecho de que existan dos
operadores AND y dos OR. La explicación es que cada
operador AND tiene diferente recedencia; con los operadores OR
ocurre lo mismo.

Operación

Símbolo

Devuelve

Ejemplos

Y-lógico

and

Verdadero si $a y $b son verdaderos

$a and $b

Y-lógico

&&

Verdaderos si $a y $b son verdaderos

$a && $b

O-lógico

or

Falso si $a y $b son falsos

$a or $b

O-lógico

||

Falso si $a y $b son falsos

$a / $b

O-exclusivo

xor

Verdadero si $a o $b es verdadero, pero no los
dos

$a xor $b

Negación lógica

!

Verdadero si $a es falso.

!$a

Operadores de comparación

Operación

Operador

Devuelve

Ejemplos

Igual

==

Verdadero si $a y $b son iguales

$a == $b

Identidad

===

Verdaderos si $a y $b son verdaderos y del mismo
tipo

$a && $b

Distinto

!=

Verdadero si $a y $b son distintos

$a != $b

Menor que

<

Verdadero si $a es menor que $b

$a < $b

Menor o igual que

<=

Verdadero si $a es menor o igual que
$b

$a <= $b

Mayor que

>

Verdadero si $a es mayor que $b

$a > $b

Mayor o igual que

>=

Verdadero si $a es mayor o igual que
$b

$a >= $b

Condicional

?:

Exp2 si Exp1 es verdadero; si no
Expr3

(Expr1) ? (Expr):
(Expr3);

Operadores de
cadenas

El operador ofrecido por PHP para las
cadenas es el de concatenación, que se corresponde con el
símbolo"." (punto).

También podemos considerar a los corchetes [ ]
como operador para las cadenas, ya que cumple una función
análoga a la que lleva a cabo con los vectores.

$c = $a.$b; /* $c tendrá como valor la
concatenación $a y $b */

$cadena = "prueba";

$caracter = $cadena[3]; /* $caracter valdrá 'e'
*/

Operadores a nivel de
bits

Operación

Operador

Devuelve

Ejemplos

Y-Lógico

&

Y-Lógico bit a bit

$a & $b

O-Lógico

|

O-Lógico bit a bit

$a | $b

O-Exclusivo

^

O-Exclusivo a nivel de bits

$a ^ $b

Negación

~

Negación a nivel de bits

~$a

Desplazamiento a la izquierda

<<

Desplaza $a hacia la izquierda a nivel de bits
$b veces

$a << $b

Desplazamiento a la derecha

>>

Desplaza $a hacia la derecha a nivel de bits $b
veces

$a >> $b

Operadores de asignación

El operador de asignación por excelencia es
"=". Se trata del más sencillo de los operadores de
asignación:

$a = $b + 1; /* $a vale $b + 1 */

Decimos que es el más sencillo porque PHP, al
igual que C, nos ofrece gran variedad de operadores de
asignación, por medio de la combinación del
símbolo "=" con otros operadores.

$a += 5; /* $a = $a + 5; */

$b .= "Concatena"; /* $b = $b."Concatena"; */

$a -= 3; /* $a = $a – 3; */

$a *= $a /* $a = $a * $a; */

$a /= 2; /* $a = $a / 2; */

Otro aspecto a destacar de los operadores de
asignación en PHP es que, además de producirse la
asignación de un valor, se devuelve él
mismo.

$a = ($b = 3); /* $b = 3 devuelve 3. Por tanto $a = $b =
3; */

$a = $b = 3;

$a = ($b *= 3) + 5; /* $b = $b * 3;

$a = $b * 3 + 5; */

Operadores de
incremento y decremento (++, –)

Estos operadores han estado siempre ligados a C,
lenguaje con el cual vieron la luz. Se trata de
incrementar en una unidad el valor de la variable sobre la que se
aplican: $a++ equivale aritméticamente a $a = $a + 1, o
bien, a $a += 1. Pero estos operadores tienen algo más: si
se colocan antes de la variable (preincremente/predecremento) se
incrementa/decrementa el valor de $a y luego se utiliza su valor.
Si se ponen como sufijo de la variable, primero se utiliza el
valor de $a y luego se opera sobre ésta.

$a = 1;

$a++; /* $a vale 2 */

$a–; /* $a vale 1 */

++$a; /* $a vale 2 */

–$a; /* $a vale 1 */

Hasta aquí, nada especial. Pero en el siguiente
ejemplo vemos lo que explicábamos, la importancia de su
posición:

$a = 1; /* $a vale 1 */

$b = $a++; /* $b vale 1 y $a vale 2 */

Primero se utiliza el valor de $a para la
asignación y, después, se incrementa $a.

$a = 1; /* $a vale 1 */

$b = –$a; /* $a y $b valen 0 */

Primero se decrementa $a y luego se utiliza su valor en
la asignación.

Operador de
control de errores

El signo @, colocado antes de una
expresión, hace que cualquier mensaje de error de esa
expresión se ignore. Dicho mensaje se almacenará en
la variable global $php_errormsg.

Operador de
ejecución

Por medio de la utilización de
backquotes `, se comunica a PHP la
ejecución de un comando del shell.

$date = `date`;

echo $date; /* la salida será

Fri Sep 15 00:54:51 WEST 2000 */

 

Bibliografía:

Texto:

– Cómo usar UNIX Sistema V, versión 4.0.
Stan Kelly-Bootle

Grupo Noriega Editores (Megabyte),1997

Referencia:

– The UNIX System. Bourne Stephen R., Addison-Wesley
1992

– Introducing the Unix System. McGilton, Henry, and
Rachel Morgan,

McGraw-Hill, 1994

Manual
guía de Usuarios Unix, Datocentro, Unisys

 

Carolina Azar

UNIVERSIDAD TECNOLOGICA DE SANTIAGO

"UTESA"

CARRERA DE INFORMATICA

Programa Analítico de : Gestión
de Sistemas

Nombre de la Asignatura : Gestión de
Sistemas

Clave de la Asignatura : INF-205

Total horas teóricas/ciclo : 45

Total horas prácticas/ciclo :

Número de créditos : 3

Pre-requisitos : INF-100, MAT-100

 

Partes: 1, 2
 Página anterior Volver al principio del trabajoPágina siguiente 

Nota al lector: es posible que esta página no contenga todos los componentes del trabajo original (pies de página, avanzadas formulas matemáticas, esquemas o tablas complejas, etc.). Recuerde que para ver el trabajo en su versión original completa, puede descargarlo desde el menú superior.

Todos los documentos disponibles en este sitio expresan los puntos de vista de sus respectivos autores y no de Monografias.com. El objetivo de Monografias.com es poner el conocimiento a disposición de toda su comunidad. Queda bajo la responsabilidad de cada lector el eventual uso que se le de a esta información. Asimismo, es obligatoria la cita del autor del contenido y de Monografias.com como fuentes de información.

Categorias
Newsletter