Está en la página 1de 92

Elaborado por: Cristian Ulises Pérez Fernández

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:

• Hardware, Discos duros, terminales, el CPU, memoria, etc.

• Kernel. Controlar el hardware y proporcionar una interfaz de llamada


al sistema a todos los programas.

• Interpretes de comandos (Shells), compiladores, editores y utilerías.

• Programas y aplicaciones de usuario invocados desde una terminal.


Elaborado por: Cristian Ulises Pérez Fernández

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.

        /home/admin             # Administrators 


        /home/finance           # Finance users 
        /home/humanres       # Human Resource users 
Elaborado por: Cristian Ulises Pérez Fernández

Manejo de claves (Passwords)


El password puede ser cualquier secuencia de caracteres.
Deben seguirse las siguientes pautas:

• Debe ser fácil de recordar por uno mismo


• Las mayúsculas y minúsculas no son equivalentes
• Debe tenerse la precaución de usar caracteres
alfanuméricos que se puedan encontrar en todos los
terminales desde los que se pretenda acceder.
• El password debe de ser cambiado con regularidad.
• La orden para cambiar el password en UNIX es passwd.
Elaborado por: Cristian Ulises Pérez Fernández

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.

Cuando se antepone al nombre del archivo un punto (.) se


considera que este archivo es de tipo oculto.

Toda la estructura de directorios parte de un directorio


base llamado raíz (root), que se representa con la diagonal
(/).
Elaborado por: Cristian Ulises Pérez Fernández

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”.

• Path Relativo: es la ruta que describe la localización de un


archivo el cual depende de donde se encuentre en ese
momento. Estos paths inician con punto (.), directorio donde
se encuentra ubicado, o punto punto (..), que significa
directorio superior o padre. Por ejemplo. Si se encuentra
dentro del directorio mail y se desea ir al directorio de log se
representa de la siguiente forma “../../var/log”.
Elaborado por: Cristian Ulises Pérez Fernández

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:

• /: root. La raíz de todos los directorios.


• /etc: Archivos de configuración y administrativos.
• /home, /export/home: Directorios de trabajo de los
usuarios.
• /lib, /usr/lib: Contienen librerías de programas.
• /bin, /usr/bin, /sbin: Contiene comandos y utilidades de
uso continuo, son archivos binarios ejecutables.
• /dev: Contiene los archivos especiales de dispositivos.
Elaborado por: Cristian Ulises Pérez Fernández

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

Diferentes tipos de archivos


El primer carácter de la primera columna indica el tipo de
archivo que se trata lo cual corresponde:

• 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

Diferentes tipos de archivos


El primer carácter de la primera columna indica el tipo de
archivo que se trata lo cual corresponde:
Elaborado por: Cristian Ulises Pérez Fernández

Permisos de los archivos


Los permisos de los archivos son:
• Lectura (r)
• Escritura (w)
• Ejecución (x)

Estos permisos se asignan a tres tipos de usuarios son:


• Dueño del archivo. (u)
• Miembros del grupo. (g)
• Permisos para otros. (o)
Elaborado por: Cristian Ulises Pérez Fernández

Permisos de los archivos


Se distinguen tres grupos de personas sobre las que
especificar permisos:

• user: el usuario propietario del archivo.

• group: el grupo propietario del archivo (excepto el


usuario). Como ya se ha comentado, cada usuario puede
pertenecer a uno o varios grupos y el archivo generado
pertenece a uno de los mismos.

• other: el resto de los usuarios (excepto el usuario y los


usuarios que pertenezcan al grupo)
Elaborado por: Cristian Ulises Pérez Fernández

Permisos de los archivos


Asignación de Permisos
Elaborado por: Cristian Ulises Pérez Fernández

Permisos de los archivos


chmod permite modificar los permisos de un archivo.
chmod permisos files
Existen dos modos de especificar los permisos:
• Modo absoluto o modo numérico
Por ejemplo: chmod 640 *.txt

• Modo simbólico o literal. Se realiza empleando una


cadena (o cadenas separadas por comas) para
especificar los permisos. Esta cadena se compone de:
who operation permission
Elaborado por: Cristian Ulises Pérez Fernández

Permisos de los archivos


• who: es una combinación de:
u : user
g : group
o : others
a : all (equivalente a ugo)
Si se omite este campo se supone a, con la restricción de no ir en
contra de la máscara de creación (umask).

