Você está na página 1de 128

Fundamentos del S.O.

Unix

HP-UX ver: 10.X

Subdirección de Infraestructura 1
Historia del S.O. Unix
 A fines de los 60’s AT&T desarrolla MULTICS
 En 1969 el systema UNIX nace, desarrollado por Ken
Thompson y simulador de objetos en e espacio (Space Travel)
en una minicomputadora PDP-7.
 A inicios de los 70’s, se pasa el código a una PDP-11/20 y
sale la primera edición patentada del sistema Unix para
clientes de los lab. Bell. El kernel y shell son escritos en ‘C’.
 A mediados de los 70’s Thompson empieza a desarrollar en la
universidad de California en Berkeley (UCB) el sistema.

Subdirección de Infraestructura 2
Historia (cont.)
 Inicios de los 80’s, existe interés comercial en
UNIX y por parte de DARPA (Department of
Defense Advanced Research Projects Agency) en
BSD (Berkeley Software Development), Hewlett-
Packard introduce HP-UX.
 Finales de los 80’s, existe el desarrollo de los
estándares y se funda Open Software Foundation
(OSF).
Subdirección de Infraestructura 3
¿Qué es un Sistema
Discos
Operativo?
Memoria
Users CPU
Sistema Red
Operativo
Programas Impresoras

Consumidores Recursos

Un Sistema Operativo es un programa especial (software) que


controla la computadora (hardware). En un sistema de tiempo
compartido, existen varios programas tratando de accesar el
CPU al mismo tiempo, el s.o. controla como y cuando un
programa tiene turno en el CPU.

Subdirección de Infraestructura 4
¿Qué es un sistema Unix?
El sistema unix provee un
Tools & Applications sistema operativo
Shell de tiempo compartido, el
cual fue diseñado
Kernel
para correr múltiples
procesos concurrente-
ls
mente y soportar varios
sh Hardware csh date
usuarios, facilitando
la compartición de datos
entre ellos.
mail
ksh sort

vi
Subdirección de Infraestructura 5
Sistema Unix
 Sistema de Archivos Jerárquico
 Multitarea
 Multiusuario

Subdirección de Infraestructura 6
Sistemas Unix y Estándares
SVID BSD otros
ISO
portabilidad

IEEE/POSIX X/OPEN XPG interoperabilidad


ANSI

NBS/FIPS escalabilidad
HP-UX

BSD 4.2 XPG

HP-UX POSIX
BSD 4.3

SVID FIPS
Subdirección de Infraestructura 7
Orientación General

Subdirección de Infraestructura 8
Típica Sesión
 Se necesita un login para obtener un id y accesos
 Ejecutar comandos para realizar tareas
 Logoff para terminar la conexión.
login y logout
login: user1 [Return] log in
Passwd:
Welcome to HP-UX logging messages
Erase is Backspace
Kill is Ctrl-U
$ date do stuff
Mon Jul 1 11:03:42 EDT 1991
$ other commands
:
$ exit o [ctrl-d][Return] logout
Subdirección de Infraestructura 9
Borrado durante el login
Mientras se está dando el login:
# “borra” el caracter previo
@ “borra” la línea completa

Ej:
login: usir##er3 entra al sistema como user3
login: user4 @
user3 entra al sistema como user3

Después del login el [BackSpace] trabaja normalmente

Subdirección de Infraestructura 10
Shell - Intérprete de Comandos
Intérprete de ejecución de
lenguaje de comandos
programación puesta del
ambiente

Sustitución de
comandos shell asignación
de variables
pipelines
sustitución
redirecciona- de variables
miento de E/S generación
de filenames

Subdirección de Infraestructura 11
Formato de la Línea de
Sintaxis:
Comandos
$ command [ -opciones ] [ argumentos ] [RETURN]
Ej:
$ date[RETURN] sin argumentos
Mon Jul 01 11:07:43 EDT 1991

$ banner hi [RETURN] 1 argumento

* * *
* * *
***** *
* * *
* * *
$ bannerhi [RETURN] sintáxis incorrecto
ksh: bannerhi: not found

$ ls -r [RETURN] 1 opción
Subdirección de Infraestructura 12
Personalizando las Características de
la Terminal con stty
$ stty -a despliega todas las caract.
de la terminal
$ stty erase “^H” [Backspace] = erase
$ stty kill “^U” [Ctrl-u] = kill
$ stty intr “^C” [Ctrl-c] = interrupt

Subdirección de Infraestructura 13
Manuales
AUDIENCIA No. de Sección DESCRIPCION
Usuarios 1 Comandos de usuarios
Admon. del Sist. 1m Comandos de mantenimiento del sist.(formalmente secc. 8)
Programadores 2 Llamadas al sistema
Programadores 3 Funciones y librerías
Admon del Sist 4 Formatos de archivos
U, SA, PROG 5 Miscelaneos
Usuarios 6 Juegos
Admon.del Sist 7 Device Files
U, SA, PROG 9 Glosario

Subdirección de Infraestructura 14
Manual en Línea
Sintaxis:
man [ -k| x ] keyword | command
x es el núm. de sección
Ejemplo:
$ man date despliega las páginas del manual de date
$ man -k copy despliega todas las entradas con clave copy
$ man 1m mount despliega las páginas del manual de la
sección 1m de mount

Utilice [Space] para ver la página siguiente

Utilice [Return] para ver la línea siguiente

Utilice [q] para salir del man

Subdirección de Infraestructura 15
Comando date
Sintaxis:
date reporta la fecha y tiempo

Ejemplo:
$ date
Mon Jul 1 10:00 EDT 1991

Opciones:
+%a día abreviado
+%A día completo
+%b mes
+%y año
+%m mes en fecha
Subdirección de Infraestructura 16
Comando passwd
Sintaxis:
passwd asigna un login passwd

Ejemplo:
$ passwd
Changing password for user3
Old password:
New passwd:
Re-enter new password:
$

Restricciones del Password:


Mínimo 6 caracteres
Por lo menos 2 deben ser alfacaracteres
Por lo menos 1 no alfa caracter

