Documentos de Académico
Documentos de Profesional
Documentos de Cultura
*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.
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 (/)
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.
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.
Archivo 1
2
Archivo 3
/------------ Cartas 1
CURSO
documento 1
documento 2
Documento
documento 3
s
-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.
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
-5-
Arquitectura de Computadores.
prog1.txt
programa
progra1
progra2.xyz
.login
.oculto 1
.programa
El super usuario root puede crear directorios desde cualquier lugar donde se encuentre.
Home Directory. Directorio del usuario, directorio hogar de un usuario. Se crea cuando
el administrador del sistema crea el usuario.
-6-
Arquitectura de Computadores.
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
Ejemplo
/User/maq1
Ejercicio:
-7-
Arquitectura de Computadores.
cp nombre_archivo nombre_archivo
path + nombre archivo path + nombre archivo
cat222
RAIZ concatena1 Bin.sql
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
-8-
Arquitectura de Computadores.
Path+n_arch
rm –i arch*
archivo
archiv
archivo1
archivo2
Comando who.
Muestra una lista de usuarios que están trabajando en ese momento (activos).
Comando wc
wc opción Path+n_archivo
Ejemplos
Aplicación especial
-9-
Arquitectura de Computadores.
Impresión de Archivos.
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
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.
cancel #job
- 10 -
Arquitectura de Computadores.
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).
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
- 11 -
Arquitectura de Computadores.
ps –edaf |wc -l
Comando kill
Ejemplo:
kill –9 3459
Ejemplo;
Eliminar el proceso que ejecuta el programa ruya5.
1. &
2. crontab
3. at
Comando &
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.
Comando crontab
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
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.
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
Comando at – r
$ at –r 62345879.a
Comando grep.
Visualización de archivos
Comando cat
Despliega el contenido de un archivo página por página.
- 14 -
Arquitectura de Computadores.
Concatenar archivos
Archivo1
111111111
111111111
111111111
Archivo2
222222222
222222222
222222222
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.
- 15 -
Arquitectura de Computadores.
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)
Comando find.
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 prog3.sql –print Busca desde el sitio donde estoy ubicado
Ejemplo
- 16 -
Arquitectura de Computadores.
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 .
Ejenplos
who|cut –c1-30>usuarios &
cut –c1-10 empleados> cedulas &
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.
El Comando “vi”
Formato:
$ vi archivo
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
Estos comandos están relacionados con el terminal, teclado y el estado del usuario
dentro del editor.
- 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.
En esta sección, para hacer referencia a una tecla cualquiera la pondremos entre los
signos de .
- 19 -
Arquitectura de Computadores.
Edición de Líneas
Ejemplo:
o
............
ESC
MODO COMANDO
- 20 -
Arquitectura de Computadores.
MODO:
: wq Salir grabando.
R .. ESC Permite remplazar el texto a partir del carácter atual hasta
que presione ESC .
- 21 -
Arquitectura de Computadores.
Ejemplo:
$ vi ejemplo.cob
........................
........................
: w
: 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.
VARIABLES
Modo:
- 22 -
Arquitectura de Computadores.
Comandos de Comunicación.
write nombre_usuario
write all
Favor revisar cola de impresiones
<control> <d>
wall
---- mensaje---
<ctrl.> <d>
- 23 -
Arquitectura de Computadores.
TRABAJO DE PREPARACION
Imp importar
Exp exportar Información
fd0ds15
fd1oo24
fd2oo35
Para Formatear.
format r [unidad]
Ejemplo:
format r /dev /fd0ds15
Transferir Información.
- 24 -
Arquitectura de Computadores.
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
$ mail nombre_usuario_destinatario
mensaje
Resumen Correo.
$ mail – h
> 2 emisor fecha hora
1
?
d1 borra el mensaje 1
u1 deshace la orden de borrar el mensaje.
- 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.
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:
Vi listar
ls -l
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.
otros (others)
grupos (group)
propietario (user)
directorio
- 26 -
Arquitectura de Computadores.
EJEMPLO
Ingreso/Modificación de información:
Presupuesto
Contabilidad
Consulta: auditoria
Contabilidad
Presupuesto.
Asesoría
Ejecución: Contabilidad
Presupuesto.
Tesorería
- 27 -
Arquitectura de Computadores.
Con el comando umask se fija los permisos para u, g y o. Loi utiliza únicamente el
administrador del sistema o superusuario (root).
El comando “chmod”
Formato:
chmod es el comando invocado, tipo-usr es una opción que identifica a que tipo de
usuario se le otorga el acceso.
+ Adicionar acceso
- Remover al acceso
r De lectura (Read)
w De escritura(Write)
x De ejecución (Execute)
- 28 -
Arquitectura de Computadores.
20 ---> 1 Ejecución
21 ---> 2 Escritura
22 ---> 4 lectura
Los archivos corresponden a los diferentes archivos que deseemos alterar el modo.
Ej:
chmod a +r *.sql
chmod 444 *.sql
El comando “chgrp”
- 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:
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.
El comando “chown”
Formato:
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
Variables de Entorno.
$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
Si editamos el archivo (. profile) para redefinir la variable PATH no tendrá efecto hasta
que se ejecute su (. profile)
Colocación de Comentarios.
b -------
Parámetros Posiciónales
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.
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
6
Show_args
Esta
es
una
Esta es ……..
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:
- 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
Ejemplos
A= ‘este es un ejemplo’
echo ${#A}
18
30
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.
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
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.
Salida
Este
es un
ejemplo de read
Salida
Digite un numero
5
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.
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
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.
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.
Respuesta Hola
Respuesta _
Otra Forma:
if true
then
echo hola
fi
Respuesta
hola
false
- 46 -
Arquitectura de Computadores.
echo $ ?
Respuesta
1
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.
$> if [ -f /etc/passwd ]
> then echo Archivo existe
>fi
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 ]
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.
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
- 49 -
Arquitectura de Computadores.
Ejemplo:
If [ -f nombre-archivo] Pregunta si no existe el archivo.
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.
#! /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
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.
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.
- 55 -