• operation: es una de las siguientes operaciones:


+ : añadir permiso
- : eliminar permiso
= : asignar permiso, el resto de permisos de la misma categoría se
anulan.
Elaborado por: Cristian Ulises Pérez Fernández

Permisos de los archivos


• permission: es una combinación de los caracteres:
r : read
w : write
x : execute

Por ejemplo:

• chmod u+x tarea


Permite la ejecución por parte del usuario22 del archivo tarea.

• chmod u=rx,go=r *.txt


Permite la lectura y ejecución del usuario, y solo la lectura por parte del
grupo y el resto de usuarios.
Elaborado por: Cristian Ulises Pérez Fernández

Permisos de los archivos


• umask
Esta es una orden intrínseca del Shell que permite asignar los
permisos que se desea tengan los archivos y directorios por omisión.
El argumento que acompaña a la orden es un número octal que
aplicará sobre los permisos por omisión para archivos y para
directorios. Sin argumentos muestra el valor de la mascara.
• chgrp
Cambia el grupo propietario de una serie de archivos/directorios
chgrp grupo files
El usuario que efectúa esta orden debe de pertenecer al grupo
mencionado.
• id
Muestra la identificación del usuario, así como el conjunto de grupos
a los que pertenece.
Elaborado por: Cristian Ulises Pérez Fernández

Copiar, borrar, mover y eliminar archivos


• cp (CoPy) copia un archivo/s con otro nombre y/o a otro
directorio.
• -i (interactive), impide que la copia provoque una pérdida del
archivo destino si éste existe.
• -r (recursive), copia un directorio y toda la estructura que cuelga
de él.
• mv (MoVe) mover un archivo/s a otro nombre y/o a otro
directorio. Dispone de opciones análogas al caso anterior.
• rm (ReMove) borrar un archivo/s. En caso de que el
argumento sea un directorio y se haya suministrado la
opción -r, es posible borrar el directorio y todo su
contenido.
Elaborado por: Cristian Ulises Pérez Fernández

Visualizar archivos sin modificar


Este conjunto de órdenes permite visualizar el contenido
de un archivo sin modificar su contenido.
• cat
Muestra por pantalla el contenido de un archivo que se suministra
como argumento.

• 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

Visualizar archivos sin modificar


• head
Muestra las primeras líneas de un archivo.
head -30 file Muestra las 30 primeras líneas de file

• 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

Cambio de hora y fecha de archivos


Para cambiar la fecha y hora de un archivo podemos utilizar el
Comando

touch –t [[CC]YY]MMDDhhmm[.ss] file

Ejemplo:
touch –t 201506151200.00 archivo.txt

Se puede generar un archivo vacío de la siguiente forma:


touch file
Elaborado por: Cristian Ulises Pérez Fernández

Identificación de diferencias entre archivos

• 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

Ligas (duras y simbólicas)


Comando ln Permite realizar un enlace (link) entre dos archivos o
directorios. Un enlace puede ser:
• hard link: se puede realizar sólo entre archivos del mismo sistema
de archivos. El archivo enlazado apunta a la zona de disco donde se
halla el archivo original. Por tanto, si se elimina el archivo original, el
enlace sigue teniendo acceso a dicha información. Es el enlace por
omisión.
• symbolic link: permite enlazar archivos/directorios de diferentes
sistemas de archivos. El archivo enlazado apunta al nombre del
original. Así si se elimina el archivo original el enlace apunta hacia un
nombre sin información asociada. Para realizar este tipo de enlace
debe emplearse la opción -s.
Un enlace permite el uso de un archivo en otro directorio distinto del
original sin necesidad de copiarlo, con el consiguiente ahorro de
espacio.
Elaborado por: Cristian Ulises Pérez Fernández

Comandos para validar espacios


Espacio de disco

• quota –v muestra las cuotas de disco del usuario. Los usuarios


disponen de una cuota de disco duro limitada.

• du (Disk Usage), permite ver el espacio de disco ocupado (en


bloques de disco) por el archivo o directorio suministrado como
argumento. La opción -s impide que cuando se aplique recursividad
en un directorio se muestren los subtotales.

• df (Disk Free), muestra los sistemas de archivos de los que dispone


el sistema, con las cantidades totales / usadas / disponibles de cada
uno.
Elaborado por: Cristian Ulises Pérez Fernández

Comandos para validar procesos