Subdirección de Infraestructura 17
Comando echo

Sintaxis:
echo [arg ...] escribe argumentos a la terminal

Ejemplo:
$ echo how are you
how are you
$ echo 123 abc
123 abc

Subdirección de Infraestructura 18
Comando banner
Sintaxis:
banner arg [arg . . . ] despliega los argumentos
en letras grandes

Ejemplo:
$ banner hello

# # ####### # # #######
# # # # # # #
###### ####### # # # #
# # # # # # #
# # # # # # #
# # ####### ###### ###### #######
Subdirección de Infraestructura 19
Comando who
Sintaxis:
who [am i] reporta la información acerca de los usuarios que están
actualmente firmados dentro del sistema
whoami reporta el username con el que entré al sistema

Ejemplos:
$ who
root tty1p5 Jul 01 08:01
user1 tty1p4 Jul 01 09:59
user2 tty0p3 Jul 01 10:01
$ who am i
user2 tty0p3 Jul 01 10:01
$ whoami
user2
Subdirección de Infraestructura 20
Comando mail
Sintaxis:
mail lee los mail’s recibidos
mail [username ...] manda mail a username
mailx
Ejemplo:
$ mail
From user4 Mon Jul 01 8:12 EDT 1991 mensaje de mail
Are you available for lunch today?
? d prompt del mail y comando
para borrar el mail
$ mail user4 manda mensaje a user4
Hi there! contenido del mail
I’ll meet you around 12:00 for lunch,
see you then!!
[Ctrl-d] concluye el mail
$
Subdirección de Infraestructura 21
Comando write
Sintaxis:
write username [tty]
Ejemplo:
$ write user4
Hi user4, How are you?
Are you going to the meeting on Thursday?
Message from user4 (tty03)
Hi user3. I will be able to attend. See you then.
<EOT>

See you later user4


[Ctrl-d]
$
Subdirección de Infraestructura 22
Comando mesg
Sintaxis:
mesg [ y | n ] permite/niega escribir a tú terminal

Ejemplo:
$ mesg
is y
$ mesg n
$ mesg
is n
$ mesg y
$ mesg
is y

Subdirección de Infraestructura 23
Comando news
Sintaxis:
news [-a] [-n] [headline] despliega las
noticias del sistema

Ejemplo:
$ news despliega las noticias nuevas
$ news -a despliega todas las noticias
$ news -n despliega los nuevos headlines

Todos los usuarios que accesen las noticias se creará un


archivo .news_time,
el cual mantiene la fecha del último acceso.

Subdirección de Infraestructura 24
Comando lp
Sintaxis:
lp [-dprinter] [file ...] manda un trabajo (job) a la impresora
cancel jobnumber borra un trabajo de impresión de la
cola (queue)
lpstat [-t] despliega los archivos en la cola de
impresión y el estatus de la impr.

Ejemplo:
$ lp myfile
request id is laser-3 (1 file)
$ lp -dlp myfile herfile
request id is lp-4 (2 files)
$ cancel laser-3
Subdirección de Infraestructura 25
The File System

Subdirección de Infraestructura 26
¿Qué es un File System?

reporte
gabinete ~
~ file system
cajón ~
~ directorio
folder ~
~ directorio
reporte ~~ archivos

Subdirección de Infraestructura 27
File System Jerárquico
/

sbin usr etc dev stand tmp opt home

passwd ->/usr/sbin system

var
user1 user2 user3
news share contrib local bin

man bin mv ls vi = directorio


= archivo

Subdirección de Infraestructura 28
Pathnames
/

tmp bin usr home

f1 cp ls mv bin user1 user2 user3

f1
Absoluto: relativo a /home/user3 vi man f1 prog

 /home/user3/f1  f1
 /home/user3/prog  prog f1
 /home/user3/prog/f1  prog/f1
relativo a /home/user1
 /home/user1/f1  f1
Subdirección de Infraestructura 29
pwd - Present Working Directory
ls - Lista el Contenido de Direct.
Sintaxis: Sintaxis: ls [-adlFR] [pathname(s)]
Ejemplo:
pwd
$ ls
f1 f2 memo
Ejemplo: $ ls -F
$ pwd f1 f2* memo/
/users/user3 $ ls -aF
.profile f1 f2* memo/
$ ls memo
f1 f2
$ ls -F /users
user1/ user2/ user3/
$ ls -F ../user2
f1
Subdirección de Infraestructura 30
cd - Change Directory
mkdir & rmdir - Crear y Remover Directorios
Sintaxis:
cd [dir_pathnames] mkdir [-p] [-m mode] dir ...
rmdir [-f | -i] [-p] dir ...
Ejemplo:
$ pwd
$ /users/user3
$ cd prog; pwd
/users/user3/prog
$ cd ../..; pwd
/users
$ cd /tmp; pwd
/tmp
$ cd; pwd
/users/user3
Subdirección de Infraestructura 31
Laboratorio
 ¿Cuál es el nombre de tu directorio HOME?
 Desde tu directorio cambiate al directorio /tmp
 ¿Cuál es la ruta absoluta o relativa que utilizaste para
cambiarte de directorio?
 Crea un directorio en tu HOME llamado junk.
 Crea los siguientes directorios:
junk/dirA/dir1
junk/dirA
junk/dirA/dir2
junk/dirA/dir1/dirc

Subdirección de Infraestructura 32
Manipulación de Archivos y
Directorios

Subdirección de Infraestructura 33
¿Qué es un archivo?
 Todo en unix es manejado como un archivo.
 Un contenedor de datos o una liga a un dispositivo.
 Cada archivo tiene un nombre y debe contener datos que
residen en el disco.
 Archivos regulares:
Texto, datos, dibujos
programas
 Directorios
 Archivos especiales (Device Files)
 Ligas simbólicas

Subdirección de Infraestructura 34
¿Que puedo hacer con archivos?
 Ver sus características
 Ver su contenido
 Hacer una copia del archivo
 Cambiar el nombre del archivo o directorio
 Cambiar el archivo a otro directorio
 Crear otro nombre para el archivo
 Removerlo
 Crear un archivo nuevo
 Modificarlo

