Está en la página 1de 55

Arquitectura de Computadores.

*UNIX
Sistema de Archivo o File Siytem.

Unix posee un sistema para la manipulación de archivos lo que se conoce como file
system que en general es una estructura que da soporte a la distribución de todos los
archivos dentro del file system. El file system es montado al entrar al sistema de
operación y es desmontado antes de apagar el equipo, tiene una estructura de árbol
invertido definiendo a cada rama como un directorio, y a cada hoja como un archivo.

Que es el Sistema Operativo UNIX?


 Es un sistema operativo de tiempo compartido, controla los recursos de una
computadora y los asigna entre los usuarios.
 Permite a los usuarios ejecutar sus programas.
 Controla los dispositivos de periféricos conectados al computador.

CARACTERÍSTICAS
 Es un sistema operativo multiusuario, con capacidad de simular
multiprocesamiento y procesamiento no interactivo.
 Está escrito en un lenguaje de alto nivel : C.
 Dispone de un lenguaje de control programable llamado SHELL.
 Ofrece facilidades para la creación de programas y sistemas y el ambiente
adecuado para las tareas de diseños de software.
 Emplea manejo dinámico de memoria por intercambio o paginación.
 Tiene capacidad de interconexión de procesos.
 Permite comunicación entre procesos.
 Emplea un sistema jerárquico de archivos, con facilidades de protección de
archivos, cuentas y procesos.
 Tiene facilidad para redireccionamiento de Entradas/Salidas.
 Garantiza un alto grado de portabilidad.

ESTRUCTURA DE DIRECTORIOS

 Directorio/root.
Directorio particular del superusuario del sistema ( root ).

-1-
Arquitectura de Computadores.

 Directorio /bin:
 En este directorio están los ficheros ejecutables básicos (bin = binaries)
 Directorio /boot
 Aquí están los ficheros y directorios de arranque (boot)
 Directorio /dev
Contiene ficheros de dispositivos.
 Directorio /etc
Contiene ficheros y directorios de configuración específicos de tu sistema.
 Directorio /home
Contiene los archivos utilizados por el usuario, documentos, escritorio,
descargas, etc.
 Directorio /lib
Bibliotecas compartidas esenciales para los binarios de /bin/, /sbin/ y el núcleo
del sistema.
 Directorio /lost+found
Especifico para archivos perdidos. Cada partición tiene el suyo propio
independientemente.
 Directorio /media
Puntos de montaje para dispositivos de medios como unidades lectoras de discos
compactos.
 Directorio /misc
Abreviación de miscelánea.
 Directorio/opt.
En este directorio se suelen almacenar todos los archivos de una instalación
fuera de los repositorios .
 Directorio/proc.
Directorio que contiene información sobre diferentes partes del sistema, cpu,
discos, tiempo uptime, irqs, memoria, etc.
 Directorio/sbin.

-2-
Arquitectura de Computadores.

Contiene archivos ejecutables que por lo general son comandos usados para la
administración del sistema.
 Directorio /selinux.
Es un módulo de seguridad añadido que ofrece linux. Lo verás más
detenidamente en el tema.
 Directorio /sys
Contiene parámetros de configuración del sistema que se está ejecutando. Datos
referidos al kernel, bus, dispositivos, firmware, fs (filesystem) y otros.
 Directorio /tmp
Directorio donde se almacenan los ficheros temporales. Son ficheros que se
eliminan con el apagado del sistema.
 Directorio /usr
Este es el espacio compartido de todos los usuarios del sistema. Aquí se guardan
los datos compartidos de usuarios: aplicaciones, librerías, manuales, etc.
 Directorio /var
Contiene los datos que están cambiando continuamente en el sistema como
ficheros de log del sistema, correo, colas de impresión, etc.

Raiz (/)

Tmp Bin Etc

Tmp2 Bin1 Bin2 Etc1 Etc2


Tmp1

A partir del directorio raíz se encuentran varios directorios, los mismos que a su vez
pueden contener archivos.

ARQUITECTURAS SOPORTADAS

 CentOS soporta (casi) todas las mismas arquitecturas que el original Red Hat
Enterprise Linux.
 Intel x86-compatible (32 bit) (Intel Pentium I/II/III/IV/Celeron/Xeon, AMD
K6/II/III, AMD Duron, Athlon/XP/MP).
 Intel Itanium (64 bit).
 Advanced Micro Devices AMD64(Athlon 64, etc) e Intel EM64T (64 bit).
 PowerPC/32 (Apple Macintosh PowerMac corriendo sobre procesadores G3 o
G4 PowerPC).
 IBM Mainframe (eServer zSeries y S/390).

-3-
Arquitectura de Computadores.

 Además tiene soporte para dos arquitecturas no soportadas por su original.

 Alpha procesador (DEC_Alpha)


 SPARC

El PATH de Archivos y Directorios.

Todos los archivos dentro del PATH system poseen una ubicación lógica, y un nombre
por el cual son identificados, la ruta de los archivos dentro de los directorios del file
system pueden ser absoluta o relativa con respecto de la dirección actual donde nos
encontremos, la ruta absoluta es aquella que a partir del directorio raíz hacia adentro y
es la más larga.

La ruta relativa es aquella que se forma a partir de la dirección actual en adelante.

Archivo 1
2
Archivo 3

/------------ Cartas 1
CURSO
documento 1
documento 2
Documento
documento 3
s

Ruta absoluta: /…../CURSO/DOCUMENTOS/DOCUMENTO1


Ruta relativa: DOCUMENTOS/DOCUMENTO1

Nombre de los Archivos.

UNIX posee restricciones para la nomenclatura de archivos y directorios hoy en día el


nombre del archivo no tiene longitud máxima.

-4-
Arquitectura de Computadores.

Todo archivo que comience con un punto se considera como un archivo escondido y no
se lo puede visualizar cuando se ejecuta el comando para desplegar el directorio ls. Para
poder visualizar los archivos ocultos utilizamos el comando ls -a

Los siguientes caracteres no pueden ser utilizados para formar un nombre de archivo.
<>[] *¿;$

No se permiten espacios entre los caracteres que forman el nombre de un archivo, las
letras minúsculas y mayúsculas son tomadas como diferentes en UNIX.

Formato de los Comandos en UNIX.

Un comando es una cadena de caracteres o palabras que poseen un significado


predefinido todo comando se ejecuta presionando la tecla  enter.

Reglas de Comando.

La primera palabra es el comando, las letras o palabras adicionales que siempre van a
estar separadas por un espacio en blanco del comando y se denominan argumentos del
comando.

Para digitar más de un comando por línea estos deben estar separados por el signo;
Ejemplo:

who am i ; date

Usuario fecha y hora

Argumentos de los Comandos.

Los argumentos en los comandos UNIX pueden ser clasificados por:


1. Archivos.
2. Expresiones.
3. Opciones.

1. Archivos. Existen comandos de UNIX que hacen referencia a nombres de


archivos por lo cual un argumento sería el o los nombres de archivos necesarios.

Existen caracteres cuya función es sustituir parte de un nombre formando un nombre


genérico a un grupo de archivos con características comunes en el nombre como: las
primeras letras sean iguales, que una letra intermedia sea igual, que una extensión
sea igual.
Ejemplo:
ls prog*

-5-
Arquitectura de Computadores.

prog1.txt
programa
progra1
progra2.xyz

2. Expresiones. Es una palabra o conjunto de palabra que va a ser utilizado como


información de entrada de un comando.
grep (comando para buscar)
Ejemplo:
grep “GRANDES CLIENTES” *.sql
Prog1.sq\ “FACTURACIÓN GRANDES CLIENTES” skip.1-
Fecha2.sq\ TITLE ‘GRANDES CLIENTES MATRICULADOS’

3. Opciones. Una opción es un literal que usualmente es ingresado anteponiendo el


signo -, o en algún caso sin signo, y permite darle a una variación a la ejecución
normal del comando.

$ home > sidecom>ls


programa
stado.txt
ventana.txt
ls –l Lista información extendida del comando a ejecutarse.

-rwx rwx rwx 1000 fecha y hora programa


de creación o última modificación.