Se entiende por procesos a un programa que se esta
ejecutando en ese momento y ocupa recursos de memoria,
almacenamiento y CPU. Estos son controlados
directamente por el sistema operativo.
• PID y PPID
El PID es el identificador de proceso y registra información
como el dueño, estado, mapa de memoria, etc.
Cada proceso es creado a su vez por un proceso padre el
cual se le conoce como PPID y este puede tener varios
procesos hijos.
Para visualizar los procesos se ocupa el comando “ps”.
Elaborado por: Cristian Ulises Pérez Fernández

Comandos para validar procesos


• ps Muestra los procesos que están en ejecución.
Elaborado por: Cristian Ulises Pérez Fernández

Comandos para validar procesos


• foreground: Son aquellos procesos que requieren de la
interacción y/o atención del usuario mientras se están
ejecutando.

• background: Son aquellos procesos que no requieren de


la interacción con el usuario para su ejecución.

• Matar a un proceso: “kill process number” envía una


señal de término/detener/continuar un proceso.
• kill KILL 1891 o kill -9 1891
• kill STOP 2257
• kill CONT 2257
Elaborado por: Cristian Ulises Pérez Fernández

Comandos para validar procesos


Códigos de retorno:

• Al termino de un proceso este envía al proceso padre un


código de retorno que indica el estado de terminación del
proceso hijo.

• Si el código de retorno es cero (0) significa que termino


sin errores, cualquier otro valor significa que termino con
algún error y habría que revisar la documentación del
programa.
Elaborado por: Cristian Ulises Pérez Fernández

Comandos para validar procesos


• Todos los comandos regresan un valor numérico de
retorno que indica en que estado termino el comando, los
valores de retorno del ultimo comando se ven en la
variable “$?”, los valores son:
Elaborado por: Cristian Ulises Pérez Fernández

Comandos para validar procesos


Otras validaciones sobre la sesión:
• users who w
Ver quién está conectado en la máquina.

• 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

Comandos para validar procesos


• rup
ver la carga de todas las máquinas de la red más “próxima”.

• 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:

1. sh: Bourne SHell, el shell básico, no pensado para uso interactivo.


2. csh: C-SHell, Shell con sintaxis como lenguaje “C”. El archivo de configuración es
.cshrc (en el directorio $HOME).
3. 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 (en el directorio $HOME)
4. bash: Bourne-Again Shell, con lo mejor de sh, ksh y tcsh. El archivo de configuración
es .bash profile si se entra en la cuenta por primera vez (i.e. un login), y después el
archivo .bashrc (en tu directorio $HOME).
5. 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 en caso de login, en caso
contrario el archivo con el nombre de la variable env, si existe. Si queremos cambiar
de shell en un momento dado, solo será necesario que tecleemos el nombre del
mismo y estaremos usando dicho shell. Si queremos usar de forma permanente otro
shell del que tenemos asignado por omisión podemos emplear la orden csh que
permite realizar esta acción.
Elaborado por: Cristian Ulises Pérez Fernández

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.

Ejemplo de variables de entorno:

• HOME: Directorio del usuario


• PATH: Lista de directorios separado con ‘:’ para la ejecución de programas
• EDITOR y/o VISUAL: Editor por defecto
• DISPLAY: Bajo X windows, el nombre de máquina y pantalla que se está trabajando
• TERM: Tipo de terminal.
• SHELL: Shell por defecto
• HOSTNAME: Nombre del servidor

Ejemplos para ambientar algunas aplicaciones:

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

Asignación de valores a variables:


variable="a string“ (Local)
export variable="a string“ (Global)
variable=`head hola.txt|cut –d: -f1` (Resultado de un comando)
export PATH=$ORACLE_HOME/bin:$PATH
Elaborado por: Cristian Ulises Pérez Fernández

Variables de entorno
Variables especiales:

• $0 Nombre del Script Shell


• $1 a $9 Del primer al noveno parámetro
• $# Número de Parámetros
• $* Todos los parámetros pasados representados como una
sola palabra con separador individual
• $@ Todos los parámetros pasados como parabras individuales
• $$ El actual Process ID
• $? El estatus del último comando ejecutado

# $1 = x $2 = "helo fred" $3 = 345

$* = $1 $2 $3 ej. x helo fred 345


$@ = "$1" "$2" "$3" ej. "x" "helo fred" "345"
Elaborado por: Cristian Ulises Pérez Fernández