Subdirección de Infraestructura 35
Características de un Archivo
 Las características pueden ser desplegadas con el
sig. comando: ls -l
Ejemplo:
$ ls -l
-rw-r--r-- 1 user3 class 37 Jul 24 11:06 f1
-rwxr-xr-x 1 user3 class 52 Jul 24 11:06 f2
drwxr-xr-x 2 user3 class 1024 Jul 24 12:03 memo

{
{

tipo de ligas grupo timestamp


archivo
permisos propietario tamaño nombre

Subdirección de Infraestructura 36
cat - despliega el contenido de un archivo
Sintaxis: cat [file . . .] Concatena y despliega el contenido
de archivos.
Ejemplo:
$ cat remind
your mother’s birthday es November 29.
$ cat note remind
TO: Mike Smith
The meeting is scheduled for July 29.
your mother’s birthday es November 29.
$ cat
abc
1234
[Ctrl-d]
abc
1234
$
Subdirección de Infraestructura 37
more - despliega el contenido de un archivo
pg - despliega por páginas el archivo
Sintaxis:
more [ filename ] . . . Despliega archivos, una pantalla a la
vez
pg [filename]
Ejemplo:
$ more new.jersey
.
.
.
--more (20%) --
Qoq salir de quit
[RETURN] despliega una línea más
[SPACE] despliega una pantalla más

Subdirección de Infraestructura 38
tail - despliega el final del archivo
head - despliega el inicio del archivo
Sintaxis:
tail [-n] [filename] . . . despliega el final de un archivo
head [-n] [filename] . . . despliega el inicio de un archivo

Ejemplo:
$ tail -1 note
soon as it is available.

n es el número de líneas, por default n = 10

Subdirección de Infraestructura 39
cp - copia archivos
Sintaxis:
cp [-i] file new_file copia un archivo
cp [-i] file [file . . .] dest_dir copia archivos a un
direct.
cp -r [-i] dir [dir . . .] dest_dir copia directorios
Ejemplo:
$ ls -r
f1 f2* memo/ note remind
$ cat f1
This is a sample fie to be copied.
$ cp f1 f1.copy
$ ls -F
f1 f1.copy f2* memo/ note remind
$ cat f1.copy
This is a sample file to be copied.
$ cp note remind memo
$ ls -F memo
f1 note remind Subdirección de Infraestructura 40
mv - mover o remover archivos
Sintaxis:
mv [-i] file new_file renombra archivos
mv [-i] file [file . . .] dest_dir mueve archivos a un directorio
mv [-i] dir [dir . . .] dest_dir renombra o mueve directorios
Ejemplo:
$ ls -F $ mv note remind memo
f1 f2* memo/ note remind $ ls -F
$ mv f1 file1 file1
$ ls -F $ ls -F memo
file1 f2* memo/ note remind file2* note remind
$ mv f2 memo/file2 $ mv memo letters
$ ls -F $ ls -f
file1 memo/ note remind file1 letters/
$ ls -F memo
file2*

Subdirección de Infraestructura 41
ln - Liga Archivos
Sintaxis:
ln [-s] file new_file hace una liga a un archivo
ln file [file . . .] dest_dir liga archivos a un directorio
ln -s dir dest_dir liga un directorio a otro directorio
Ejemplo:
$ ls -l f1
-rw-rw-r-- 1 user3 class 37 Jul 24 11:06 f1 /
$ ln f1 /users/user2/f1.link
$ ls -l f1 home
-rw-rw-r-- 2 user3 class 37 Jul 24 11:06 f1
$ ls -l /users/user2 user2 user3
-rw-rw-r-- 2 user3 class 37 Jul 24 11:06 f1.link
$ ls -i f1 /users/user2/f1.link
1789 f1 1789 /users/user2/f1.link f1.link f1

This is a sample
Subdirección de Infraestructura file to be copied42
rm - borra archivos
Sintaxis:
rm [-if] filename [filename . . .] borra archivos
rm -r[if] dirname [filename . . .] borra directorios
Ejemplo:
$ ls -F $ rm -r fruit
f1 f2 fruit/ memo/ $ ls -F
$ rm f1 memo/
$ ls -F $
f1 fruit/ memo/
$ rm -i f2
f2? y
$ rm fruit
rm: fruit directory
Subdirección de Infraestructura 43
Laboratorio - Manipulación de archivos
 Utiliza los comandos cat y more para
desplegar el contenido del archivo fun.
 Copia el archivo names a names.cp.
 Modifica el archivo names, ¿existe algún
cambio en names.cp
 Remueve el archivo names, ¿pierdes los datos?
 Copia el archivo names.cp a names.

Subdirección de Infraestructura 44
Permisos y Acceso a Archivos

El acceso a archivos es dependiente


en el “id” del usuario y los
permisos asociados al archivo

Subdirección de Infraestructura 45
id - identifiación del usuario
Sintaxis:
id despliega la indentificación de usuario y
grupo por sesión.
Ejemplo:
$ id
uid=303 (user3), gid=300 (class)

Estos datos se obtienen de dos archivos:


/etc/passwd
/etc/group

Subdirección de Infraestructura 46
¿Quién tiene acceso a un Archivo?
 El sistema Unix incorpora una estructura three-tier para definir
quien tiene acceso a cada archivo y directorio
user el propietario del archivo
group el grupo que puede tener acceso al archivo
other todos los demás
El comando ls -l despliega el propietario y grupo que tienen
acceso al archivo.
$ ls -l o (ll)
-rw-r--r-- 1 user3 class 37 Jul 24 11:06 f1
drwxr-xr-x 2 user3 class 1024 Jul 24 12:03 memo

owner
group
Subdirección de Infraestructura 47
Tipos de Acceso
Existen tres tipos de acceso que están disponibles en cada
archivo y directorio:

lectura escritura ejecución

el contenido puede el contenido puede el archivo puede


archivos se examinado (more, ser modificado (vi, usarse como
lp, cat, cp - origen) cp - target) comando

el contenido puede puede ser el


el contenido puede
directorios ser examinado (ls ser modificado (rm, directorio de trabajo
cp, mv, ...) actual. (cd)

Subdirección de Infraestructura 48
Permisos
Los permisos son desplegados con ls -l

$ ls -l
- rw- r-- r-- 1 user3 class 37 Jul 24 11:06 f1
- rwx r-x r-x 1 user3 class 37 Jul 24 11:08 f2
drwx r-x r-x 2 user3 class 1024 Jul 24 12:03 memo

user (owner) access


group access file owner file group
other access

Subdirección de Infraestructura 49
chmod - Cambia Permisos de un Archivo
Sintaxis:
chmod mode file [file ...] cambia permisos a archivos
Clasificación Permisos Modificaciones

u (usuario o prop.) + (add) r (read)


g (grupo del archivo) - (subtract) w (write)
o (todo los demás) = (set equal to) x (execute)

Ejemplo: mode user group other


original: rw-r--r-- rw- r-- r--
final: rwxr-xr-x u+x g+x o+x

$ chmod u+x,g+x,o+x file


$ chmod +x file
Subdirección de Infraestructura 50
chmod - (Cont.)
Sintaxis:
chmod mode file [file . . .]

Ejemplo:
read =4
write =2
execute =1
mode user group other
rwxr-xr-x rwx r-x r-x

4+2+1 4+0+1 4+0+1

7 5 5

$ chmod 755 file


Subdirección de Infraestructura 51
umask - Máscara de Permisos
Sintxis:
umask [mode] user file-creation mode mask

Ejemplo:
permisos por default rw- rw- rw-

restando éstos permisos:


0 0+2+0 4+2+0
0 2 6

$ umask 026

Subdirección de Infraestructura 52
chown - CHange OWNer
Sintaxis:
chown newowner filename [filename . . .] cambia el pro-
pietario de un
archivo
Ejemplo:
$ id
uid=303 (user3), gid=300 (class)
$ cp f1 /users/user2/f1
$ ls -l /users/user2/f1
-rw-r----- 1 user3 class 3967 Jan 24 13:13 f1
$ chown user2 /users/user2/f1
$ ls -l /users/user2/f1
-rw-r----- 1 user2 class 3967 Jan 24 13:13 f1
$

Subdirección de Infraestructura 53
chgrp - CHange GRouP
Sintaxis:
chgrp newgroup filename [filename] cambia el acceso
de
grupo a un archivo
Ejemplo:
$ id
uid=303 (user3), gid=300 (class)
$ ls -l f3
-rw-r----- 1 user3 class 3967 Jan 24 13:13 f3
$ chgrp class2 f3
$ ls -l f3
-rw-r----- 1 user3 class2 3967 Jan 24 13:13 f3
$ chown user2 f3
$ ls -l f3
-rw-r----- 1 user2 class2 3967 Jan 24 13:13 f3
$
Subdirección de Infraestructura 54
su - Switch User id
Sintaxis:
su [- ] user_name cambia la designación de user-id
Ejemplo:
$ ls -l /usr/local/bin/class_setup
-rwxr-x--- 1 class_admin teacher 3967 Jan 24 13:13 f3
$ id
uid=303 (user3), gid=300 (class)
$ su class_admin
Password:
$ id
uid=400 (class_admin), gid=300 (class)
$ /usr/local/bin/class_setup
$ [Ctrl-d] [RETURN] salir de la sesión su
$

Subdirección de Infraestructura 55
newgrp - NEW GRouP
Sintaxis:
newgrp [group_name] cambia el group_id
Ejemplo:
$ ls -l /usr/local/bin/class_setup
-rwxr-x--- 1 class_admin teacher 3967 Jan 24 13:13 f3
$ id
uid=303 (user3), gid=300 (class)
$ newgrp teacher
$ id
uid=303 (user3), gid=33 (teacher)
$ /usr/local/bin/class_setup
$ newgrp regresa al login group inicial
$ newgrp other no autoriza el cambio a otro
sorry grupo
$

Subdirección de Infraestructura 56
Editor vi
Es un editor de texto orientado a
pantalla que es manipulado por
comandos

Subdirección de Infraestructura 57
Iniciando una Sesión vi
Sintaxis:
vi [filename] inicia una sesión de vi de un archivo

Ejemplo:
S vi new.jersey

new.jersey
desplegado
memoria
new.jersey
vi new.jersey
disco
todas las modificaciones son hechas a la copia del archivo traído en la
memoria.
Subdirección de Infraestructura 58
Modos de vi
 Modo Comando - las teclas son interpreta-das
como comandos.
Modo inicial cuando una sesión vi empieza
[ESC] lo regresa al modo comando
los comandos vi: no son desplegados en pantalla.
comandos ex: son iniciados con (:) y si se
desplegan en pantalla.
 Modo input - lo tecleado es agregado al archivo.

Subdirección de Infraestructura 59
Una sesión vi
This is the contents of file tst
contenido del It will be used for the examples in the text cursor
archivo vi module
líneas blancas
al final del
~
archivo
~ espacio para líneas
~ que no existen en el archivo

~
:ex commands or mode messages
editor messages
Uno se encuentra en modo comando cuando inicia una sesión vi.
Subdirección de Infraestructura 60
Terminando una Sesión vi
This is file tst.
It has now
been changed
:wq [RETURN]
ZZ :q! [RETURN]
memoria

tst

disco
basura

Subdirección de Infraestructura 61
Comandos de Control de Cursor
Línea 1
Linea 2
<cr> Línea 3
<cr> Línea 4
8 G
Línea 5
G Línea 6
Línea 7
Línea 8
2 G Línea 9
Línea 10
última línea del archivo
~
Ctrl-g reporta la línea actual ~
:2 [RETURN]
Ctrl-l hace un refresh de la pantalla va a la línea 2
Subdirección de Infraestructura 62
Input Mode: i, a, O, o
quik brown fox

i c ESC input c

quik brown fox

a c ESC append c
quik brown fox

input The I The ESC a es ESC append es


Open line O línea blanca arriba
The quick brown foxes
open line o línea blanca abajo

Subdirección de Infraestructura 63
borrando texto: x, dw, dd, dG
Theere are tooooo many worrds
x 3 x x

There are too many words


d d many characters
d w many words
2 d d
many lines
d G many pages
There are many words
many chapters
2 d w many volumes
last line of the file
u hace un undo del último cambio

U hace un restore de la línea actual al texto original

Subdirección de Infraestructura 64
Moviendo Texto: p, P
these are too words
d w borra la palabra

these are words

p minúscula hace un paste después


these are words too
here is one mroe
x

here is one moe


p
here is one more

Subdirección de Infraestructura 65
Copiando Texto: yw, yy
these are words too
y w yank word

these are words too


p paste after
these words are words too

línea 1 línea 1 línea 1


3 y y
línea 2 línea 2 línea 2
3 yank línea 3 línea 3 línea 3
lines línea 4 línea 4 línea 4
p paste after línea 2
línea 3
línea 4

Subdirección de Infraestructura 66
Cambiando texto: r, R, cw,.
the qwick brawn fox
r u r o replace - reemplaza un caracter
the quick brown fox
c w silver-gray ESC change word - cambia una palabra
the quick silver-gray fox
c w slow ESC change word

the slow silver-gray fox

R brand new text ESC Replace (overstrike)


the brand new textay fox
. permite repetir el último cambio hecho
Subdirección de Infraestructura 67
Búsqueda de Texto: /, n, N
There is one here
and one more here
and yet one more
but not this ONE
nor this One
/one<cr>
n next
N previuos

Subdirección de Infraestructura 68
Búsqueda de Patrones de Texto
/[oO]ld_text busca por old_text y Old_text
/^text busca por texto al inicio de la línea
/text$ busca por texto al final de la línea
/. busca por cualquier caracter sólo
/character* busca por 0(cero) ó más ocurrencias de caracter

Ejemplos:
/*[abc].* busca la siguiente ocurrencia de linea que inicie con “a”, “b” o “c”.

/[Bb]ob busca la siguiente ocurrencia de string “bob” o “Bob”

/finally.$ busca la siguiente ocurrencia al final de la line con el string


“finally.”

Subdirección de Infraestructura 69
Búsqueda Global y Reemplazo -
Comandos ex
:m,ns/old_pattern/new_text/
:1,$s/one/two/
desde la línea 1 hasta el final ($) del archivo, sustituye sólo la primer
ocurrencia encontrada en cada línea del patrón “one” por el texto “two”.

:m,ns/old_pattern/new_text/g
:.,10s/[oO][nN][eE]/two/g
desde la línea actual hasta la línea 10, sustituye cada ocurrencia con el
patrón “one”, encontrándose en mayúsculas y/o minúsculas, por el string
“two”, globalmente para cada línea.

m y n definen las líneas donde el comando va a ser ejecutado


s designa el comando de sustitución
g realiza el comando de forma global

Subdirección de Infraestructura 70
Más comandos ex
Sintaxis:
:w escribe el buffer actual a disco
:m,nw file escribe las líneas m a la n del buffer a un archivo
:w file escribe el buffer a un disco
:e file trae el archivo dentro del buffer descartando el anterior
:e! descarta todos los cambios del buffer cargando el archivo des-
de disco
:r file lee el contenido de un archivo, poniéndolo después de la posi-
ción del cursor
:! cmd ejecuta el comando shell, cmd
:set all muestra todas las opciones de la sesión de edición
:set nu prende la númeración de líneas
:set showmode prende el modo mensajes
:map despliega el mapeo de teclas usado en modo comando
:map! despliega el mapeo de teclas usado en modo input

Subdirección de Infraestructura 71
El Shell

Subdirección de Infraestructura 72
interpretive
¿Qué es un shell?
usuarios command execution
programming
language shell

kernel environment settings


pipelines

Hardware

I/O redirection

sistema viariable assignment


operativo

filename generation variable substitution


command substitution
Subdirección de Infraestructura 73
Variables del Shell
 Una variable del shell es un nombre que
representa un valor.
 El valor asociado con el nombre puede ser
modificado.
 Algunas variables son definidas durante el
proceso de login.

Subdirección de Infraestructura 74
Almacenamiento de Variables

variables locales color=blue


count=3
dir_name=/users/user3/tree

código del prog. /bin/ksh $ set


PS1=$
PATH=.:/bin:/usr/bin
HOME=/users/user3
TERM=70094a $ env
variables de ambiente SHELL=/bin/ksh

Subdirección de Infraestructura 75
Setting Shell Variables
Sintaxis:
name=value

Ejemplo:
$ color=lavander asigna una variable local
$ count=3 asigna una variable local
$ dir_name=tree/car.models/ford asigna una variable local
$ PS1=hi_there$ actualiza el valor de un var.
de ambiente
hi_there$ set despliega todas las varia-
bles y sus valores.

Subdirección de Infraestructura 76
Substitución de Variables
Sintaxis:
$name direcciona al shell para realizar la sustitución de
variables
Ejemplo:
$ echo $color echo lavender
lavender

$ echo the value of color is $color


the value of color is lavender

$ echo $HOME echo /users/user3


/users/user3

$ file_name=$HOME/new.jersey
$ more $file_name more /users/user3/new.jersey
<contenido de /users/user3/new.jersey>
Subdirección de Infraestructura 77
Ejecución de Procesos
$ date
variables locales
el padre duerme $
/bin/ksh
variables locales variables de
/bin/ksh ambiente
variables de
variables locales
ambiente
/bin/date
STEP 1: fork: el programa y variables de
el espacio de los ambiente
datos son duplicados
STEP 2: exec: el programa y el espacio de los datos
variables locales son reemplazados por el programa y datos
pedidos por el mismo (/bin/date) y el programa
/bin/ksh es ejecutado. Cuando termina el programa, el
variables de control regresa al padre (/bin/ksh) y es desple-
ambiente gado el prompt.
Subdirección de Infraestructura 78
ps - Process Status
Sintaxis:
ps [-efl]
Ejemplo:
$ ps
PID TTY TIME COMMAND
1324 console 0:02 ksh
1386 console 0:00 ps
$ ps -ef
UID PID PPID C STIME TTY TIME COMMAND
root 1238 1 0 18:31:58 tty00 0:00 /etc/getty tty00
9600
root 2 0 0 Jan 27 ? 0:15 pagedaemon
user3 1324 1 0 18:03:21 console 0:12 ksh
user3 1390 1324 0 18:30:23 console 0:00 ps
.
:
Subdirección de Infraestructura 79
Transfiriendo Variables Locales
al Ambiente
Sintaxis:
export name transfiere la variable name al
ambiente
Hace que la variable name sea disponible para los procesos hijos

Ejemplos:
$ export color
$ export count
$ export
color=lavender
count=3
$ env
Subdirección de Infraestructura 80
Substitución de Comandos
Sintaxis:
‘cmd’ direcciona al shell para realizar la sustitución
de comandos
Ejemplo:
$ echo date
date
$ echo ‘date’
Thu Jul 11 16:40:32 EDT 1991
$ banner ‘date’ ejecuta:
banner Thu Jul 11 16:40:32 EDT 1991

Subdirección de Infraestructura 81
¿Qué es un Programa Shell?
Un archivo que contiene comandos shell --> $ vi miprog
#este es el programa myprog
date
ls -F
Se incluye el modo de ejecución en el progr.--> $ chmod +x myprog
Escribe el nombre del programa para ejecutarlo $ myprog
Thu Jul 11 11:10 EDT 1991
f1 f2 memo/ myprog*
$ myprog $
/bin/ksh

PID=1324 myprog

/bin/date /bin/ls
PID=1350
PID=1361
PID=1362
Subdirección de Infraestructura 82
Quoting y Caracteres Especiales

Subdirección de Infraestructura 83
Introducción a Qouting
 Muchos caracteres tienen un significado especial
para el shell:
espacios en blanco
carriage return
$
#
*
< >
 Quoting remueve (escapa) el significado especial.

Subdirección de Infraestructura 84
Caracteres
 Backslash \ remueve el significado especial
del caracter inmediato.
 Single Quotes ’ remueve el significado especial
de todos los caracteres que se encuentren entre
ellas, excepto ella misma.
 Double Qoutes ” remueve el significado
especial de casi todos los caracteres, excepto el
$, \ , el acento grave ‘ y las dobles comillas “.

Subdirección de Infraestructura 85
Quoting - \
Sintaxis:
\ remueve el significado especial del
siguiente caracter
Ejemplo:
$ echo the \\ escapes the next character
the \ escapes the next character
$ color=red\ white\ and\ blue
$ echo the value of \$color is $color
the value of $color is red white and blue
$ echo one two \
> three four
one two three four
Subdirección de Infraestructura 86
Quoting - ’
Sintaxis:
’ remueve el significado especial de todos los
caracteres que se encuentre entre ellas.

Ejemplo:
$ color=’red white and blue’
$ echo ‘the value of \$color is $color’
the value of \$color is $color

Subdirección de Infraestructura 87
Quoting - ”
Sintaxis:
” remueve el significado especial de casi todos los
caracteres que están entre ellas, excepto \, $, ‘ y “

Ejemplo:
$ color=“red white and blue”
$ echo “the value of \$color is $color”
the value of $color red white and blue
$ cur_dir=“$LOGNAME - your current directory is ‘pwd’”
$ echo $cur_dir
user3 - your current directory is /users/user3/tree

Subdirección de Infraestructura 88
Korn Shell

Características Adicionales

Subdirección de Infraestructura 89
¿Qué es un Korn Shell?
 Es un intérprete de comandos con algunas
características avanzadas en la interface del
usuario:
Command line recall and editing
Filename completion
Command aliasing
Advanced cd command
Advanced programming capabilities

Subdirección de Infraestructura 90
Recalling Commands
 Designación de Variables:
EDITOR=/usr/bin/vi; export EDITOR
HISTSIZE=50; export HISTSIZE
HISTFILE=$HOME/.sh_history; export HISTFILE
 En el shell prompt, presiona [ESC] y utiliza
comandos vi para ver los comandos anteriores:
[k] scrolls back
[j] scrolls forward
 Despliega el comando deseado y presiona [ENTER]

Subdirección de Infraestructura 91
Command Line Editing
 Provee la capacidad de modificar el texto de
comandos previos.
 Presiona [ESC] para entrar en modo comando.
 Presiona [K] para llamar el comando deseado.
 Utiliza los comandos de editar la línea
 NO UTILICE LAS FLECHAS
 Presiona [RETURN] para ejecutar el comando
modificado.

Subdirección de Infraestructura 92
Aliasing
Sintaxis:
alias [new_word[=‘string’]]

Ejemplo:
$ alias laser=‘lp -dlaser’
$ laser new.jersey
request id is laser-234 (1 file)
$ alias ls=‘ls -F’
$ alias dir=ls
$ alias mroe=more
$ alias h=‘fc -l’
$ alias r=‘fc -e - ‘ requiere del espacio
$ alias despliega todos los alias definidos
Subdirección de Infraestructura 93
Filename Completion
$ more fra [ESC] [ESC]
$ more frankenstain [RETURN]
.
.
.
$ more abc [ESC] [ESC] completa hasta donde sea
posible, después hace un beep
$ more abcdef [ESC]= despliega los nombres de archivos que
1) abcdefXlmnop hacen match
2) abcdefYlmnop

$ more abcdef la línea es desplegada


nuevamente
Enter [a] para agregar, luega X o Y, después [ESC] [ESC]
La asociasión de nombre de archivos estará completa.
Subdirección de Infraestructura 94
Enhanced cd
Tiene en memoria el path del directorio previo.

$ pwd
/users/user3/tree
$ cd $HOME/bin
$ cd -
$ pwd
/users/user3/tree

Subdirección de Infraestructura 95
The Shell Startup Files

Bourne Shell Korn Shell read:


/etc/profile /etc/profile at login
$HOME/.profile $HOME/.profile at login
$HOME/.kshrc at login
whenever start a
new Korn Shell

Subdirección de Infraestructura 96
Filename Generation

Subdirección de Infraestructura 97
Introducción a la Generación de
Nombres de Archivos
 La generación de caracteres de nombres de archivos
son interpretados por el shell.
 El shell generará los nombres que satisfagan el
patrón requerido.
 La generación de nombres es hecho antes de que el
comando es ejecutado.
 El comando operará en el nombre generado.
 Son útiles porque muchas aplicaciones definen la
convención de nombres de archivos.

Subdirección de Infraestructura 98
Filename Generating Characters
? hace match de cualquier caracter sólo excepto el punto (dot .)
[] Define una clase de caracteres.
- usado para definir un rango
! usado para negar la clase definida
* hace match de 0(cero) ó más caracteres, excepto el punto.

La generación de nombres nunca generarán nombres que contengan


al principio un punto.

El punto inicial debe ser dado para poder generar éstos nombres.

Subdirección de Infraestructura 99
Filename Generation - ?
El signo de interrogación (?) hace match de cualquier caracter sólo.
$ ls -a
. .. .zz abc abcd abcdef abcz bbabb cyz zzayy
$ echo ??? genera nombres que contengan 3 caracteres y ejecu-
ta: $ echo abc cyz
$ echo abc? genera nombres que empiecen con “abc” y terminen
con cualquier caracter. Ejecuta: $ echo abcd abcz
$ echo ??a?? genera nombres que contengan 5 caracteres, con una
“a” intermedia. Ejecuta: $ echo bbabb zzayy
$ echo .?? genera nombres que empiecen con un “.”, seguidos
por dos caracteres. Ejecuta: $ echo .zz
$ echo ? genera archivos que contengan 1 caracter.
Ejecuta: $ echo ?

Subdirección de Infraestructura 100


Filename Generation - [ ]
Corchetes que abren y cierran ([ ]), definen un rango de caracteres que
hará match.
$ ls -a
. .. .zz 1G 2G 7G 15G abc abcdef ba cyz

$ echo [abc]?? genera nombres de 3 caracteres que empiezan con una


a, b o c. Ejecuta: $ echo abc cyz
$ echo [1-9][A-Z] genera nombres de 2 caracteres que empiecen con un
número del 1 al 9 y terminen con una letra mayúscula
Ejecuta: $ echo 1G 2G 7G
$ echo [!A-Z]?? genera nombres de 3 caracteres que no empiecen con
una letra mayúscula. Ejecuta: $ echo 15G abc cyz

Subdirección de Infraestructura 101


Filename Generation - *
El asterisco hace match con 0(cero) ó más caracteres, excepto con el
punto inicial.

$ ls -a
. .. .profile ab.dat abcd.dat abcde abcde.data

$ echo * genera todos los nombres, excepto los que empiecen con punto.
Ejecuta: $ echo ab.dat abcd.dat abcde abcde.data
$ echo .* genera todos los archivos con punto.
Ejecuta: $ echo . .. .profile
$ echo *.dat genera todos los nombres que terminen con “.dat” excep-
to con el punto inicial. Ejecuta: $ echo ab.dat abcd.dat
$ echo *e genera todos los nombres que terminen con “e”, excepto con el
punto inicial. Ejecuta: $ echo abcde

Subdirección de Infraestructura 102


Redireccionamiento de Entrada y
Salida

Subdirección de Infraestructura 103


stdin, stdout y stderr
Descriptor del
Archivo Dispositivo Archivo

stdin 0
teclado

stdout 1

stderr 2

terminal

Subdirección de Infraestructura 104


Redireccionamiento de
Entrada - <
Cualquier comando que necesite leer su entrada de stdin puede redi-
reccionarla hacia un archivo.

Ejemplo:
$ cat remind
Your mother’s birthday is November 29
$ mai user3 < remind
$ mail
From user3 Mon July 15 11:30 EDT 1991
Your mother’s birthday is November 29
?d
$ remind
Your mother’s birthday is
mail user3
November 29

Subdirección de Infraestructura 105


Redireccionamiento de
Salida - > y >>
Cualquier comando que produce una salida a stdout puede redireccionarla
a otro archivo.
Ejemplo:
Crea/Sobreescribe Crea/Agrega

$ date > date.out $ ls >> ls.out

$ date > who.log $ who >> who.log

$ cat > cat.out $ ls >> who.log


input text here
[Ctrl-d] date.out
date Thu Aug 8 11:30 EDT 1991

Subdirección de Infraestructura 106


Redireccionamiento de
Errores - 2> y 2>>
Cualquier comando que produzca mensajes de error a stderr
puede redireccionarlos a otro archivo.

Ejemplo:
Crea/Sobreescribe Crea/Agrega

$ cp 2> cp.err $ cp 2>> cp.err

cp.err
cp error Usage: cp f1 f2
cp [-r] f1 . . . fn d1

Subdirección de Infraestructura 107


¿Qué es un Filtro?
 Lee la entrada estándar y produce una salida
estándar.
 Filtra el contenido de la entrada o el archivo.
 Manda el resultado a pantalla, nunca modifica la
entrada.
 Procesa la salida de otros comandos, cuando son
usados en conjunto con el redireccionamiento de la
salida.
Ejemplo: cat, grep, sort, wc

Subdirección de Infraestructura 108


wc - Word Count
Sintaxis:
wc [-lwc] [file . . .] cuenta líneas, palabras y carac-
teres de un archivo.
Ejemplo:
$ wc new.jersey
105 718 3967 new.jersey
$ wc -l new.jersey
105 new.jersey
$ ls > ls.out
$ wc -w ls.out
72 ls.out
l cuenta el número de líneas
w cuenta el número de palabras
c cuenta el número de caracteres

Subdirección de Infraestructura 109


sort - Sort Alfabético o Numérico
Sintaxis:
sort [-ndtX] [+field_no] [file . . .] hace un sort de líneas

Ejemplo:
$ sort new.jersey
$ tail -1 /etc/passwd
user3:xyzbkd:303:30:student user3:/users/user3:/bin/ksh
+0 +1 +2 +3 +4 +5 +6
$ sort -nt: +2 < /etc/passwd
$ who >whoson
$ sort whoson

Subdirección de Infraestructura 110


grep - Búsqueda de Patrón
Sintaxis:
grep [-inv] pattern [file . . .] busca en los archivos el
patrón.

Ejemplo:
$ grep user /etc/passwd
$ grep -v user /etc/passwd
$ grep -in like new.jersey
$ who > whoson
$ grep user3 whoson

Subdirección de Infraestructura 111


Pipelines

Subdirección de Infraestructura 112


Introducción
En el capítulo anterior se utilizó el redireccionamiento de E/S para
filtrado extensivo de un comando, capturándolo en un archivo tem-
poral y después filtrando su contenido.

Los Pipelines permiten hacerlo directamente, transfiriendo la


salida de un comando a la entrada de otro comando.

No es necesario crear un archivo temporal.

$ who > temp_file


who wc -l?
$ wc -l < temp_file
$ rm temp_file
Pipelines
Redireccionamiento
Subdirección de Infraestructura 113
El Símbolo | (Pipe)
Filtro
cmd_A | cmd_B | cmd_C

genera genera
stdout stdout acepta
stdin
acepta
stdin

Ejemplo:
$ who | wc -l
$ who | sort
$ who | sort | wc -l
$ ps -ef | more

Subdirección de Infraestructura 114


Pipelines vs Redireccionamiento

Redireccionamiento de E/S Pipelines

cmd_out > file cmd_out | cmd_in


o
cmd_in < file

who > who.out who | sort


sort < who.out

Subdirección de Infraestructura 115


Redireccionamiento en un Pipeline
Son 3 streams por cada comando:
- stdin
- stdout
- stderr
Se puede redireccionar los streams que no son dedicados al pipeline
stdout stdin

cmd_A | cmd_B
disponible para stdin stdout
redireccionamiento: stderr stderr

stdout stdin stdout stdin

cmd_A | cmd_B | cmd_C


disponible para stdin stderr stdout
redireccionamiento: stderr stderr
Subdirección de Infraestructura 116
Más Filtros
cut corta la columna o campo especificado y es desplegado
en stdout

tr traduce caracteres

tee pasa la salida a un archivo y a stdout

pr imprime y formatea la salida a stdout

Subdirección de Infraestructura 117


El Comando cut
Sintaxis:
cut -clist [file . . .] corta columnas o campos
cut -flist [-dchar] [-s] [file . . .] de los archivos o stdin

Ejemplo:
$ date | cut -c1-3
$ tail -1 /etc/paswd
user3:mdhbmkdj:303:30:student user3:/users/user3:/bin/ksh
1 2 3 4 5 6 7
$ cut -f1,6 -d: /etc/passwd
$ cut -f1,6 -d: /etc/passwd | sort
$ ps -ef | cut -c48- | sort -d

Subdirección de Infraestructura 118


El Comando tr
Sintaxis:
tr [-cs] [string1 [string2]] traduce caracter

Ejemplo:
who | tr -s “ “
date | cut -c1-3 | tr “[[:lower]]” “[[:upper]]”

Opciones:
-c para complementar otros caracteres
-s squeezer reduce el o los caracteres que encuentre a 1 string
-d borra un caracter

Subdirección de Infraestructura 119


El Comando tee
stdin stdout

file
Sintáxis:
tee [-a] file [file . . .]
Ejemplo:
$ who | sort
$ who | tee unsorted | sort
$ who | tee unsorted | sort | tee sorted
$ who | wc -l
$ who | tee whoson | wc -l
Subdirección de Infraestructura 120
El Comando pr
Sintaxis:
pr [-option] [file . . .]

Ejemplo:
$ pr -n3 new.jersey
$ pr -n3 new.jersey | more
$ ls | pr -3
$ grep user /etc/passwd | pr -h “User Accounts”

Subdirección de Infraestructura 121


Multitarea

Subdirección de Infraestructura 122


Procesamiento en Background
Sintaxis:
command line > cmd.out &

Calendariza la línea de comandos para ser ejecutado como un trabajo en


background.
El prompt regresa tan pronto como el trabajo es iniciado.
Redirecciona la salida del comando, de tal forma que la salida no interfiera con
los comandos iteractivos.
El realizar un logging out dará por terminado los procesos corriendo en
background.

Ejemplo:
$ grep user * > grep.out &
[1] 956
$

Subdirección de Infraestructura 123


Llevando Jobs a
Background/Foreground
jobs despliega los jobs que están actualmente corriendo.

[Ctrl-z] Suspende la ejecución de un job en foreground


stty susp ^z

fg %number trae el job number a foreground

bg %number transfiere un job number al background

Subdirección de Infraestructura 124


Comando nohup - No HangUP
Sintaxis:
nohup command line & hace que el comando sea inmu-
ne al hangup (logout)
Ejemplo:
$ nohup cat * > bigfile &
[1] 972
$ [Ctrl-d] [RETURN]
login:
Password:
:
$ ps -ef
985 1 . . . -ksh
972 1 . . . cat . . .
989 985 . . . ps -f
Subdirección de Infraestructura 125
Comando nice
Sintaxis:
nice [-N] command_line

Ejecuta un proceso a la más baja


prioridad. N es un número entre
1 y 19.

Ejemplo:
$ nice -10 cc myprog.c -o myprog
$ nice -5 sort * > sort.out
$

Subdirección de Infraestructura 126


Comando kill
Sintaxis:
kill [-sig_no] PID [PID . . .]
Manda una señal a un proceso específico.
Ejemplo:
$ cat /usr/man/man1/* > bigfile1 &
[1] 995
$ cat /usr/man/man2/* > bigfile2 &
[2] 996
$ kill 995
[1] + Killed cat /usr/man/man1/* > bigfile1
$ kill -9 %2
[1] + Killed cat /usr/man/man2/* > bigfile2

Subdirección de Infraestructura 127


Subdirección de Infraestructura 128

Você também pode gostar