Documentos de Académico
Documentos de Profesional
Documentos de Cultura
UNIX
Curso básico
Elaborado por: Cristian Ulises Pérez Fernández
Temario
• Introducción
¿Qué es Unix?
Características generales
Usuarios y grupos
Manejo de claves
Shells
• Utilerías
Sistema de archivos
Organización de archivos
Diferentes tipos de archivos y permisos
Copiar, borrar, mover y eliminar archivos
Manejo de directorios
Operaciones de búsqueda
Cambio de hora y fecha de archivos
Identificación de diferencias entre archivos
Ligas (duras y simbólicas)
Comandos para validar espacios
Comandos para validar procesos
Elaborado por: Cristian Ulises Pérez Fernández
Temario (cont.)
• Programación Shell
• Interpretes de comandos
• Variables de Entorno
• Entrada y salida (Redireccionamiento)
• Procesamiento en primer y segundo plano
• Alias de comandos
• Cron / Crontab
• El editor vi
• Revisión de un Shell Script (sesión practica)
Elaborado por: Cristian Ulises Pérez Fernández
Temario (cont.)
• Programación con AWK
• Definición de un programa awk
• Ejecución de un programa awk
• Expresiones Regulares como Patrones
• Operadores de Expresiones Regulares
• Expresiones de Comparación como Patrones
• Operadores Booleanos como Patrones
• Los Patrones Especiales BEGIN y END
• El Patrón Vacío
• Asignación
• Funciones Implícitas Numéricas
• Funciones para manipulación de Cadenas
• Funciones definidas por el Usuario
• Comentarios en Programas awk
• EjemplosRevisión de un Awk Script (sesión practica)
Elaborado por: Cristian Ulises Pérez Fernández
INTRODUCCIÓN
Elaborado por: Cristian Ulises Pérez Fernández
¿Qué es Unix?
Unix es un Sistema Operativo Portable, multitarea y multiusuario;
desarrollado, en principio, en 1969, por un grupo de empleados de los
laboratorios Bell de AT&T, entre los que figuran Ken Thompson, Dennis
Ritchie y Douglas McIlroy. Desarrollado en lenguaje de programación C.
Variantes:
• Linux: disponible en la familia x86, las estaciones Alpha de Digital, la familia
• 68K, estaciones MIPS, estaciones SPARC . . .
• SunOS: disponible para la familia 68K así como para la familia SPARC de estaciones
• de trabajo SUN.
• Solaris: disponible para la familia SPARC de SUN así como para la familia x86.
• SYSVR4: disponible para la familia x86, vax, . . .
• IRIX: disponible para MIPS
• AIX: disponible para RS6000 de IBM y PowerPC.
• WindowsNT: disponible para la familia x86, Alpha y MIPS.
Elaborado por: Cristian Ulises Pérez Fernández
Características generales
• Memoria Virtual:
Memoria grande y lineal: Un programa en una máquina de 32 Bits puede acceder
y usar direcciones de un rango de 4GB en un máquina de solo 4MB de RAM. El
sistema sólo asigna memoria auténtica cuando le hace falta, en caso de falta de
memoria de RAM, se utiliza el disco duro (swap).
• Multitarea (Multitasking):
Cada programa con su propia “idea” de la memoria. Es imposible que un programa
afecte a otro sin usar los servicios del sistema operativo. Si dos programas
escriben en la misma dirección de memoria cada uno mantiene su propia idea de
su contenido.
• Multiusuario:
Más de una persona puede usar la máquina al mismo tiempo.
Programas de otros usuarios continúan ejecutándose a pesar de que tú entres en
la máquina.
• Casi todo tipo de dispositivo puede ser accedido como un archivo.
• Existen muchas utilidades diseñadas para que la salida de una pueda
ser la entrada de la otra.
• Permite compartir dispositivos (como disco duro) entre una red de
máquinas.
Elaborado por: Cristian Ulises Pérez Fernández
Características generales
• Reutiliza el software: a través de la combinación de comandos
simples en aplicaciones complejas.
• Portable: el mismo sistema operativo corre en un espectro de
máquinas que van desde notebooks a supercomputadoras. Es el
único sistema operativo con estas características.
• Flexible: se adapta a muchas aplicaciones diferentes.
• Potente: dispone de muchos comandos y servicios ya
incorporados.
• Elegante: sus comandos son breves, coherentes, específicos
para cada tarea y muy eficientes, orientado a redes desde el
comienzo.
• Dispone de un estándar (POSIX) que debe cumplir todo sistema
operativo que pretenda ser UNIX, lo que asegura una evolución
predecible.
Elaborado por: Cristian Ulises Pérez Fernández
Características generales
Un sistema UNIX debe ser considerado por niveles:
Características generales
Niveles:
Elaborado por: Cristian Ulises Pérez Fernández
Características generales
Niveles:
Elaborado por: Cristian Ulises Pérez Fernández
Usuarios y grupos
• Cada usuario de Unix pertenece a uno o varios grupos, y
cada archivo pertenece a un determinado usuario así como a
un determinado grupo. La estructura /home contiene los
directorios de los usuarios del sistema.
• El usuario root que tiene su “home” en la raíz “/”.
• En la mayoría de los sistemas pequeños los directorios de los
usurios se encuentran directamente sobre /home.
• En sistemas grandes con grandes cantidades de usuarios se
pueden agrupar por tipos de usuarios o por su grupo.
Shells
UNIX soporta varios intérpretes de comandos o Shells:
• sh : Bourne SHell, el shell básico, no pensado para uso
interactivo.
• csh : C-SHell, Shell con sintaxis como lenguaje “C”. El archivo de
configuración es .cshrc (en el directorio $HOME).
• tcsh : alTernative C-Shell (Tenex-CSHell), con editor de línea de
comandos. El archivo de configuración es .tcshrc, o en caso de
no existir, .cshrc
• bash : Bourne-Again SHell, con lo mejor de sh, ksh y tcsh. El
archivo de configuración es .bash_profile si se está entrando en la
cuenta por primera vez, y después el archivo .bashrc
• ksh : Korn SHell, sintaxis de sh con soporte para uso interactivo.
Es el que establece por omisión AIX. El archivo de configuración
es .profile.
Elaborado por: Cristian Ulises Pérez Fernández
UTILERÍAS
Elaborado por: Cristian Ulises Pérez Fernández
Sistema de archivos
En UNIX la estructura de archivos es jerárquica lo que
significa que esta sobre la base de directorios, en forma de
árbol invertido.
Sistema de archivos
Existen dos clases de rutas dentro de los sistemas unix:
• Path absoluto: Es la ruta que describe la localización
desde la raíz hasta el lugar donde se localiza un archivo,
este path siempre inicia con “/”. Por ejemplo. “/var/log” ,
“/etc/mail”.
Sistema de archivos
• pwd
• (Print Working Directory) Este comando proporciona el
nombre del directorio actual.
• cd
• (Change Directory) Permite moverse a través de la
estructura de directorios. Si no se le proporciona
argumento se provoca un salto al directorio $HOME.
• El argumento puede ser un nombre absoluto o relativo de
un directorio.
Elaborado por: Cristian Ulises Pérez Fernández
Organización de archivos
Principales directorios:
Elaborado por: Cristian Ulises Pérez Fernández
Organización de archivos
Principales directorios:
Organización de archivos
Principales directorios:
• /mnt: Punto de montaje temporal para sistemas de
archivos.
• /tmp, /var/tmp: Contienen archivos temporales.
• /var: Contiene archivos y directorios variables en
contenido.
• /proc: Referencia por cada proceso activo en el sistema.
• /boot: Contiene los archivos de arranque del sistema.
• /kernel: Contiene al core de Unix, manejadores y módulos
relacionados.
Elaborado por: Cristian Ulises Pérez Fernández
• d directorio
• l liga simbólica
• b bloque
• c carácter
• p FIFO (pipe)
• s socket
• - archivo ordinario
Elaborado por: Cristian Ulises Pérez Fernández
Por ejemplo:
• more
Muestra el contenido del archivo permitiendo la paginación.
• less ó m
Es una versión mejorada del anterior. Aparte de que es más corto de
teclear, permite una paginación correcta en ambas direcciones. Otra
ventaja es que no lee el archivo entero antes de arrancar.
Elaborado por: Cristian Ulises Pérez Fernández
• tail
Muestra las últimas líneas de un archivo.
tail -30 file Muestra las 30 últimas líneas de file
tail +30 file Muestra desde la línea 30 en adelante de file
tail –f file Muestra las últimas líneas de un archivo que está en
proceso de escritura (ej. Monitoreo de bitácoras de salida)
• cut
Para un archivo compuesto por columnas de datos, permite el
visualizar un rango de columnas.
Elaborado por: Cristian Ulises Pérez Fernández
Manejo de directorios
Comando ls:
Este comando permite listar los archivos de un determinado
directorio. Si no se le suministra argumento, lista los archivos
y directorios en el directorio actual. Si se añade el nombre de
un directorio el listado es del directorio suministrado.
• Opciones de listado:
• -l (Long listing) proporciona un listado extenso, (tipo,
permisos de, usuario, tamaño, fecha, nombre)
• -a (list All) lista también los archivos ocultos.
• -R (Recursive) lista recursivamente el contenido de todos
los directorios que se encuentre.
• -g (list Group) lista el grupo al que pertenece dicho archivo
Elaborado por: Cristian Ulises Pérez Fernández
Manejo de directorios
• mkdir
(MaKe DIRectory) Crea un directorio con el nombre
(absoluto o relativo) proporcionado
• rmdir
(ReMove DIRectory) Elimina un directorio con el nombre
(absoluto o relativo) suministrado. Dicho directorio debe de
estar vacío.
Elaborado por: Cristian Ulises Pérez Fernández
Operaciones de búsqueda
• find
Permite la búsqueda de un archivo en la estructura de directorios.
find . -name *.txt exec rm ’{}’ \;
Busca en la estructura de directorios un archivo que acabe en “.txt” y lo borra.
• grep (Global Regular Expression Print)
Permite la búsqueda de una
Sintaxis:
grep [opciones] patron [archivo...]
Opciones:
-i Ignora la distinción entre mayúsculas y minúsculas
-v Imprime las líneas que NO contienen el patrón dado
-c Regresa el número de líneas que contienen el patrón
-n Imprime la línea donde se encuentra el patrón y el número que ocupa en el archivo
-l Cuando se especifican múltiples archivos, regresa los nombres de los archivos que
contienen el patrón
-s Suprime mensajes de error
Elaborado por: Cristian Ulises Pérez Fernández
Ejemplo:
touch –t 201506151200.00 archivo.txt
• diff
Permite comparar el contenido de dos archivos
• wc (Word Count)
Contabiliza el número de líneas, palabras y caracteres
• file
Indica si un archivo es de texto o binario.
Elaborado por: Cristian Ulises Pérez Fernández
• rusers
Análogo al anterior pero para máquinas remotas (lanza un
broadcast e imprime las contestaciones de las máquinas).
• ping
ver si una máquina está conectada a red y si camino de Internet
hasta la misma funciona correctamente.
Elaborado por: Cristian Ulises Pérez Fernández
• finger
finger user muestra información sobre el usuario user en la máquina
local. finger user@hostname muestra información sobre un usuario
llamado user en una máquina hostname. finger @hostname muestra
los usuarios de una máquina.
Elaborado por: Cristian Ulises Pérez Fernández
PROGRAMACIÓN SHELL
Elaborado por: Cristian Ulises Pérez Fernández
Interpretes de comandos
UNIX soporta varios intérpretes de comandos o Shells, que ayudan a que tu interacción con el sistema
sea lo más cómoda y amigable posible. La elección de cuál es el más cómodo es algo personal, los cinco
más significativos son:
Variables de entorno
Las variables de entorno permiten la configuración por defecto de muchos programas (donde los programas buscan
datos y tus preferencias) y se encuentran definidas en los archivos de configuración. Para referenciar a las variables
poner el símbolo $ delante.
export ORACLE_BASE=/u01/oracle/
export ORACLE_HOME=/u01/oracle/product/11.2.0/client_1
export ORACLE_PATH =${ORACLE_HOME}/bin
export LD_LIBRARY_PATH=$ORACLE_HOME/lib
export SAPCC_JAVA_HOME=/usr/sap/BAD/CAB00/exe/sapjvm_6
export PATH=$ORACLE_HOME/bin:$PATH
export NLS_LANG=SPANISH_MEXICO.WE8ISO8859P1
export TNS_ADMIN=${ORACLE_HOME}/network/admin
export TNS_LISTENER=${ORACLE_HOME}/network/admin
export JAVA_HOME=/usr/lib/jvm/java
export TELCEL_HOME=/u01/Telcel
Elaborado por: Cristian Ulises Pérez Fernández
Variables de entorno
Al principio de un programa es necesario indicar el interprete de
comandos a utilizar :
• #!/bin/bash
• #!/usr/bin/bash
• #!/usr/bin/sh
• #!/usr/bin/ksh
Variables de entorno
Variables especiales:
El signo < permite que un programa reciba el stdin desde un archivo en vez
de la interacción con el usuario.
Alias de comandos
Alias
Para facilitar la entrada de algunas órdenes o realizar operaciones complejas, los
Shells interactivos permiten el uso de aliases. La orden alias permite ver que
aliases hay definidos y también definir nuevos.
Otros ejemplos:
alias menu='/u01/Telcel/CODE/UtlMonProc/Tools/Shells/UtilMonitProc.sh'
alias vi='vim‘
alias l.='ls -d .*’
alias ll='ls –l’
alias dir='ls -l'
Elaborado por: Cristian Ulises Pérez Fernández
Cron / Crontab
Un archivo crontab contiene las instrucciones para el demonio cron de la siguiente forma: “ejecutar éste comando a
esta hora y en esta fecha”. Cada usuario puede definir su propio crontab.
El editor vi
El editor vi es el editor por excelencia de UNIX. Es bastante potente y complicado de
manejar a pleno rendimiento, debido a la gran cantidad de opciones. Es difícil de utilizar
al principio, pero puede llegar a convertirse en el más cómodo y rápido.
• Modo ex: inserción de comandos del editor de líneas ex. Se emplea para
cambios masivos en el documento.
Elaborado por: Cristian Ulises Pérez Fernández
El editor vi
Elaborado por: Cristian Ulises Pérez Fernández
El editor vi
MODO TEXTO
• i Insertar antes del cursor.
• I Insertar al principio de la línea.
• a Añadir después del cursor.
• A Añadir al final de la línea.
• o Abrir línea debajo de la actual.
• O Abrir línea encima de la actual.
• R Sobreescribir (cambiar) texto.
• r Sobreescribir el carácter sobre el que está el cursor.
• c Reemplaza caracteres.
• cw Reemplaza palabras.
• C o c$ Reemplaza hasta el fin de línea.
• c0 Reemplaza desde el comienzo de línea.
• BS (Back Space) Borrar carácter hacia la izquierda.
• ESC Salir de Modo Texto y pasar a modo
Elaborado por: Cristian Ulises Pérez Fernández
El editor vi
MODO COMANDO (Movimiento del cursor y Control de pantalla)
El editor vi
MODO COMANDO (Movimiento del cursor y Control de pantalla) Cont.
El editor vi
MODO COMANDO (Búsqueda)
El editor vi
MODO COMANDO (Borrar, Copiar y Pegar)
El editor vi
MODO COMANDO (Borrar, Copiar y Pegar) Cont.
El editor vi
MODO EX O ULTIMA LINEA (Generales)
El editor vi
MODO EX O ULTIMA LINEA (Mover)
• :1 Mueve a línea 1.
• :15 Mueve a línea 15.
• :$ Mueve a última línea.
El editor vi
MODO EX O ULTIMA LINEA (Otros)
• :[desde],[hasta] s/[buscar]/[reemplazar]/
Reemplaza todas la primera ocurrencia de la cadena [buscar], en cada línea, por la
cadena [reemplazar] entre las líneas [desde] y [hasta] del archivo.
• :[desde],[hasta] s/[buscar]/[reemplazar]/g
Reemplaza todas las ocurrencias de la cadena [buscar] por la cadena [reemplazar] entre
las líneas [desde] y [hasta] del archivo.
• :[desde],[hasta] d Borra las líneas comprendidas entre las líneas [desde] y [hasta].
Ejemplos:
• :1,$s/Martes/martes/g Cambia Martes por martes en todo el archivo.
• :.,5s/ayuda/&ndo/g Cambia ayuda por ayudando desde línea actual hasta la 5ª línea.
• :.,$ d Elimina todas las líneas desde la línea actual al final del archivo.
Elaborado por: Cristian Ulises Pérez Fernández
PROGRAMACIÓN AWK
Elaborado por: Cristian Ulises Pérez Fernández
awk 'programa'
Resultado
555–1234
555–6699
555–6480
Elaborado por: Cristian Ulises Pérez Fernández
exp ~ /regexp/
identifier_regexp = "[A–Za–z_][A–Za–z_0–9]+"
$0 ~ identifier_regexp
Significa que: wh+y encajará con ‘why’ y ‘whhy’ pero no con ‘wy’.
• ? Este símbolo significa que la expresión regular precedente puede
encajar una vez o ninguna. Por ejemplo: fe?d encajará con ‘fed’ o ‘fd’
Para incluir cualquiera de estos caracteres `\', `]', `–' o `^' en un conjunto de
caracteres, pon un ‘\’ antes del carácter. Por ejemplo: [d\]] encaja con ‘]’ o ‘d’.
Elaborado por: Cristian Ulises Pérez Fernández
Por ejemplo:
El Patrón Vacío
Esta es una lista de variables las cuales se pueden cambiar para controlar
como realiza ciertas cosas awk:
Asignación
Expresiones de Asignación
Una asignación es una expresión que almacena un valor nuevo en una
variable. Por ejemplo, asignar el valor numérico 1 a la variable z.
z = 1
Cualquier valor anterior que tuviese z antes de la asignación se pierde.
Otro ejemplo de asignación para almacenar valores tipo cadena:
cosa = "comida"
predicado = "buena"
mensaje = "esta " cosa " es " predicado
Asignación
Asignación de Variables en la Línea de Comando
Se puedes asignar un valor a cualquier variable awk incluyendo una
asignación de variable entre los argumentos en la línea de comando.
Tal asignación presenta la siguiente forma:
–v variable=text
• length(string)
Da el número de caracteres de la cadena string.
Ejemplo:
function miprint (num){
printf "%6.3g\n", num
}
Elaborado por: Cristian Ulises Pérez Fernández
Ejemplos
• ls -l| awk '$6 == "Sep" { sum += $5 } END { print sum }‘
• ls -1 /home/svsapcc/*.txt|awk -v new_path="/usr/bin" \
'BEGIN{FS = "/"};{print new_path"/"$NF}‘
• awk '{ print $2 > “tel.txt“; print $1 > "nombres.txt" }' Lista.dat