ls -a (para ver archivos ocultos) ls -la (el formato ampliado)

.login
.oculto 1
.programa

Comandos de Manipulación de Archivos.

Comando Para Crear Directorios.

Comando mkdir ndir1 ndir2 ............. ndirn

Siempre puedo crear por ejemplo estoy ubicado en USER

mkdir maq1 maq2 maq3


mkdir /bin/com/impresoras

El super usuario root puede crear directorios desde cualquier lugar donde se encuentre.

Comando Para Cambiarse de Directorio.

Home Directory. Directorio del usuario, directorio hogar de un usuario. Se crea cuando
el administrador del sistema crea el usuario.

-6-
Arquitectura de Computadores.

Formato del Comando.

cd directorio

path + directorio

caso especial

cd .. Se va al directorio padre cd .. ..
cd / Se va a la raíz.
cd Voy al home directory

Comando Para conocer el directorio en donde estoy ubicado

pwd Conocer en que directorio estoy actualmente.

Ejemplo
/User/maq1

Como Borrar Directorios.

rmdir ndir1 ndir2 ….. ndirn

Para borrar un directorio


 No deben existir dentro de él subdirectorios, o archivos
 Debe estar ubicado fuera del directorio (Padre o más arriba)
 El directorio debe estar vacío.

Ejercicio:

Crear estructura del árbol.

mkdir BIN ETC TEMP USER


cd BIN 
mkdir COM DESK
cd COM 
mkdir impresoras
cd ETC 
mkdir VAR ADM
cd VAR 
mkdir FILES DOCS
cd TMP 
mkdir CD USER 
mkdir maq1 maq2

-7-
Arquitectura de Computadores.

Comando cp. Para copiar archivos


Permite copiar archivos de un directorio a otro directorio o en el mimo directorio.

cp nombre_archivo  nombre_archivo
path + nombre archivo path + nombre archivo

cat222
RAIZ concatena1 Bin.sql

Bin.sql bin Etc Temp User concatenar Cat1

Com Des Var Adm maq1 .. maq5


Cat k concatenar Cat1 ..
File1 Cat11 ..
Com1 Files Doc .
maq51 maq52
s
File1 File2 Cat1
File2 Bin.sql
Cat1
Cat2
Prog1.sql
Programa.sql
1. Absoluto.
cp /Bin/Com/cat /Etc/Adm/concatenar

path path nombre_archivo

Relativo
cp Adm/concatenar concatena1

2. Absoluto.
cp /Etc/Var/Files/archivos1 /User/maq1

Relativo.
cp /Var/Files/archivo1 /User/maq1

Si sobre escribo en otro archivo pierdo el archivo que está en ese directorio.

Comando mv. Mover un archivo del directorio original a otro directorio, y también
permite renombrar (cambiar de nombre) un archivo.
mv /bin/desk/sueldos  / bin/com
mv sueldo sueldo1

Borrar Archivos del File System.

-8-
Arquitectura de Computadores.

Formato. Comando rm borra archivos rm archivo1 archivo2.....

Path+n_arch

La opción –i pregunta previo a borrar cada uno de los archivos

rm –i arch*
archivo
archiv
archivo1
archivo2

Esta opción borra todos los archivos del directorio COM