Entrada y salida (Redireccionamiento)


Cuando un programa espera que se teclee algo, aquello que el usuario teclea
se
conoce como el Standard Input: stdin. Los caracteres que el programa
retorna por pantalla es lo que se conoce como Standard Output: stdout (o
Standard Error: stderr34).

El signo < permite que un programa reciba el stdin desde un archivo en vez
de la interacción con el usuario.

Más a menudo aparece la necesidad de almacenar en un archivo la salida


de un comando. Para ello se emplea el signo >.

• En otras ocasiones uno desea que la salida de un programa sea la entrada


de otro. Esto se logra empleando los denominados PIPES, para ello se usa el
signo |. Este signo permite que la stdout de un programa sea la stdin del
siguiente.
Elaborado por: Cristian Ulises Pérez Fernández

Entrada y salida (Redireccionamiento)


A parte de los símbolos mencionados existen otros que
permiten acciones tales como:

• >> Añadir el stdout al final del fichero indicado (append).


• >& (csh, tcsh y bash sólo) Redireccionar la stdout y stderr.
• >! Igual que > pero con sobreescritura del fichero.
• >>& Igual que >& pero en modo append.
• >>! Igual que >> cuando el fichero no existente.
• 2> (sh, ksh y bash sólo) Redireccionar el stderr.
Elaborado por: Cristian Ulises Pérez Fernández

Procesamiento en primer y segundo plano


En una máquina pueden existir una multitud de procesos que
pueden estar ejecutándose simultáneamente.
Los programas suelen tener uno de estos dos modos de ejecución:

foreground: Son aquellos procesos que requieren de la


interacción y/o atención del usuario mientras se están ejecutando,
o bien en una de sus fases de ejecución (i.e. Introducción de
datos ). Por omisión un comando se ejecuta siempre en
foreground.

background: Son aquellos procesos que no requieren de la


interacción con el usuario para su ejecución. Si bien el usuario
desearía estar informado cuando éste proceso termine. Un ejemplo
de este caso sería la impresión de un archivo.
Elaborado por: Cristian Ulises Pérez Fernández

Procesamiento en primer y segundo plano


comando &: Ejecución de un comando en el background.
Ctrl-Z: Detiene el proceso que estuviera ejecutándose en el foreground y lo
coloca detenido en el background.
Ctrl-C: Termina un proceso que estuviera ejecutándose en el foreground.
Ctrl-\: Matar. Termina de forma definitiva un proceso que estuviera
ejecutándose en el foreground.
ps x: lista todos los procesos que pertenezcan al usuario, incluyendo los que
no están asociados a un terminal.
fg job number: pasa a ejecución en foreground un proceso que se hallase en
background.
bg job number: pasa a ejecución en background un proceso que se hallase
detenido con Ctrl-Z
kill process number: envía una señal a un proceso UNIX.En particular kill
-KILL envía la de término a un programa.
Elaborado por: Cristian Ulises Pérez Fernández

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.

Es común definir el alias rm=‘rm -i’,


de esta forma la orden siempre pide confirmación para borrar un archivo.
Si alguna vez re requiere usar rm sin alias sólo se antepone el símbolo \
(backslash). Es decir: \rm

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.

• -l Muestra el contenido del crontab en la salida estandard


• -r Elimina el archivo crontab actual
• -e Edita el crontab usando en editor especificado en las variables de ambiente VISUAL o
EDITOR. Después de salir de la edición los cambios son reflejados automáticamnete.

Campo Valores permitidos


----- --------------
minute 0-59
hour 0-23
day of month 1-31
month 1-12 (or names)
day of week 0-7 (0 or 7 is Sunday, or use names)

# Ejecutar 5 minutos despues de media noche todos los dias


5 0 * * * $HOME/bin/daily.job >> $HOME/tmp/out 2>&1
# run at 2:15pm on the first of every month
15 14 1 * * $HOME/bin/monthly
# run at 10 pm on weekdays
0 22 * * 1-5 mail -s "It's 10pm" joe%Joe,%%Where are your kids?%
5 4 * * sun echo "correr al alas 4 con 5 minutos del domingo"
Elaborado por: Cristian Ulises Pérez Fernández

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.

La sintaxis del comando vi es, al igual que la de cualquier comando UNIX:


vi [opciones] archivo

• Modo comando: cada tecla tiene un significado, y se puede desplazar el


