Escolar Documentos
Profissional Documentos
Cultura Documentos
Unix
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
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
NBS/FIPS escalabilidad
HP-UX
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
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
* * *
* * *
***** *
* * *
* * *
$ 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
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:
$
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>
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
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
/
var
user1 user2 user3
news share contrib local bin
Subdirección de Infraestructura 28
Pathnames
/
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
{
{
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.
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
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)
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:
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
Subdirección de Infraestructura 49
chmod - Cambia Permisos de un Archivo
Sintaxis:
chmod mode file [file ...] cambia permisos a archivos
Clasificación Permisos Modificaciones
Ejemplo:
read =4
write =2
execute =1
mode user group other
rwxr-xr-x rwx r-x r-x
7 5 5
Ejemplo:
permisos por default rw- rw- rw-
$ 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
a c ESC append c
quik brown fox
Subdirección de Infraestructura 63
borrando texto: x, dw, dd, dG
Theere are tooooo many worrds
x 3 x x
Subdirección de Infraestructura 64
Moviendo Texto: p, P
these are too words
d w borra la palabra
Subdirección de Infraestructura 65
Copiando Texto: yw, yy
these are words too
y w yank word
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
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”.
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.
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
Hardware
I/O redirection
Subdirección de Infraestructura 74
Almacenamiento de Variables
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
$ 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
$ pwd
/users/user3/tree
$ cd $HOME/bin
$ cd -
$ pwd
/users/user3/tree
Subdirección de Infraestructura 95
The Shell Startup Files
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.
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 ?
$ 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
stdin 0
teclado
stdout 1
stderr 2
terminal
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
Ejemplo:
Crea/Sobreescribe Crea/Agrega
cp.err
cp error Usage: cp f1 f2
cp [-r] f1 . . . fn d1
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
Ejemplo:
$ grep user /etc/passwd
$ grep -v user /etc/passwd
$ grep -in like new.jersey
$ who > whoson
$ grep user3 whoson
genera genera
stdout stdout acepta
stdin
acepta
stdin
Ejemplo:
$ who | wc -l
$ who | sort
$ who | sort | wc -l
$ ps -ef | more
cmd_A | cmd_B
disponible para stdin stdout
redireccionamiento: stderr stderr
tr traduce caracteres
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
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
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”
Ejemplo:
$ grep user * > grep.out &
[1] 956
$
Ejemplo:
$ nice -10 cc myprog.c -o myprog
$ nice -5 sort * > sort.out
$