rm /BIN/COM/*.* → en el terminal es suficiente con solo poner *

Comando who.

Determina una lista de usuarios activos dentro del sistema.

nombre de usuario dispositivo fecha hora


maq1 tty/01 xx/xx/xx xx:xx

Muestra una lista de usuarios que están trabajando en ese momento (activos).

who am i Despliega el usuario concurrente


who i am

Comando wc

Permite conocer el número de registros, caracteres o palabras que contiene un archivo,


dependiendo de la opción.

wc -l nombre-archivo ---- determina el número de líneas que contiene el archivo


wc -c nombre-archivo ---- determina el número de caracteres que contiene el archivo
wc -w nombre-archivo ---- determina el número de palabras que contiene el archivo

wc opción Path+n_archivo

Ejemplos

wc –l archuvojuan ---- despliega el número de registros del archivojuan

Aplicación especial

Comando 1 | comando 2 | comando 3 ……… | comando n


Ejemplos

-9-
Arquitectura de Computadores.

who Despliega número de usuarios activos en el sistema

who |wc -l Número de usuarios que están interactuando en el sistema.

who |wc -l > usuariosjm No. Usuarios se graba en archivo usuariosjm

Impresión de Archivos.

Comando lp, permite imprimir archivos

SPOOL. Cola de archivos de impresión

lpstat, permite visualizar el spool

lpstat -ppcl1 visualizar el spool de la impresora pcl1

comando de impresión lp

lp prog1
lp -ppcl1 prog1
pcl1 = nombre de la impresora
prog1= archivo a imprimir

- m le manda al mail
- c genera una copia

lpstat – ppcl1 (archivos que están por imprimirse en la impresora ppcl1)

Comando Cancel.

Cancela la impresión del archivo que está en el spool, todo archivo que se encuentra en
el spool tiene un identificador de proceso o job.

Queue Dev Status Job Files User


lpcl6 @rs59 READY
lpcl6 lpcl6 DOWN

cancel #job

Identificador del job

Como Cambiar su Password

Comando password nombre_usuario ----- usuario root

- 10 -
Arquitectura de Computadores.

En la ejecución de este comando UNIX pregunta el password anterior y si este es


correcto permite el ingreso del nuevo password con confirmación.
Login root
$> password maq1>password 

$> password <ENTER>


chaining password for maqn
old password …..
new password …..
Re_enter new password

Identificar Procesos que se Ejecutan en el Sistema.

Con la ayuda del comando ps obtenemos un reporte de los status de los procesos activos
con información de cuando se ejecute el proceso, el comando ps tiene las siguientes
opciones:

ps -e. Presenta información de todos los procesos que se ejecutan en este momento.

ps -d. Presenta la información de todos los procesos menos los del sistema o del grupo
libre.

ps -a. Similar al d, menos los del sistema, y menos los procesos asociados al terminal
donde estoy trabajando.

ps -f. Presenta información mayor de cada proceso (información más detallada de cada
proceso).

ps -u. Información de un usuario específico.

ps -fu. Información detallada del usuario.

La opción -u. Presenta información de todos los procesos de ese usuario, esta opción
va acompañada del nombre del usuario.

>ps -u sidecom

> ps –edaf

> ps -fu sidecom

Ejemplo: Como se visualiza ps

$ ps 

PID TTY TIME CMD


3459 03 12.10 _sh modo shell
2470 02 12:20 _sh
4323 03 12:21 ls -a

- 11 -
Arquitectura de Computadores.

Ejemplo: Cuantos procesos se ejecutan en el sistema

 ps –edaf |wc -l

UNIX tiene tres modos en los que puede trabajar


Modo Shell Sh
Modo CShell csh Ambientes de Trabajo
Modo KShell ksh

Eliminar Procesos que se Ejecutan en el Sistema.

Comando kill

Formato kill – 9 Id_proceso

Identificador del proceso solo el dueño del proceso puede eliminar su


proceso o el usuario root

Ejemplo:

kill –9 3459

Ejemplo;
Eliminar el proceso que ejecuta el programa ruya5.

 ps –edaf| grep ruta5


 kill –p id-proceso

Como Ejecutar Procesos en Background


Background . Permite ejecutar procesos por atrás. En un segundo plano.
Existen tres formas más usadas:

1. &
2. crontab
3. at

Comando &

Permite ejecutar comando en background ese mismo momento.

ls -l >directorio &  ejecuta el comando en background, después reviso el


archivo generado.
Ejemplo: cat directorio

Ejemplo:

- 12 -
Arquitectura de Computadores.

Ejecutar el programa que genera las facturas de los clientes residenciales de EEQ,
llamado FACTURES.sql. Se requiere que el archivo a generarse se llame
FACTURAS.res, mismo que se imprimirá en el turno de operación de la noche, en la
impresora pl5.

 .FACTURES.sql > FACTURAS.res &


 sh FACTURES.sql > FACTURAS.res &
 FACTURES.sql > FACTURAS.res &
 lp –ppl5 FACTURAS.res

Comando crontab

Permite ejecutar procesos en modo backgound. Se identifica el proceso a ejecutarse, el


día , la hora, etc., misma que se registran en un archivo con el formato que se indica a
continuación:

vi estadístico

01 01 * * 1,2,3,4,5,6,0 /sidexp/sidecom/GES_GENEST01
-- minutos
30 04 * * 1,4,6 /sidexp/sidecom/GES_GENEST02
-- hora
00 11 * * 1,2,3,4,5,6,0 /sidexp/sidecom/GES_GENEST08
--------------dias de la semana

0 domingo
1 lunes

6 sábado

01 23 * * 1,2,3,4,5,6,0 /sidexp/sidecom/GAESTI.sh
30 23 * * 1,2,3,4,5,6,0 /sidexp/sidecom/GASALD.sh
50 02 * * 1,4,6 /sidexp/sidecom/TACOMA.sh
00 01 * * 1,3,5,6 /sidexp/sidecom/CUADRE_CREDI.sh

#> crontab estadístico  para ejecutar cambios

Se puede trabajar con el comando crontab para matar archivos por usuario que se
demoren más de 30 minutos.

Comando at.
Los demónicos de usuario, UNIX nos permite ejecutar automáticamente programas en
tiempo predeterminado la utilización de comandos at proporciona una forma fácil de
construir demónicos que vienen a ser procesos subordinados que realizan trabajo útil
para un usuario especifico.

Ejemplo
 Programa que va a ejecutar el proceso programa1 a las 6h00 el día viernes

- 13 -
Arquitectura de Computadores.

at -f programa1 6:00 Friday

Se puede especificar el tiempo de ejecución de varias formas


hh:mm

 at -f nombrepro 06:00 Apr 21

Control de Trabajos con at. Existen dos opciones útiles para comprobar y controlar
los trabajos calificados con at.

at -l Lista todos los trabajos planificados con at, devuelve el # identificador del
trabajo y le informa de la siguiente vez que el comando esta planificado para ejecutar.

Comando at - l
$ at -l
62345879.a thu Nov 7 06:00:00 2009

identificador del trabajo (veces que hay que ejecutarse)

Identificar mes, día, año, hora (con minutos y segundos).


at -r borrará el trabajo previamente planificado.

Comando at – r
$ at –r 62345879.a

Búsqueda de cadena de caracteres en el file system

Comando grep.

Explora un archivo o grupo de archivos para encontrar la ocurrencia de expresiones.


Ejemplo

grep ‘CLIENTES EEQ’ *.sql


Busca la cadena de caracteres CLIENTES EEQ en todos los archivos con extensión sql

/user/user1/user11/prog1.sql CLIENTES EEQ EN SEPTIEMBRE 2013


/user/user3/prog1.sql CLIENTES EEQ

Visualización de archivos

Comando cat
Despliega el contenido de un archivo página por página.

cat nombre del archivo

Ejemplo cat archivo1

- 14 -
Arquitectura de Computadores.

Concatenar archivos

Archivo1
111111111
111111111
111111111

Archivo2
222222222
222222222
222222222

cat archivo1 archivo2 > archivo3


Concatena archivos superponiendo

Ejemplo

archivo3
111111111
111111111
111111111
222222222
222222222
222222222

Si se desea poner uno a continuación de otro (Sin superponer) se utiliza doble signo de
mayor (>>). Se utiliza por lo general con comandos background.

Comando pg.
Formato
pg nombre_archivo
Despliega el contenido de un archivo página por página.
Opciones:
1 va al inicio del archivo
g al fin del archivo
 avanza una página
- n retrocede n páginas.
string  Busca una cadena de caracteres.

Comando more. Formato


more nombre_archivo
Despliega el contenido de un archivo (para archivo pequeño).
Ejemplo
more programa1.sql

Comando tail. Formato


tail nombre_archivo
Permite leer por default las últimas 10 líneas de un archivo.
Ejemplo

- 15 -
Arquitectura de Computadores.

tail –10 facturas.txt

Comando split.
Formato
split –n archivo_entrada prefijo archivo_salida
Divide un archivo grande en varios pequeños
Ejemplo:
split –50000 cliente clien
Suponiendo que el archivo cliente tiene 200.000 filas, el archivo se subdividirá en
archivos de 50000 registros cada uno, obteniendo de esta manera:
clienaa
clienab
clienac
clienad (cada uno con 50000 filas)

Búsqueda de archivo en el file system

Comando find.

Permite encontrar la dirección o path de un archivo en el file system

Formato
find / - name nombre_archivo – print
/ busca desde la raiz
Busca un archivo desde la posición indicada hacia abajo en todo el disco.
Opción: - print desplegará el path completo donde se encuentra el archivo.
Para mandar a buscar desde un directorio.

Ejemplo

find / -name prog1.sql -print Busca desde la raíz.

find .-name prog3.sql –print Busca desde el sitio donde estoy ubicado

Comando df. Presenta información importante al administrador del sistema, Indica el


espacio libre de cada disco lógico que tengamos en nuestro FILE SYSTEM. Presenta el
tamaño en bloques (512 bytes). Espacio libre en cada disco y espacio ocupado.

Ejemplo

Filesystem 512-blocks Free %Used Iused %Iused Mounted on


/dev/hd4 98304 21688 78% 3669 15% /
/dev/hd2 2310144 185344 92% 34350 12% /usr
/dev/hd9var 524288 108784 80% 22051 34% /var
/dev/hd3 98304 52016 48% 2064 17% /tmp
/dev/hd1 835584 214280 75% 2217 25% /home
/dev/dbeeq1lv 43909120 29599560 33% 15525 1% /dbeeqd
/dev/dbeeq2lv 43909120 33707568 24% 219 1% /dbeeqi
/dev/temporallv 11075584 3164872 72% 26719 24% /temporal
b80fin:/domino 40370176 37044848 9% 11030 1% /sidexp

- 16 -
Arquitectura de Computadores.

/dev/oraclelv 6275072 1821928 71% 21935 3% /dev6i

df –k Despliega en kbytes los tamaños.

Comando du. Cantidad en bytes que utiliza cada directorio

Ejemplo
2160 ./audit
1160 ./baurma
40 ./callce
3208 ./contabil
11536 ./ctrcli
40 ./cumba
16 ./dirte
16 ./codisdir
61699999999999 ./codising
736 ./codisobr
24 ./codisope
232 ./inca
23056 ./jorge
16 ./juridico
128 ./labmed
24 ./planif
16 ./presupue
24 ./provis
112 ./recau
26856 ./reclam
16 ./rrhh
240 ./solici
1643616 .

Comando cut. Permite desplegar en pantalla o mandar a otro archivo partes de un


archivo, cortándolo por columnas. Las principales opciones son:

- d indica el separador del campo.


- f indica el campo que deseo cortar.
- c el número de caracteres que deseo cortar.

Ejenplos
who|cut –c1-30>usuarios &
cut –c1-10 empleados> cedulas &

El comando inverso a este es join, el cual une por columnas.

EDITOR DE TEXTO VI

La edición de textos, programas u otras cosas es una tarea muy importante dentro del
computador.

- 17 -
Arquitectura de Computadores.

El editor visual vi fue diseñado para utilizar las características de los terminales
actuales, y manejar el texto a través de toda la pantalla.

El vi es un editor de texto FULL SCREEN, que utiliza caracteres ASCII para formar el
archivo.

Su utilización varía desde la escritura de una carta hasta la implementación de sistemas


para desarrollo.

El Comando “vi”

Formato:
$ vi archivo

El comando vi invoca al editor visual, que cargará consigo el archivo dado


como argumento del comando.

El comando vi puede ser invocado sin necesidad de argumento, pues éste posee algunas
alternativas para el manejo de sus archivos internamente.

Ejemplo:
$ vi reporte.cob

En este ejemplo se cargará el editor con el archivo reporte.cob, si el archivo no


existe, puede crearlo.

AMBIENTACION DEL TERMINAL, TECLADO Y EL EDITOR

El editor, como proceso independiente, posee comandos internos para facilitarnos la


tarea de escribir un archivo.

Estos comandos están relacionados con el terminal, teclado y el estado del usuario
dentro del editor.

Generalmente los terminales y la consola utilizados en UNIX poseen 24 líneas y 80


columnas; la última línea del terminal, está en diferentes modos.

Llamaremos “MODO DE EDICION “, cuando usted al escribir cualquier letra o


carácter, está pasa a formar parte del archivo a editar.
Llamaremos “MODO DE COMANDO”, cuando cualquier tecla que usted presiona el
editor la interpreta como un comando.

CAMBIO DEL MODO DE EDICION A MODO COMANDO

- 18 -
Arquitectura de Computadores.

Usted conoce que está en modo de edición cuando al escribir cualquier carácter, éste,
pasa a formar parte del texto; en ese momento usted está escribiendo en la línea actual
de edición, y el cursor está posicionado en el carácter actual de edición.

Presionando la tecla ESC, usted pasa del MODO DE EDICION al MODO


COMANDO, permitiendo así ingresar el comando deseado.

Usted retorna al MODO DE EDICION a través de la ejecución del comando de


inserción o reemplazo de texto (i, a, o, r).

COMANDOS DEL EDITOR

En esta sección, para hacer referencia a una tecla cualquiera la pondremos entre los
signos de  .

Movimiento Dentro De La Ventana

CTROLF Mueve toda la información de la ventana hacia delante.

CTROLD Mueve la mitad de la información de la ventana hacia


delante.

CTROLB Mueve la información de la ventana hacia atrás.

CTROLU Mueve el contenido de la media ventana hacia atrás.

Movimiento Del Cursor

SPACE Permite movernos un carácter a la derecha del carácter


actual

BACKSPACE Permite movernos un carácter a la izquierda del carácter


actual.

RETURN Permite ubicarnos al principio de la próxima línea.

= Igual función que RETURN.

- Mueve al inicio de la línea previa.

$ Mueve al final de la línea actual.

W Nos ubica el cursor en el inicio de la próxima palabra.

b Nos ubica el cursor en el inicio de la palabra anterior

e Mueve el cursor al final de la palabra próxima.

- 19 -
Arquitectura de Computadores.

Localización Del Texto

/TEXTO/ Mueve el cursor hasta ubicar en el texto lo que se


encuentra entre los caracteres /......./.
s/cedula/ruc/$g

Adición Y Eliminación De Caracteres

x Para borrar caracteres actuales.

n x  Borra los n primeros caracteres.

i Inserta caracteres antes de la posición del cursor, hasta que


usted presione la tecla  ESC .
Con este comando usted se encuentra en MODO
EDICION.

a Permite añadir.

Edición de Líneas

Las líneas de texto son adicionadas por medio de las instrucciones  i  o  a .


Adiciones de línea en línea son más fáciles de visualizar y se ejecutan por medio de la
instrucción  o .

Ejemplo:
o
............
 ESC 

MODO COMANDO

 n yy  Marcar un bloque por default.


 g n yy  Grabar un bloque en el buffer g.
p Copia el bloque hacia debajo de donde estamos
posicionados.

P Copia el bloque hacia arriba

J Une dos líneas.

u Recupera la última línea borrada (con dd).

d Ir al inicio de la línea.

 cw  Borramos y cambiamos hasta el final de la palabra.

- 20 -
Arquitectura de Computadores.

d$ Borramos hasta el final de la línea.

) Mueve el cursor hasta que encuentre un punto.

( Se ubica al inicio de la línea del párrafo.

H nos mueve al inicio de la pantalla.

M nos mueve al medio de la pantalla.

L nos mueve al final de la pantalla.

A ir al final de la línea.

. repite el último comando.

MODO:

: / palabra/ Busca palabra

: n Busca la siguiente ocurrencia hacia abajo.

: N Busca la siguiente ocurrencia hacia arriba.

: wq Salir grabando.

: string¡ Busca el string hacia arriba.

:  comando unix Con  manda a ejecutar un comando UNIX

: n,ms/cadena anterior/cadena nueva/g Búsqueda y remplazó global.


Donde n es número inicial y m es número final de línea

O Permite insertar una línea antes de la línea actual.

o Permite insertar una línea después de la línea actual.

 d  d  Permite borrar la línea actual.

n d  d  Permite borrar n líneas a partir de la línea actual inclusive.

D Borra el residuo de la línea actual, desde el carácter actual


hasta el fin de la línea.
 r x Permite remplazar el carácter actual por cualquier carácter
que usted desee.

 R .. ESC  Permite remplazar el texto a partir del carácter atual hasta
que presione  ESC .

- 21 -
Arquitectura de Computadores.

X Borra el carácter de la izquierda.

n X  Borra n caracteres a la izquierda.

Manejo de todo el texto

: w Permite grabar la información del archivo que se está editando


actualmente.
Esta instrucción solo puede ser utilizada si se cargó al editor con
un archivo especifico.

Ejemplo:
$ vi ejemplo.cob
........................
........................
: w

: x Permite grabar el archivo y salirnos del editor, tomando en cuenta


la condición del archivo del comando anterior.

: w filename Permite grabar el texto que está siendo editado con el nombre
filename, usualmente esta opción es dada cuando el archivo de
edición es nuevo.

: q Abandona la ejecución del editor sin grabar el texto.

: e filename Permite grabar al editor el archivo llamado filename al salir del


que tiene.

: q Para salir si no se ha realizado ningún cambio.

: set number Para numerar las líneas.

: 100 Para ir a la línea 100.

: $ Se va al final del editor del texto.

VARIABLES

Modo:

: set number Numerar líneas

: set show mode

: set wrpmargin =3 Para dar margen.

- 22 -
Arquitectura de Computadores.

: v banner hola Importar el resultado de un comando.

Comandos de Comunicación.

Comando write. Permite escribir un mensaje en la pantalla del terminal de un


usuario, el mensaje enviado aparecerá en la pantalla de destino sin importar que es
lo que el usuario está haciendo.

El formato del comando es:

write nombre_usuario 

<control> <d> para salir de la pantalla del usuario.

El comando write también permite mandar el mensaje.

write all
Favor revisar cola de impresiones

<control> <d>

es posible mandar como mensaje un archivo que tenga creado.


write all <memojefe

Comando wall. Permite escribir un mensaje en la pantalla del terminal de un


usuario, el mensaje enviado aparecerá en la pantalla de destino de todos los usuarios
sin importar que es lo que estén haciendo.

El formato del comando es:

wall
---- mensaje---
<ctrl.> <d>

Comandos de Utilización de Dispositivos de E/S como CD´s

Como formatear un dispositivo en UNIX.

Al formatear un dispositivo de E/S o un CD o un tape cualquiera se inicializa el área de


grabación de tal forma que se deja listo para almacenar la información. Para el efecto
cada unidad de disk_drive tiene su propia identificación, para el caso del ejemplo
tenemos:

- 23 -
Arquitectura de Computadores.

Cinta tipe streaming lape


Cinta de alta velocidad.
CD

TRABAJO DE PREPARACION
Imp importar
Exp exportar Información

Ejemplos de nombres de dispositivos en el directorio /dev

fd0ds15
fd1oo24
fd2oo35

Para Formatear.

format r [unidad]
Ejemplo:
format r /dev /fd0ds15

Transferir Información.

tar. Comando para transferir información.

Transferir del Disco al Drive

tar cvf [ident.drive] [archivos]

tar cvf /dev/cd0ds15 /user/user1/*.sql

Transferir del Drive al Disco.

tar xvf [drive] [archivos]

tar xvf /dev/cd0ds15 /user/user1/prog1.sql

Visualizar la información contenida en diskette o CD.

tar tvf [drive]

- 24 -
Arquitectura de Computadores.

Correo electrónico mail

Comando de ingreso
mail
opciones: s nombre fichero
d elimina mensaje
t salta un mensaje
q salir del mail
u deshace la orden de borrar el mensaje
¿s nombre_ fichero

Para Enviar Mensaje.

$ mail nombre_usuario_destinatario
mensaje

Para Enviar y Guardar una Copia del Mensaje

$ mail destinatario remitente


mensaje

Correo Remoto. ¡bang

$ mail remitente destinatario


$mail amigo!remoto usuario!operación

Resumen Correo.

$ mail – h
> 2 emisor fecha hora
1
?
d1 borra el mensaje 1
u1 deshace la orden de borrar el mensaje.

Permiso de Recuperación de Archivos.

En el file system se encuentra la información del usuario, la del sistema operativo la de


los otros usuarios que forman parte de la red, y muchos de los casos la información del
usuario es confidencial, razón por la cual se requiere contar con seguridad y privacidad
de la información, cabe indicar que la información de los usuarios que se encuentran
como archivos, almacena datos como la ubicación física y otros datos como el
propietario, el grupo, fecha de creación, tamaño, etc.

- 25 -
Arquitectura de Computadores.

Autorizaciones. Las autorizaciones de acceso están acorde con los tipos de usuarios y
permisos de acceso. Los usuarios están clasificados en tres tipos.

1. Propietario o USER. Es el usuario que inicialmente grabó el archivo.

2. Grupo. Es el grupo al cual el usuario- propietario pertenece.

3. Otros. Son todos los usuarios que tiene acceso al sistema operativo.

Los permisos de acceso describen los tipo de procesos que se pueden realizar con
archivos o directorios. Los archivos al igual que los directorios son entidades diferentes
por lo tanto la representación de los permisos son diferentes.
Los permisos son los siguientes:

1. Permiso de Lectura o Read. El usuario puede leer el contenido del archivo o


directorio.

2. Escritura o write. El usuario puede cambiar el contenido de un archivo.

3. Ejecución o execute. El usuario tiene permiso para ejecutar un archivo,


utilizarlo como comando.

Vi listar
ls -l

Combinación de Permisos de Acceso de un Usuario.

Los 9 permisos (tres para cada tipo de usuario) se les conoce como modo de los
archivos para el usuario, cuando se ejecuta el comando ls -l que permite listar el
contenido de un directorio aparecerá la información si es o no directorio.
d si es directorio;
- si es archivo
Los 9 caracteres siguientes le indican los permisos de acceso a los archivos.

d rwx rwx rwx

otros (others)
grupos (group)
propietario (user)
directorio

- 26 -
Arquitectura de Computadores.

read. permiso para el propietario


write. permiso para el propietario
execute. permiso para el propietario

Si el permiso no es asignado aparecerá un “_” que se conoce como protección.

EJEMPLO

Si voy a desarrollar un sistema contable presupuestario, definir grupos a crearse,


permisos, etc.

Ingreso/Modificación de información:
Presupuesto
Contabilidad

Consulta: auditoria
Contabilidad
Presupuesto.
Asesoría

Ejecución: Contabilidad
Presupuesto.
Tesorería

Crearía los siguientes grupos:

 Presupuesto, Contabilidad, Asesoría - Auditoria, Tesorería


 Presupuesto. Tiene los tres permisos rwx para propietario y al grupo.
 Contabilidad. Tiene los tres permisos rwx para propietario y al grupo.
 Auditoria – Asesoría. Tiene permisos de r para el grupo.
 Tesorería. Tiene permisos de x para el grupo.

- 27 -
Arquitectura de Computadores.

Cambiando el modo de un archivo

Con el comando umask se fija los permisos para u, g y o. Loi utiliza únicamente el
administrador del sistema o superusuario (root).

El cambio del modo de un archivo se realiza bajo el comando chmod que es la


abreviatura de cambio de modo, y permite la alteración de los modos iniciales del
archivo, al igual que existen los comandos chown y chgrp, que permiten cambiar el
propietario y el grupo, respectivamente.

El comando “chmod”

Para cambiar el modo de un archivo es necesario que lo ejecute el propietario del


archivo o el administrador del sistema;

Formato:

$chmod tipo-usr + - permisos archivo..

chmod es el comando invocado, tipo-usr es una opción que identifica a que tipo de
usuario se le otorga el acceso.

Los tipo-usr pueden ser:

a Cuando hace referencia a los 3 tipos de usuarios (User, Group,


Other)

g Cuando hace referencia a los permisos a nivel de grupo

o Cuando hace referencia a los usuarios del sistema

u Cuando hace referencia al propietario del archivo

los operadores + - , corresponden a:

+ Adicionar acceso

- Remover al acceso

Los permisos corresponden al tipo de acceso que se desee alterar.

r De lectura (Read)

w De escritura(Write)

x De ejecución (Execute)

también se los puede representar de una forma numérica:

- 28 -
Arquitectura de Computadores.

20 ---> 1 Ejecución

21 ---> 2 Escritura

22 ---> 4 lectura

chmod 777 *.sql

Los archivos corresponden a los diferentes archivos que deseemos alterar el modo.

Ej:

$ chmod ug+rwx o+r-xw ctas*.dat


$ chmod 774 ctas*.dat

permite que el propietario y el grupo tengan acceso de lectura, escritura y


ejecución a los archivos ctas*.dat, y a los demás usuarios solo permiso de
lectura.

chmod u+rwx go+r *.sql


chmod 744 *.sql

chmod a +r *.sql
chmod 444 *.sql

chmod o+rx g+x u+rwx *.sql


chmod 715 *.sql

chmod u+rw go-rwx *.sql


chmod 600 *.sql

chmod a+rwx *.sql


chmod 777 *.sql

chmod ug+rwx o+x *.sql


chmod 771 *.sql

chmod u+rw g+rx o+x *.sql


chmod 651 *.sql

Cambio de grupo de un archivo

El comando “chgrp”

Permite cambiar la asignación del grupo al que pertenece el archivo.

- 29 -
Arquitectura de Computadores.

Esto es común cuando se estipula un grupo para desarrollo, pero la aplicación está
destinada a un grupo diferente.

Formato:

$ chgrp grupo archivo ....

el comando chgrp utiliza como argumento el nombre del grupo al cual se le asignará los
diferentes archivos.

Ej:
$ chgrp presup pre*.dat pre*.key *.shl

permite al grupo presup el cambio del grupo a los archivos pre*.dat, pre*.key,
y *.shl.

Cambiando el propietario de un archivo

El comando “chown”

Permite cambiar la asignación del propietario al cual pertenece el o los archivos.

Es parecido al caso anterior en el cual la creación de un sistema es realizado por los


usuario(s), pero la ejecución del mismo está dado por otros.

Formato:

$ chown usuario archivo........

el comando chown utiliza como argumento el nombre del usuario al cual se le asignará
los diferentes archivos.

Ej:
$ chown usr01 pre*.dat pre*.key *.shl

permite al usuario usr01 dar propiedad sobre los archivos pre*dat, pre*.key, y
*.shl .

ADMINISTRACIÓN DE ATRIBUTOS

- 30 -
Arquitectura de Computadores.

- 31 -
Arquitectura de Computadores.

- 32 -
Arquitectura de Computadores.

- 33 -
Arquitectura de Computadores.

- 34 -
Arquitectura de Computadores.

- 35 -
Arquitectura de Computadores.

- 36 -
Arquitectura de Computadores.

- 37 -
Arquitectura de Computadores.

PROGRAMACIÓN SHELL

Shell hace referencia al intérprete de comandos que es la interfaz principal en los


Sistemas UNIX por lo tanto es el Shell que atiende cuando se teclea y ejecuta los
comandos.

El Shell es un Lenguaje de Programación de alto nivel que permite ejecutar una


secuencia de comandos, seleccionar opciones alternativas dependiendo del resultado de
pruebas lógicas y repetir acciones del programa.

Muchas de las operaciones de Lenguajes C se pueden hacer con Shell.

Utilización de Paréntesis Para Ejecutar Comandos Shell.

A veces es conveniente ejecutar un programa pequeño sin colocar los comandos en un


archivo. Es útil cuando se ejecuta un grupo de instrucciones que no se espera volver a
ejecutar nuevamente.
Puede teclearse una lista de comandos y ejecutarlo en un Subshell la lista entre ( ).

$ (cd deberes; ls -l)


$ (cd /..../ maq5/deberes; ls -l) 

La colocación de la lista de comandos entre paréntesis también es útil cuando se quiere


direccionar el resultado de un conjunto completo de comandos a un archivo.

$ (date; who; pwd) > archivo

Variables de Entorno.

Algunos archivos son utilizados por el Shell para fijar su entorno.


Por ejemplo $HOME contiene valores de entorno que usted puede fijarlos.

$HOME /.profile

Si realiza cambios del .profile se quiere que estos cambios persistan el resto de la
sesión.

Si ejecuta su .profile como un programa Shell este será ejecutado como un Subshell o
un subprograma y cualquier cambio del entorno durará como un Subshell o
subprograma

$pwd
/....../maq5

- 38 -
Arquitectura de Computadores.

$vi archivo
cd deberes
pwd
---
---
cd ---
---
:x

La orden  es un comando de shell que toma un archivo como argumento y hace que su
shell actual lea y ejecute los comandos que están en él.

$pwd
/
$ cd home/user Kill
pwd
/home/user kill
$ . programa 

También realiza cambios al archivo .profile para su entorno actual.

Si editamos el archivo (. profile) para redefinir la variable PATH no tendrá efecto hasta
que se ejecute su (. profile)

PATH : - /HOME ---------


- /HOME ----------
- /dev/ ---------

Para que tenga un efecto hay que salir y volver a entrar.

Colocación de Comentarios.
 b -------

Parámetros Posiciónales

A un programa de Shell se le proporcionan argumentos especificándolos en la línea de


comandos. Cuando se ejecuta un programa, En Shell las variables se fijan
automáticamente para que coincidan con los argumentos de la línea de comandos dados
al programa.

Estas variables se conocen como parámetros posiciónales y permiten al programa


acceder y manipular información de la línea de comandos.

El parámetro $  es el número de argumentos que se pasan al programar.

Los parámetros $1,$2,$3, ..... hacen referencia al 1, 2,3 y así sucesivamente
argumentos en la línea de comandos.

- 39 -
Arquitectura de Computadores.

El parámetro $0 es el nombre del programa Shell.

El parámetro $* hace referencia a todos los argumentos de la línea de comandos como


lo podemos apreciar.

Parámetros Posiciónales del Shell

Cmd arg1 arg2 arg3 ……… arg9


$0 $1 $2 $3 $9

Para ver la relación entre las palabras introducidas en la línea de comandos y las
variables disponibles en un programa Shell vamos a crearnos un ejemplo:

$vi show_args

echo $# Despliega el número de parámetros


echo $0 Despliega el nombre del comando o programa a ejecutarse
echo $1 Despliega el primer parámetro
echo $2 Despliega el segundo parámetro
echo $3 Despliega el tercer parámetro
echo $* Despliega todos los parámetros

$chmod 777 show_args

$ show_args. Esta es una prueba usando echo.

6
Show_args
Esta
es
una
Esta es ……..

VARIABLES ESPECIALES PARA PROGRAMAS DE SHELL

Shell dispone de varias variables predefinidas que son útiles en los programas. Estas
proporcionan información sobre aspectos de su entorno que pueden ser importantes a
los programas de shell, tales como parámetros posiciónales y procesos, Así tenemos:

 El carácter * (asterisco) contiene los valores del conjunto actual de parámetros


posiciónales,
 El signo $ (dólar) que es el (ID) identificador del proceso actual de Shell,
 El carácter  (numeral) contiene el número de parámetros posicionales , esta
variante se utiliza dentro de los programas para comprobar si existen argumentos
en la línea de comandos y si es así cuántos son.
 El signo? (Interrogación) es el valor devuelto por el último comando ejecutable,
cuando se ejecuta un comando, devuelve un número al Shell, este número

- 40 -
Arquitectura de Computadores.

indica si tuvo o no éxito este comando por default devuelve 0 si fue con éxito
y diferente si el comando no tuvo éxito. Se puede comprobar si el comando tuvo
éxito desplegando la variable $?

Ejemplo:
$ cd arch 
echo $? si es 0 accedió al directorio arch
caso contrario otro valor

CALCULO DE LA LONGITUD DE UNA CADENA. Para averiguar la longitud (el


número de caracteres) del valor de una variable se puede utilizar la construcción ${#
variable}. Por ejemplo el nombre del directorio actual es projects, entonces ${#pwd}
es igual a 18, porque el valor de PWD es /home/rrr/projects y el número de caracteres
del PATHNAME es 18.

Ejemplos

A= ‘este es un ejemplo’
echo ${#A}

18

Determinar el número de caracteres del proceso que este ejecutando el comando


VI
A=ps –edaf | grep vi | cut –d “ “ -f1
echo ${#A}

30

Determinar el número de caracteres de nombre del usuario activo


A= whoami
echo ${#A}

EXTRACCIÓN DE SUBCADENAS DE VARIABLES. Se puede utilizar varias


operaciones de subcadenas especiales para extraer una parte de una variable. Para
ilustrarlo supóngase que la variable de VAR vale abc.123. la construcción siguiente
elimina la extensión .123 del valor de VAR:

Ejemplo

VAR=abc,123.
$> echo ${VAR%.*}

abc

El signo de % es la instrucción que elimina del final (lado derecho) del valor de la
variable cualquier cosa que se identifique con el patrón que sigue(.), los patrones
pueden ser cadenas de texto o expresiones que utilizan los comodines del nombre del
archivo del shell (*.sql).

- 41 -
Arquitectura de Computadores.

El signo de dólar se utiliza de una manera similar para eliminar una subcadena.

ENTRADA Y SALIDA DEL SHELL

Shell proporciona dos comandos internos para la escritura de la salida (echo), y para la
lectura de la entrada comando (read). Además, existen formas para incluir entradas de
texto para ordenes en comandos.

Comando echo.
Es un comando que permite escribir salida desde un programa de Shell. echo escribe
argumento sobre la salida estándar. Puede utilizarse directamente echo como una orden
regular o como un componente de un comando shell. También se lo puede utilizar en
comandos de shell para visualizar peticiones de comandos o para sacar información.

Ejemplo:
 echo Este es un ejemplo
Despliega
Este es un ejemplo
 echo de variables
echo $HOME – despliega el home directory
echo $PATH – despliega todos los directorios dentro del path

Comando read.
Permite insertar la entrada del usuario o subprograma, read lee solo una línea de la
entrada del usuario y le asigna a una o más variables de Shell. El programador puede
proporcionar un nombre a la variable de Shell, por default, tiene el nombre de Reply.

Ejemplo:
Echo “Tipee Terminal type: \C”
Read Term
Export Term  Term es una variable global y pueda ser ejecutada para
otros programas
Echo $Term

1ra.- Línea despliega tipo de Terminal.


2da .- Lectura del tipo de Terminal digitado
3ra.- Instrucción Export Term que declara global a la variable Term, por lo tanto puede
ser utilizada para otro programa.
4ta .- Despliega el valor de la variable Term.

Se puede utilizar el comando read para asignar varias variables de Shell a una única
variable cuando utiliza read con varios nombres de variables el primer campo tecleado
por el usuario se asigna a la primera variable, el segundo campo y así sucesivamente
los campos que sobran a la izquierda se asignan a la última variable. El separador de
campos para la entrada del Shell es definido por la variable IFS( Internal Freld
Separated) que por default es un espacio en blanco.

- 42 -
Arquitectura de Computadores.

Si se desea utilizar un carácter diferente para separar los campos se lo puede hacer
definiéndole un valor para la variable IFS.

echo “Digite un texto”


Este es un ejemplo de read
read word1 word2 word3 word4
echo $word1
echo $word2 $word3
echo $word4

Salida
Este
es un
ejemplo de read

Otros Ejemplo (No nececita el comando echo)

read –p “digite un número” n

Salida
Digite un numero
5

Otro ejemplo (Para que se despliegue horizontal)


echo –n “ingrese los primeros 3 números”
read A B C

Salida
Ingrese los primeros 3 números”
123

Comando Set
Se puede proporcionar a sus programas y en particular a sus demónicos acceso a la hora
y fecha actual cuando estos se ejecutan utilizando el comandos de Shell interno set.

Set toma su entrada y asigna un parámetro posicional del Shell a cada palabra, por
ejemplo se puede fijar los parámetro posiciónales a los elementos del comando date.

Ejemplo:

$> date
wed Nov 8 12:55:14 EST 1989

$ set $(date)
$ echo $1
wed
$ echo $2
Nov
$ echo $6

- 43 -
Arquitectura de Computadores.

1989

Otro ejemplo

$> who am i
Steve pl/5 2017 june 19 08:16

set $(who am i)
echo $1
Steve
echo $2
Pl/5
echo $3
2017

Otro ejemplo
Determinar el tiempo que estoy trabajando en la terminal

Comando exit
Cuando un proceso termina, devuelve a su comando padre, el comando exit hace que el
Shell salga y devuelva el número de estado de salida, por convención 0 significa que
salió con éxito y un estado de salida no cero significa que sucedió algo anormal, sin
embargo exit devuelve cualquier valor que se le dé como argumento. Por convenio, un
valor de salida de 1 se utiliza para indicar que el programa finalizó anormalmente y un
valor de 2 se utiliza para indicar un error de uso o de línea de órdenes. Si UD no
especifica ningún argumentos, exit devuelve el estado de la última orden ejecutada.

if [ $valor -eq “1” ]


then exit 0

Otro ejemplo
until [ "$opcion -eq "9"]
do
echo "*****************BIENVENIDOS************"
echo "1. Crear un directorio "
echo "2. Crear un Archivo en blanco "
echo "3. Salir"
echo -e "escoja una opcion \c: "
read numer
case $numer in
1)
echo "Ingrese el nombre del directorio a crear \c:"
read direct

- 44 -
Arquitectura de Computadores.

mkdir $direct
;;
2)
echo "Ingrese el nombre del archivo a crear \c :"
read arch
touch $arch
;;
3)
echo "Programa Finalizado"

exit
;;
*)
echo "escoja una opcion de la lista indicada"
;;
esac
echo "Ingrese un numero menor que 3"
read numer
done

PROGRAMACIÓN SHELL

Shell es un lenguaje completo de programación que puede ejecutar una serie de


comandos y ejecutar condicionalmente comandos en base a pruebas lógicas y realizar
bucles o interacciones con comandos, con estas tres construcciones de programación
puede realizarse cualquier programación lógica que sea posible con otro lenguaje.
 Como realizar pruebas lógicas y ejecutar ordenes en base a su resultado.
 Como realizar la bifurcación y los operadores del bucle.
 Como utilizar las expresiones aritméticas en los programas de shell.
 Como depurar programas de shell.

Export.

Este comando permite a los subprogramas acceder a la variable exportada, sin embargo
hay que tomar en cuenta que en un subshell nunca puede modificar el valor de una
variable en el entorno o programa padre

DIR = ‘pwd’
Programa echo $DIR

- 45 -
Arquitectura de Computadores.

Principal /HOME/USER/CURSO/maq1
export DIR
_
_
_

Operador if.

Shell proporciona herramientas para efectuar muchos tipos de decisiones basadas en el


entorno de ejecución actual para una orden o programa shell. Una de estas es el
operador if, que introduce una operación condicional, el formato de la orden if es:

$ if expresión; then ordenes ; fi

if introduce una secuencia de comando multilínea que no se cierra hasta encontrar los
caracteres fi, la expresión es cualquier expresión lógica o un comando que devuelve un
valor, recuerde que la mayoría de comandos devuelve un valor numérico que está
disponible en la programación Shell.

Si la expresión se resuelve con un valor de retorno 0, se ejecutan los comandos a


continuación de la parte then hasta los caracteres de la parte fi.
Ejemplo:

$ If true; then echo hola ; fi

Respuesta Hola

$If false; then echo hola; fi

Respuesta _

Otra Forma:
if true
then
echo hola
fi

Respuesta
hola

El ejemplo anterior muestra un operador lógico especial disponible en los programas de


Shell que es el true, este siempre devuelve un valor 0, de tal manera que if ejecurá los
comandos que están a continuación de then; también está disponible false que devuelve
un valor distinto de 0.

false

- 46 -
Arquitectura de Computadores.

echo $ ?
Respuesta
1

Se permite tantos comandos como sean necesarios incluyendo otros comandos if


anidados, dentro de la parte then de la construcción if.
if true
then
echo hola
echo ‘pwd’ echo $(pwd)
fi

Respuesta
hola
/usr/steve

Otro ejemplo

Una lista de comandos puede seguir a else si es necesario y se introducen con la forma
abreviada elif.
if false
then
echo hola
elif true
then
echo adios
fi

Respuesta
adiós

Comando Test.
Esta diseñado para seguir al comando if y proporcionar valores de verdad que son
interpretados por if, este comando test tiene 2 formas diferentes, sinónimas la una de la
otra, ambas pueden ser utilizadas por un comando Shell aunque por efectos de
estandarización, es mejor usar una forma permanentemente.

1ra. Forma. Va el propio nombre del comando test, seguida por los argumentos que se
resuelven como se puede ver en el ejemplo.
$if test $VAR
> then
> echo hola
> fi
$
Si la variable de entorno VAR no está definida entonces el comando test $VAR fallará,
entonces tratará el contenido if como falso. Si la variable de entorno está definida
entonces el test tendrá éxito.

- 47 -
Arquitectura de Computadores.

2da. Forma. Test utiliza a los corchetes como caracteres especiales razón por la cual
los argumento del test están incluidos dentro de los corchetes y la palabra test no
aparece.

Ejemplo: if [ $VAR ]
> then
> echo hola
else
Echo “Variable VAR no declarada”
>fi
hola
$
Los corchetes deben estar separados por espacios en blanco para que el Shell le
interprete como correcto.
El comando test dispone de operaciones para archivos para comparar números, y para
comparar cadenas de caracteres y valores de las variables de entorno, para todos los
casos, espacios en blanco deben rodear a los corchetes y a cada uno de los operadores.

La forma –f nombre-archivo devuelve cierto si el archivo existe y es el archivo normal.

$> if [ -f /etc/passwd ]
> then echo Archivo existe
>fi

La opción –r nombre-archivo devuelve cierto si el archivo existe y tiene permiso de


lectura.
La opción –w nombre-archivo devuelve cierto si el archivo existe y tiene permiso de
modificación..
La opción –x nombre-archivo devuelve cierto si el archivo existe y es ejecutable.
La opción –d nombre-archivo devuelve cierto si el archivo existe y es un directorio.
La opción –s nombre-archivo devuelve cierto si el archivo existe y tiene un tamaño
mayor a 0.

Los operadores de comparación de caracteres comprueban la presencia y el valor de las


variables de entorno, esto permite por lo tanto asignar el valor a una variable de entorno
y luego comprobar el valor de la variable para decidir las decisiones posibles a tomar.

DIR = ´pwd´
$if [ $DIR = $HOME ]
> then echo Estoy en el Home Dierctory.
>fi

Operador = (igual)

El operador igual permite comparar a dos cadenas de caracteres. Si las cadenas son
idénticas el resultado del if se da por verdadero y falso si no lo son, Se puede también
utilizar el operador = no igual entonces sería home verdadero si las cadenas son
diferentes.

- 48 -
Arquitectura de Computadores.

DIR = ´pwd´
$If [ $DIR = $HOME]
then echo No estoy en el Home Directory
>fi

Una cadena o una variable de entorno puede aparecer sola para determinar si la cadena
ha sido definida.

$ if [ $DIR ]

La orden test puede comparar valores numéricos enteros.

Operadores Numéricos

Las comparaciones numéricas dentro del test se utiliza de la siguiente forma donde n1 y
n2 son representaciones que se resuelven por un número y el operador –eq (por iguales).
Se evalúa como verdadero si los dos números son iguales.

VAL=2
If [ $VAL –eq 2 ]
then echo `son numeros iguales´
fi
Otros operadores numéricos son:
-ne  no igual
-gt  mayor que
-lt  menor que
-le  menor o igual
-ge  mayor o igual
Estos operadores numéricos son utilizados con frecuencia para comprobar el valor de
retorno de algún comando, y luego toman alguna acción si el número de retorno es un
número específico.

La mayoría de los comandos devuelve 0 si se completan con éxito la ejecución.

1) Dir = ` cd \home\sidecom`
$if [ $? –eq 0 ]
then
echo Se ingresó a la carpeta sidecom
else
echo No se puede ingresar a sidecom
>Fi

2) Dir = `rmdir nombre`


if [ $? –eq 0 ]
then
echo si me puede borrar
else
echo no me puede borrar.
fi

- 49 -
Arquitectura de Computadores.

El comando test proporciona una herramienta para cambiar operadores y construir


expresiones complejas. Se cuenta con la operación de negación  que justamente niega
otras operaciones.

Ejemplo:
If [  -f nombre-archivo] Pregunta si no existe el archivo.

touch. Crea archivos en blanco.


If [  -f archivo1 ]
then touch archivo1
fi

Otros Operadores de combinación disponible con test.


-a and
-o or

expr. Acepta números y operadores aritméticos como argumentos, calcula el resultado


devolviendo su resultado sobre su salida estándar

C = expr 4 + 5 
9

También se permite ordenes más largas, pero cada parte de la expresión debe estar
rodeada por espacios en blanco.

Programa utilizando expr que ejecuta procesos del mes anterior.

#! /bin/bash
NA=0
NM=0
ND=0
echo se va a realizar un backup
echo Ingrese el directorio de origen
read orig
echo Ingrese el directorio de destino
read Dest
AA= $(date + %y)
MA= $(date + %m)
echo La fecha actual es: $AA/ $MA
if [ $MA –eq 1 ]
then NM= ´expr $AA –1´
NA =12
else
NM= ´expr $MA -1´
NA = $AA
fi
echo este proceso se realizará el : $NA/$NM
FICH = back _ $ (date + $NA $NM). Tgz
tar –cvf $DEST $FICH $ORIG

- 50 -
Arquitectura de Computadores.

FOR.

Otros operadores del shell proporcionan construcciones para formación de bucles que
ejecuten repetitivamente una sección de programa Shell.

Sintáxis

for var in item1 item2 item3;


do
ordenes;
done

Donde var es una variable de entorno que lo designa el programa y los items componen
una lista de cadena de caracteres con cada item separado por un espacio blanco
de los demás

Ejemplo:

for var in 1 2 3
do
echo $var
done

Respuesta
1
2
3

Los comandos dentro del do-done pueden ser tan complejos como sea necesario
incluyendo instrucciones if-fi o más operadores for. La instrucción for con frecuencia
se lo utiliza con nombres de archivos para efectuar repetidamente alguna operación
sobre cada archivo ya que el comando for interpretado por Shell, efectuándose una
expansión de comodines.

Despliegue los directorios

for var in ‘ls’


do
if [ -d $ var ]
echo $var
fi
done

Operador While.

Combina algunas de las características de for y de if, toma una orden de test, una
sección do-done Si la parte del test se resuelve por verdadero se ejecuta la sección do-
done , si la parte del test se resuelve falso la parte do-done no se ejecuta y el bucle se
completa, después de ejecutar la parte do-done se ejecuta de nuevo la sección de test y
el bucle continua hasta que la sección test se resuelve como falso.

- 51 -
Arquitectura de Computadores.

$while [ ! –f fichero ]
do
echo Intentando crear el fichero
touch fichero
done

VAL=1
while [ $val –lt l ]
do
touch fichero $val
val = `expr $val+1´
done

Como es habitual cualquier comando incluyendo otras operaciones while puede ser
incluida dentro de do-done

Operador Until.

Puede utilizar until en vez de la palabra clave while para invertir el sentido de la
comprobación, Es decir while ejecuta la lista los comandos en tanto la prueba sea
cierta; until ejecuta la lista de comandos en tanto la prueba sea falsa.

VAR=10
until [ $VAR –lt 10 ]
do
echo ´La variable VAL tome un valor >=10´
read VAR
echo ingrese valor < 10 para salir
done

Operador Case

Shell proporciona un operador de control adicional, Case que actúa como un orden if –
elif-…-elif –fi grande. Dada una cadena de caracteres Case determina con cual de varias
categorías coincide la cadena y luego ejecuta una lista de ordenes asociada con esa
categoría. Las otras categorías no coincidentes se ignoran. El formato del operador
Case es el siguiente:

$ case $VAR in
patron 1 )
lista de ordenes
;;
patron 2 )

- 52 -
Arquitectura de Computadores.

lista de ordenes
;;
patron 3 )
lista de ordenes
;;
esac

Puedes tener tantos patrones y listas de ordenes como necesites pero la lista de ordenes
asociada con cada patrón debe ir terminada por un ordenador especial ;;. Además, cada
patrón debe ser diferente de los demás y la construcción total debe estar terminada por
esac (Por Case leído al revés). Finalmente el operador ) (Paréntesis derecho) es
necesario después de cada patrón. VAR puede ser cualquier variable de entorno o
cualquier expresión que se resuelva en una cadena de caracteres. Como es habitual
cualesquiera otros operadores Shell puede ser anidados dentro de la lista de ordenadores
para cada Case.
La siguiente orden imprimirá un saludo especial para cada usuario de la maquina.

$ case $LOGNAME in
jim)
echo Hola Jim, bienvenido de vuelta
echo de tus vacaciones
;;
pat )
echo Pat, no te olvides de leer el correo
;;
steve )
echo Por favor borra algunos ficheros, estas usando
echo demasiado espacio de disco…. Gracias!
;;
esac

Normalmente, un guión como este se ejecutaría desde un fichero, quizás por los
usuarios cuando hacen su presentación en la maquina. Podría estar implementado como
parte del perfil [profile] discutido en la próxima sección.
La sección patrón del operador Case permite el uso de expresiones regulares con el
formato de comodines de Shell. En el ejemplo anterior podríamos haber utilizado ste*,
*te*, ?teve, u otro patrón para corresponder con éxito a Steve.

Además, el carácter | (cause) puede ser utilizado para significar “o” en la sección patrón,
como se muestra aquí:

$ case $LOGNAME in
steve | jim )
echo No te olvides de la reunión de hoy
;;
* )
echo Bienvenido a nuestro sistema Unix
;;
esac

- 53 -
Arquitectura de Computadores.

El primer caso es para Steve o Jim. El segundo caso, * , se corresponderá con cualquier
otra cadena y se utiliza un caso por defecto de captación total. Recuerda, solo se efectúa
una acción cada vez que la construcción Case se ejecuta como un todo, y esa será la del
primer patrón que se corresponda con la cadena de caracteres. Si ninguno de los
patrones coincide, entonces ninguno de los casos se ejecuta.

- 54 -
Arquitectura de Computadores.

Realizar un programa (Pistolero) que se ejecute cada 30 minutos


- Se debe encontrar procesos que se ejecuten más de n minutos
- Ejecuta y verifica todos los procesos bajo root
- Utilizar crontab del sistema para poder revisar los procesos.

Ps –edaf | awk ’{print $2}’ >P1


Ps –edaf | awk ’{print substr ($5,1,2)}’ >P2
for val in `cat p1`
do
read pid < p1
read time < p2
if [$P2 > 30]
then
Kill -9 $A
fi
done

Realizar un programa en el pistolero, si los usuarios son los siguientes:

- Si el usuario es Sidecom no mata procesos.


- Si el usuario es Coprodu le doy máximo 45 minutos.
- Si el usuario es CO16497 le doy máximo 300 minutos.
- Si el usuario es COACOMET le doy máximo 100 minutos.
- Para otros le doy 30 minutos.
ps –edaf | awk ‘{min=substr ($7,1,2)*60+substr($7,4,5);print mi}’ > minutes
ps –edaf | awk ‘{print $2}’ > codigos
ps –edaf | awk ‘{print $1}’ > usuarios
var=1
for var in ‘cat minutos’
do
aux=`expr $var +1`
val=`head -$aux usuarios | tail -1`
case $val in
sidecom) min =`expr 24\*10`;;
co16497) min = 300;;
coaconet) min = 100;;
*) min = 35;;
esac
if[$var1 –gt $min]
then
kill ‘head -$var codigos | tail -l’
fi
var = ‘expr $var + 1’
done

- 55 -

También podría gustarte