cursor, copiar, pegar, mover, borrar, etc. Hay que tener mucho cuidado, pues
un comando en minúsculas o en mayúsculas tienen efectos muy diferentes.

• Modo texto: se emplea para añadir o modificar el texto del documento.

• 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)

• flechas Mover en distintas direcciones.


• h ó BS (Back Space) Una posición hacia la izquierda.
• l ó SP (Espacio) Una posición hacia la derecha.
• kó- Una línea hacia arriba.
• jó+ Una línea hacia abajo.
• $ Fin de línea.
• 0 (Cero) Principio de línea.
• 1G Comienzo del archivo.
• G Fin del archivo.
• 18G Línea número 18.
• Ctrl-G Mostrar número de línea actual.
• w Comienzo de la palabra siguiente.
Elaborado por: Cristian Ulises Pérez Fernández

El editor vi
MODO COMANDO (Movimiento del cursor y Control de pantalla) Cont.

• e Fin de la palabra siguiente.


• E Fin de la palabra siguiente antes de espacio.
• b Principio de la palabra anterior.
• ^ Primera palabra de la línea.
• % Hasta el paréntesis que aparea.
• H Parte superior de la pantalla.
• L Parte inferior de la pantalla.
• M Al medio de la pantalla.
• 23| Cursor a la columna 23.
• Ctrl-f Una pantalla adelante.
• Ctrl-b Una pantalla atrás.
• Ctrl-l Refrescar la pantalla.
• Ctrl-d Media pantalla adelante.
• Ctrl-u Media pantalla atrás.
Elaborado por: Cristian Ulises Pérez Fernández

El editor vi
MODO COMANDO (Búsqueda)

• /str Buscar hacia adelante cadena de caracteres 'str'.


• ?str Buscar hacia atrás cadena de caracteres 'str'.
• n Buscar siguiente (si se usó /) o anterior (si se usó ?).
• N Buscar anterior (si se usó /) o siguiente (si se usó ?).
• fc Buscar el siguiente carácter 'c' en la línea.
• Fc Buscar el anterior carácter 'c' en la línea.
• tc Ir al carácter anterior al siguiente 'c'.
• Tc Ir al carácter posterior al precedente 'c'.
• ; Repetir el último comando f, F, t, o T.
• , último comando f, F, t, o T en sentido inverso.
Elaborado por: Cristian Ulises Pérez Fernández

El editor vi
MODO COMANDO (Borrar, Copiar y Pegar)

• x Borrar carácter bajo el cursor.


• dd Borrar línea, queda guardada.
• D Borrar desde cursor a fin de línea.
• dw Borrar desde cursor a fin de palabra.
• d$ Borrar desde cursor a fin de línea.
• d0 Borrar desde cursor a principio de línea.
• d) Borra hasta el final del párrafo.
• Y o yy Copiar línea.
• P Pegar antes del cursor.
• p Pegar después del cursor.
• yw Copiar palabra.
• y$ Copiar de cursor a fin de línea.
Elaborado por: Cristian Ulises Pérez Fernández

El editor vi
MODO COMANDO (Borrar, Copiar y Pegar) Cont.

• "ayy o "aY Copiar línea en buffer llamado 'a'.


• 'a' "ayw Copiar palabra en buffer llamado 'a'.
• "ap Pegar desde buffer 'a', a la derecha del cursor.
• "aP Pegar desde buffer 'a', a la izquierda del cursor.
• "bdd Borrar línea y guardar en buffer 'b'.
• "bdw Borrar palabra y guardar en buffer 'b'.
• J Unir la línea actual y la siguiente (suprimir el retorno de carro)
• ZZ Grabar cambios si los hubo y salir.
• u Deshacer última acción.
• U Deshacer todos los cambios en una línea
• . Repetir el último comando.
Elaborado por: Cristian Ulises Pérez Fernández

El editor vi
MODO EX O ULTIMA LINEA (Generales)

• :q Salir si no hubo cambios.


• :q! Salir sin guardar cambios.
• :w Guardar cambios.
• :w arch1 Guardar cambios en archivo arch1.
• :wq Guardar cambios y salir.
• :r arch2 Insertar un archivo.
• :e arch2 Editar un nuevo archivo.
• :e! arch2 Idem sin salvar anterior.
• :r! comando Insertar salida de comando.
• :shell Salir al shell (vuelve con exit).
• :.= Muestra el número de línea en que se halla en cursor.
Elaborado por: Cristian Ulises Pérez Fernández

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.

MODO EX O ULTIMA LINEA (Opciones, abreviaturas y macros)


• :set Cambio de opciones.
• :set nu Mostrar números de línea.
• :set nonu No mostrar números de línea .
• :set showmode Mostrar modo actual de vi.
• :set noshowmode No mostrar modo actual de vi.
Elaborado por: Cristian Ulises Pérez Fernández

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

Definición de un programa awk


La función básica de awk es buscar líneas en archivos que contienen
ciertos patrones. Cuando en una línea se encuentra un patrón, awk
realiza las acciones especificadas para dicho patrón sobre dicha línea.
Awk sigue realizando el procesamiento de las líneas de entrada de
esta forma hasta que se llega al final del archivo.
Un programa awk consiste en una serie de reglas y definiciones de
funciones. Cada regla especifica un patrón a buscar, y una acción a
realizar cuando se encuentre dicho patrón en el registro de entrada.
Sintácticamente, una regla consiste en un patrón seguido por una
acción. La acción se encierra entre llaves { } para separarlas de los
patrones. Las reglas están separadas por caracteres newline.

Por lo tanto, un programa awk presentaría la siguiente forma:


patrón { acción }
Elaborado por: Cristian Ulises Pérez Fernández

Ejecución de un programa awk


Hay varias formas de ejecutar un programa awk.
Si el programa es corto, es más fácil incluir el programa en el mismo
comando que ejecuta awk, de la siguiente forma:

awk 'program' input_file1 input_file2 ...

donde program consiste en una serie de patrones y acciones, según


se describió anteriormente.

Cuando el programa es largo, probablemente preferirías poner el


programa en un archivo y ejecutarlo con un comando de la siguiente
forma:
awk –f program_file input_file1 input_file2 ...
Elaborado por: Cristian Ulises Pérez Fernández

Ejecución de un programa awk

También se puede usar awk sin archivos de entrada. Si se teclea la


siguiente línea de comando:

awk 'programa'

entonces awk aplica el programa a la entrada estándar, que en la


mayoría de los casos es todo lo que tecleas en el terminal.
Esto continuará hasta que se introduzca la combinación de teclas:
Control–d.
Elaborado por: Cristian Ulises Pérez Fernández

Expresiones Regulares como Patrones


Una expresión regular es una forma de describir una clase de
cadenas de texto. Una expresión regular encerrada entre barras (‘/’) es
un patrón awk que coincide con cada registro de entrada cuyo texto
pertenece a esa clase.

La expresión regular más simple es una secuencia de letras, números,


o ambos. Tales expresiones regulares empata con cualquier cadena
que contenga dicha secuencia de letras y números.
Por ejemplo, el patrón /foo/ empata con cualquier registro que
contenga la cadena ‘foo’.

awk '/foo/ {print $2}' input_file


Elaborado por: Cristian Ulises Pérez Fernández

Expresiones Regulares como Patrones


Ejemplo:

Contenido del archivo prueba1.txt:

core 555–2912 1200/300 C


fooey 555–1234 2400/1200/300 B
foot 555–6699 1200/300 B
macfoo 555–6480 1200/300 A

awk '/foo/ {print $2}' prueba1.txt

Resultado
555–1234
555–6699
555–6480
Elaborado por: Cristian Ulises Pérez Fernández

Expresiones Regulares como Patrones


Las expresiones regulares pueden también ser usadas en expresiones de
comparación. Estas expresiones de comparación pueden ser usadas como
patrones o en sentencias if y while.

exp ~ /regexp/

Esto es cierto si la expresión exp (tomada como una cadena de caracteres)


encaja con regexp. Los siguientes ejemplo encajan o seleccionan todos los
registros de entrada que contengan la letra ‘J’ en cualquier posición dentro del
primer campo:

awk '$1 ~ /foo/ {print $0}' file_input.dat


awk '{if ($2 ~ /foo/) print $1}' file_input.dat
awk '$1 !~ /foo/ {print "ERROR"}' file_input.dat
Elaborado por: Cristian Ulises Pérez Fernández

Expresiones Regulares como Patrones


La parte derecha de un operador `~' o `!~' no necesita ser una
expresión regular constante (por ejemplo, una cadena de caracteres
entre barras). Podría ser cualquier expresión. La expresión es
evaluada, y convertida si es necesario a una cadena; los contenidos
de la cadena serán utilizados como expresión regular. Una expresión
regular que se comporta de esta forma es llamada expresión regular
dinámica. Por ejemplo:

identifier_regexp = "[A–Za–z_][A–Za–z_0–9]+"
$0 ~ identifier_regexp

fija la variable identifier_regexp a una expresión regular que describe


nombres de variables de awk, y chequea si el registro de entrada
encaja con esta expresión regular.
Elaborado por: Cristian Ulises Pérez Fernández

Operadores de Expresiones Regulares


Se pueden combinar expresiones regulares con los siguientes caracteres,
llamados operadores de expresiones regulares, o metacaracteres, para
incrementar el poder y versatilidad de las expresiones regulares.

• ^ Busca el principio de la cadena o el principio de una línea: ^@capítulo


• $ Encaja solo al final de una cadena o el final de una línea: Saludos$
• . Encaja con cualquier carácter, excepto el carácter nueva línea.
• […] Encaja con cualquiera de los caracteres encerrados entre los corchetes
• [0–9] Se pueden especificar rangos de caracteres utilizando un guion
• | Operador alternación y se usa para especificar alternativas.
Por ejemplo: ^P|[0–9]
Elaborado por: Cristian Ulises Pérez Fernández

Operadores de Expresiones Regulares


• (…) Los paréntesis se usan para agrupar expresiones regulares.

• * Este símbolo significa que la expresión regular precedente se repite


cero o tantas veces como sea posible para encontrar una concordancia. Por
ejemplo: ph*

• + Este símbolo significa que la expresión precedente debe encajar al


menos una vez.

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

Expresiones de Comparación como Patrones


Los patrones de comparación chequean relaciones tales como igualdad entre
dos cadenas o números. Estos son escritos con operadores relacionales:

• x<y Verdad si x es menor que y.


• x <= y Verdad si x es menor o igual que y.
• x>y Verdad si x es mayor que y.
• x >= y Verdad si x es mayor o igual que y.
• x == y Verdad si x es igual a y.
• x != y Verdad si x no es igual a y.
• x~y Verdad si x encaja con la expresión regular descrita por y.
• x !~ y Verdad si x no encaja con la expresión regular descrita por y.
Elaborado por: Cristian Ulises Pérez Fernández

Operadores Booleanos como Patrones


Un patrón booleano es una expresión la cual combina otros patrones usando
los operadores booleanos “o” (‘||’), “y” (‘&&’) y “not” (‘!’). Donde los patrones
booleanos encajan con un registro de entrada dependiendo de si encajan o no
los subpatrones.
Por ejemplo, el siguiente comando imprime todos los registros en el archivo de
entrada ‘Lista–BBS’ que contengan tanto ‘2400’ como ‘foo’.
awk '/2400/ && /foo/' Lista–BBS

El siguiente comando imprime todos los registros en el fichero de entrada


‘Lista–BBS’ que contengan ‘2400’ o ‘foo’ o ambos.
awk '/2400/ || /foo/' Lista–BBS

El siguiente comando imprime todos los registros del fichero de entrada


‘Lista–BBS’ que no contengan la cadena ‘foo’.
awk '! /foo/' Lista–BBS
Elaborado por: Cristian Ulises Pérez Fernández

Los Patrones Especiales BEGIN y END


Los Patrones Especiales BEGIN y END
BEGIN y END son patrones especiales. Ellos no son usados para encajar con
registros de entrada. En su lugar, ellos son usados para suministrar al script
awk qué hacer antes de empezar a procesar y después de haber procesado
los registros de la entrada.
Una regla BEGIN se ejecuta una vez, antes de leer el primer registro de
entrada. Y la regla END se ejecuta una vez después de que se hayan leído
todos los registros de entrada.

Por ejemplo:

awk 'BEGIN { print "Analisis de 'foo'" }


/foo/ { ++foobar }
END { print "'foo' aparece " foobar " veces." }' Lista–BBS
Elaborado por: Cristian Ulises Pérez Fernández

El Patrón Vacío

Un patrón vacío se considera que empata con todos los registros de la


entrada.
Por ejemplo, el programa:

awk '{ print $1 }' Lista–BBS

imprime solamente el primer campo de cada registro.


Elaborado por: Cristian Ulises Pérez Fernández

Variables Implícitas (Built-in)


Variables Implícitas (Built-in) que controlan el comportamiento de awk

Esta es una lista de variables las cuales se pueden cambiar para controlar
como realiza ciertas cosas awk:

FS Separador de campos de la entrada


OFS Separador de campos de la salida
NF Número de campos del registro de entrada actual
NR Número de registros de entrada que han sido procesados
RS Este es el separador de registros de awk
ARGC Número de argumentos de la línea de comando
ARGV Arreglo indexado desde 0 hasta ARGC-1 con los argumentos de
entrada
Elaborado por: Cristian Ulises Pérez Fernández

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

Esto almacenaría el valor “esta comida es buena” en la variable


mensaje. Esto además ilustra una concatenación de cadenas.
Al signo ‘=’ se le llama operador de asignación
Elaborado por: Cristian Ulises Pérez Fernández

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

Con ello, puedes darle un valor a una variable al principio de la


ejecución de awk o entre el procesamiento de los ficheros de entrada.
Elaborado por: Cristian Ulises Pérez Fernández

Funciones Implícitas Numéricas

• int(x) Da la parte entera de x, truncado hacia 0.


• sqrt(x) Da la raíz cuadrada positiva de x
• exp(x) Da el exponencial de x, o error si x está fuera de rango.
• log(x) Da el logaritmo natural de x, si x es positivo.
• sin(x) Esta función devuelve el seno de x, con x en radianes.
• cos(x) Devuelve el coseno de x, con x en radianes.
• atan2(y, x) Da el arcotangente de y/x, con el cociente entendido
en radianes.
• rand() Esta función da un número aleatorio. Los valores de rand
son distribuidos uniformemente entre 0 y 1..
• time() Devuelve la hora actual en segundos desde el 1 de Enero
de 1970. (no presente en todas las versiones de awk)
Elaborado por: Cristian Ulises Pérez Fernández

Funciones para manipulación de Cadenas


• index(cad, cad_buscar)
Busca la primera ocurrencia de cad_buscar en la cadena cad, y
devuelve la posición donde se produce esa ocurrencia.

• length(string)
Da el número de caracteres de la cadena string.

• sub(regexp, replacement, target)


Altera el valor de target. Busca este valor, el cuál debería ser una
cadena, en la subcadena más a la izquierda que concuerde con la
expresión regular, regexp. Entonces la cadena completa se cambia
reemplazando el texto encajado por replacement. La cadena
modificada se convierte en el nuevo valor de target.
Elaborado por: Cristian Ulises Pérez Fernández

Funciones para manipulación de Cadenas


• gsub(regexp, replacement, target)
Esta es similar a la función sub, excepto que gsub reemplaza todas las
concordancias que encuentre con la expresión regular, regexp.
• substr(string, start, length)
Devuelve una subcadena de longitud length de string, empezando el
carácter número start. El primer carácter de una cadena es el carácter
número 1
• tolower(string)
Devuelve una copia de string, con cada carácter en mayúsculas de la
cadena reemplazado por su correspondiente carácter en minúscula.
• toupper(string)
Devuelve una copia de string, con cada carácter en minúscula de la
cadena reemplazado por su correspondiente carácter en mayúscula.
Elaborado por: Cristian Ulises Pérez Fernández

Funciones definidas por el Usuario


Las funciones definidas por el usuario pueden ser llamadas del mismo
modo que las funciones implícitas. pero el programador es el
encargado de definirlas y decirle a awk qué tiene que hacer.

La definición de una función sería algo como esto:


function nombre_función (lista_de_parámetros) {
cuerpo-de-la-función
}

Ejemplo:
function miprint (num){
printf "%6.3g\n", num
}
Elaborado por: Cristian Ulises Pérez Fernández

Comentarios en Programas awk


Un comentario es un texto que es incluido en el programa para que
dicho programa sea más entendible por los lectores del mismo.

En el lenguaje awk, un comentario comienza con el signo ‘#’,


y dicho comentario continúa hasta el final de la línea. El Lenguaje awk
ignora el resto de una línea desde el momento que encuentra un
carácter ‘#’.
Por ejemplo:

# Este es un cometario en el programa. De esta forma


# es como continuas el comentario en una línea adicional.
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 'BEGIN { RS = "/" } ; {print $0}‘

• ls -1 /home/svsapcc/*.txt|awk 'BEGIN { FS = "/" } ; {print $NF}‘

• 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

También podría gustarte