Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Transp Modulo0 PDF
Transp Modulo0 PDF
programa
!
!
!
Mdulos
4
Tramo 1:
Tramo 2:
Tramo 3:
Tramo 4:
Tramo 5:
Actividades de un Mdulo
Tarea 0: Descargar transparencias y ejemplos del mdulo
!
Contenidos
1. Introduccin
2. El sistema de archivos
3. La interfaz de usuario
Contenidos
1. Introduccin
h
h
h
h
Perspectiva histrica
Principios generales de diseo
Entrada al sistema
Comandos bsicos
Introduccin
Qu es un sistema operativo?
!
Introduccin a UNIX
Sistema operativo de propsito general,
multiusuario y multitarea
Diseado por y para programadores
Como entorno de programacin, su contexto
habitual de uso es el de un equipo de trabajo
cooperando en el desarrollo de sistemas software
complejos: trabajo conjunto e intercambio
controlado de informacin
Historia
Desarrollado en 1969 para un DEC PDP-7
por Ken Thompson (Bell Labs)
Reescrito en C en 1973. Lenguaje recin
desarrollado por Dennis Ritchie
Cdigo fuente distribuido gratuitamente a
universidades en 1974
La Universidad de Berkeley mejor
notablemente el original dando lugar al
Berkeley UNIX (BSD)
@ Juan Carlos Yelmo, DIT-UPM
Historia
Bell Labs
1970
1975
AT&T
Otros
Primera edicin
Quinta edicin
1BSD
Sptima edicin
1980
3BSD
System III
System V
1985
1990
Berkeley
Dcima edicin
System V R4
4.3BSD
4.4BSD
1995
MINIX
POSIX
LINUX
Arquitectura de UNIX
Usuarios
Interfaz de
usuario
Interfaz de
biblioteca
Interfaz de
llamadas al sistema
Entrada al sistema
Para utilizar UNIX es necesario identificarse
y registrarse (log in) en el sistema,
proporcionando un nombre (user id) y una
contrasea (password)
login: jcyelmo
Password:
Last login: Mon Nov 5 16:35:13 CET 2012 on pts/2
Welcome to Ubuntu 12.04.1 LTS (GNU/Linux 3.2.0-32-generic x86_64)
* Documentation:
https://help.ubuntu.com/
jcyelmo@jcyelmo-VirtualBox:~$
Entrada al sistema
Entrada al sistema
Entrada al sistema
UNIX mantiene la informacin bsica de usuarios
autorizados en un fichero pblico, /etc/passwd
o /etc/shadow, incluyendo las contraseas
(cifradas) con el formato:
" <usuario>:<password>:<uid>:<gid>:<nombre>:<home>:<shell>
!
Ejemplo:
" !root:x:0:0:root:/root:/bin/bash
Prompt
Programa/accin a ejecutar
Comandos bsicos
$ ls
Desktop
Documents
$
Downloads
examples.desktop
Music
Pictures
Public
Templates
Videos
Dudas existenciales
Quin soy?
whoami/who am i
id
Identificador de usuario
Identificador de usuario y grupos
Dnde estoy?
pwd
hostname
Qu da es hoy?
date
cal
Fecha y hora
Calendario del mes
@ Juan Carlos Yelmo, DIT-UPM
Dudas existenciales
Manual on-line
man [opciones][[seccion]temas]
Muestra informacin del manual de referencia sobre el tema solicitado (normalmente un
comando)
Opciones principales
-k palabras clave
man intro
Introduccin general
man man
man -k socket
Contenidos
2. El sistema de archivos
h
h
h
h
Introduccin
Ficheros en UNIX
Estructura del sistema de archivos
Edicin de ficheros
Introduccin
Los ordenadores pueden almacenar informacin
de forma persistente en distintos medios fsicos:
cinta o disco magntico, disco ptico, discos SSD,
etc.
El sistema operativo presenta una visin lgica
del almacenamiento de informacin que abstrae
caractersticas de dispositivos fsicos concretos y
cuya unidad de almacenamiento es el fichero o
archivo
Introduccin
Fichero
Conjunto de informacin relacionada que se
almacena en un dispositivo secundario
(persistente) y a la cual se asigna un nombre
! Es la unidad lgica de almacenamiento
secundario
! Normalmente es una secuencia simple de bytes
de longitud finita
!
Introduccin
Sistema de archivos
Mecanismo software que permite crear,
almacenar, recuperar, proteger y gestionar
ficheros
! Suele estar implementando como parte del
ncleo (kernel) del sistema operativo y asocia
ficheros con su implementacin en los
dispositivos de almacenamiento
! El sistema de archivos asocia a los ficheros
informacin adicional como permisos de
acceso, atributos, etc.
!
Ficheros en UNIX
Los archivos pueden contener textos,
documentos, cdigo fuente, ejecutables,
directorios, pginas web, etc.
Gran parte del sistema UNIX gira en torno al
concepto de fichero. Se utilizan para representar
tambin: dispositivos, buffers, sockets, etc.
UNIX no impone estructura ni interpretacin a la
informacin contenida en un fichero. stas
dependern de las aplicaciones que lo utilizan.
Comandos bsicos
Para listar ficheros
ls
Contenido de un directorio
Copia ficheros
Mueve y renombra ficheros
Elimina ficheros
Ficheros en UNIX
rbol de directorios
/
etc
tmp
bin
home
passwd
bash
bin
fulano
mengano
.login
carta.txt
dev
Directorios en UNIX
Los directorios son nodos del sistema de archivos
y contienen otros nodos del sistema (ficheros o
directorios)
Los directorios son ficheros que contienen
informacin sobre cmo encontrar otros ficheros
El directorio inicial del sistema de archivos se
denomina raz (/)
Todo directorio contiene al menos dos
subdirectorios:
!
Path de un fichero
/
home
Path absoluto:
/home/mengano/carta.txt
Directorio home
de fulano
Path relativo a fulano:
bin/mical
bin
fulano
mengano
.login
carta.txt
mical
@ Juan Carlos Yelmo, DIT-UPM
Comandos bsicos
Situarse y moverse por el sistema
Cambio de directorio
Dnde estoy?
cd
pwd
Crea directorios
Borra directorios
Cambio de directorio
cd [directorio]
Cambia al directorio especificado o, en su defecto, al directorio home del usuario. Es un
comando interno del intrprete de comandos (shell).
Ejemplos
cd
cd ~
cd ~fulano
cd /home/fulano
cd ..
cd mibin
Directorios en UNIX
Directorios de inters
/bin, /usr/bin
/usr/local
Comandos propios de la
instalacin local
/etc
/dev
/home
/tmp, /usr/tmp
/lib, /usr/lib
Contenidos
2. El sistema de archivos
h
h
h
h
Introduccin
Ficheros en UNIX
Estructura del sistema de archivos
Edicin de ficheros
Contenido de un directorio
home
. 121245
.. 2
.login 123457
bin 375269
carta.txt 567891
fulano
bin
.login
carta.txt
Informacin en un nodo-i
Modo.
!
Informacin en un nodo-i
Dispositivo donde est almacenado el
fichero
Direccin de los bloques de disco que
componen el fichero
Tamao ptimo del bloque de disco
Nmero de bloques de disco asignados al
fichero
Nodos-i
Lista de nodos-i
Un nodo-i
Modo
Tipo
Modo
ejec.
Nm.
enlaces
Permisos
UID
GID
Tamao
Acceso
Fechas
Modif.
Bloques en disco
Cambio
Modo de ficheros
Entero de 16 bits que codifica el tipo de
fichero, forma de ejecucin y permisos de
acceso
Tipo
Ejecucin
Permisos de acceso
16 bits
Tipo de fichero
Se establece cuando se crea el fichero y no se
puede cambiar
!
!
!
!
!
!
!
Permisos de acceso
Cada fichero en UNIX tiene un propietario y un
conjunto de permisos asociados que determinan
qu puede hacerse con l y quin puede hacerlo
Hay tres tipos de permisos por fichero: lectura
(r), escritura (w) y ejecucin (x)
Estos permisos se pueden asignar a tres tipos de
usuario: el propietario (user), los miembros del
grupo del propietario (group) y terceras personas
(others)
Permisos de acceso
9
Tipo
Ejecucin
Permisos de acceso
Usuario
Grupo
Otros
w x
lectura
ejecucin
escritura
Permisos de acceso
Los permisos de acceso de un fichero
pueden cambiarse
Existe un tipo de usuario especial (el
superusuario) que puede leer, modificar o
ejecutar cualquier fichero del sistema
El identificador de acceso root (el
administrador del sistema) tiene permisos
de superusuario
chmod +x comando
Listar ficheros
ls [opciones][ficheros]
Lista los ficheros contenidos en el directorio actual o los nombrados
explcitamente como argumentos
Opciones principales
-l
-t
-r
-a
-i
ls -lt *.html
Metacaracteres
Caracteres especiales utilizados para
nombrar grupos de ficheros de forma
simblica
!
Contenidos
2. El sistema de archivos
h
h
h
h
Introduccin
Ficheros en UNIX
Estructura del sistema de archivos
Edicin de ficheros
Edicin de ficheros
Un editor es un programa que se utiliza para crear
o modificar ficheros que contienen texto simple:
cdigo fuente, datos de configuracin, html, etc.
El editor crea un buffer temporal donde almacena
el fichero editado
La pantalla del terminal acta de ventana a travs
de la que se visualiza parte del buffer. Esta ventana
puede deslizar arriba y abajo en el buffer
Ejemplos de editores de texto: Notepad (Windows),
TextEdit (OS X), Sublime Text, Emacs, Vi, Vim.
Editor de pantalla
Ventana de editor
Cursor
Fichero en edicin
guardar
Buffer
cargar
Editores de texto
El editor vi
Desarrollado para una de las primeras versiones
de BSD UNIX
Estndar de facto en UNIX y omnipresente en
todas sus variantes
Muy utilizado por su potencia, difusin, necesitar
pocos recursos, velocidad de arranque y por ser
editor secundario de otras aplicaciones
Tanto el texto como los comandos propios del
editor se introducen desde el teclado
Puede resultar incmodo de utilizar al principio
@ Juan Carlos Yelmo, DIT-UPM
El editor vi
vi [opciones][ficheros]
Editor de pantalla
Opciones principales
-r file
+n
vi file
vi +20 geo.htm
vi file1 file2
El editor vi
El editor vi tiene dos modos
Modo comando. Lo que el usuario teclea se
interpreta como un comando de vi
! Modo insercin. Lo que el usuario teclea se
interpreta como texto a insertar
!
Salir de vi
ZZ
:q
^z
Guardar y salir
Salir sin guardar (pregunta)
Suspender edicin (se recupera
con fg)
Otros
dd
u
/<texto>
:r fichero
Contenidos
3. La interfaz de usuario
h
h
h
h
h
h
Introduccin
Interfaz de usuario de un sistema software
!
La shell
UNIX puede tener varias interfaces, textuales o
grficas, sustituibles y configurables por el
usuario
La shell original es un intrprete de lnea de
comandos: Bourne Shell (sh)
La shell estndar de LINUX es una
reimplementacin de la Bourne Shell: Bourne
Again Shell (bash)
Hay interfaces grficas a UNIX similares a los
entornos MS-Windows: OS X Aqua, GNOME
(GNU), KDE, Unity, etc.
@ Juan Carlos Yelmo, DIT-UPM
Usos de la Shell
Uso interactivo
La shell muestra el prompt, espera que el
usuario introduzca comandos y argumentos,
analiza sintcticamente la lnea, ejecuta el
comando y devuelve el prompt
! Tiene facilidades de uso de metacaracteres,
redireccionamiento de entrada-salida,
combinacin de comandos, historia de
comandos, etc.
!
Ejecutar comando
Shell
Procesar comando
@ Juan Carlos Yelmo, DIT-UPM
Leer comando
Usos de la Shell
Personalizacin de la sesin UNIX
La Shell define variables que controlan la
sesin de usuario. Definiendo estas variables el
usuario puede configurar la sesin segn
gustos y necesidades
! La sesin de usuario se configura inicialmente
a travs de ficheros que se leen cuando se
inicia la shell. En estos ficheros se pueden
definir variables y comandos que se ejecutan al
comienzo de la sesin
!
Usos de la Shell
Programacin
!
Programa/accin a ejecutar
Modificadores
Datos de entrada
Argumentos: ficheros
Cul?
which comando
Ejemplo:
$ which pwd
Dnde est?
find path opciones
Ejemplo:
$ find . name
page.html -print
Qu ha cambiado?
diff file1 file2
Ejemplo:
$diff filev1 filev2
Argumentos: mquinas
Conexin segura
ssh hostname
Ejemplo:
$ ssh T
git@github.com
Alcanzabilidad
ping hostname
Ejemplo:
$ ping google.com
Comprueba si la mquina es
alcanzable en red y mide tiempo de eco
Comprueba que google.com es
alcanzable
Transferencia de archivos
ftp hostname
Ejemplo:
$ftp
ftp.mozilla.org
Contenidos
3. La interfaz de usuario
h
h
h
h
h
h
Entrada/salida de comandos
Los argumentos de un comando suelen indicar la
fuente de informacin de entrada (o el destino de
los resultados de salida)
Adems de los argumentos, un comando UNIX
tpico tiene definidos unos canales (ficheros) de
entrada y salida por defecto:
!
!
!
Entrada/salida de comandos
Entrada
estndar
STDIN
Salida
estndar
Comando
STDOUT
STDERR
Salida estndar
de errores
Entrada/salida de comandos
Entrada
estndar
STDIN
Salida
estndar
Comando
STDOUT
STDERR
Salida estndar
de errores
Entrada/salida de comandos
Entrada
estndar
STDIN
Salida
estndar
Comando
STDOUT
STDERR
Salida estndar
de errores
Entradas de un comando
Sus opciones y argumentos.
!
Ficheros predefinidos
!
Variables de entorno
!
La entrada estndar
Salidas de un comando
Ficheros
!
Salida estndar
Salida estndar de errores
Valor de retorno a la shell
!
Redireccin de entrada/salida
Los canales de entrada y salida estndar de un
comando se asocian por defecto al terminal de
usuario, pero pueden asociarse a cualquier otro
fichero (redireccin de entrada/salida)
La salida estndar de un comando puede asociase
con la entrada estndar de otro para conseguir la
composicin de comandos en cadena (pipeline)
Redireccin de salida
Entrada
estndar
Salida
estndar
Comando
Salida estndar
de errores
Redireccin de salida
Entrada
estndar
Salida
estndar
Comando
Salida estndar
de errores
Redireccin. Resumen
Salida estndar (stdout)
Defecto
> file
>> file
>&2
Pantalla
Redirigir a
fichero
Aadir a
fichero
Combinar con
stderr
>! machaca
file si existe
>>! crea
fichero si no
existe
Redireccin. Resumen
Entrada estndar (stdin)
Defecto
< file
<< END
Teclado
Composicin de comandos
Secuencia de comandos
comando1; comando2
! $ date; who
!
Pipelines
Comando2
Comando1
Pipelines
Comando2
Comando1
Fichero pipe
@ Juan Carlos Yelmo, DIT-UPM
Comandos UNIX
Cuenta palabras
wc opciones fichero
Ejemplo:
$ wc l soneto.txt
Bsqueda de patrones
grep opciones
patron file
Ejemplo:
$ grep w cara
fichero.txt
Contenidos
3. La interfaz de usuario
h
h
h
h
h
h
Variables de shell
La shell permite la asignacin y consulta de
valores a variables. Estas variables pueden ser
utilizadas por la propia shell o por los comandos y
programas ejecutados por sta
Los valores de las variables son cadenas de cero
o ms caracteres
Un identificador de variable puede ser cualquier
palabra que comience con una letra y contine
con letras, dgitos y el carcter de subrrayado
Uso de variables
Asignacin
!
En sh y bash
" $ nombre=manu
Uso
" $ echo $nombre
manu
" $ echo "${nombre} perez
manu perez
" $ echo "${nombre}el perez
manuel perez
Tipos de variables
Variables ordinarias. Variables locales de
propsito general
Variables de entorno. Describen el
contexto de ejecucin y se heredan
Variable especiales de la shell.
Configuran el entorno de la propia shell.
!
Variables de entorno
Describen el entorno de ejecucin:
TERM: Tipo de terminal
! PATH: Lista de directorios por defecto para
bsqueda de comandos
! HOSTNAME: Nombre de la mquina
! USER: Nombre del usuario
! SHELL: Shell por defecto
! HOME: Directorio base del usuario
! etc.
!
Variables de entorno
Asignacin (sh y bash)
$ TERM=vt100; export TERM
! $ PATH=$PATH:/home/jcyelmo; export
PATH
! $ export PATH=$PATH:/home/jcyelmo
!
Variables posicionales
Albergan los parmetros de entrada a los
comandos
!
!
!
Evaluacin de variables
$var
${var}
${var-valor}
${var=valor}
${var?mensaje}
${var+valor}
Seleccin de la shell
Cada usuario tiene una shell por defecto
para interactuar con el sistema operativo
La shell por defecto est especificada en el
ltimo campo de la lnea de registro del
usuario en el fichero /etc/passwd
El usuario puede cambiar su shell por
defecto con chsh
!
Inicializacin de la shell
Cuando se ejecuta una shell interactiva,
sta ejecuta unos scripts de inicializacin
que asignan valores predeterminados por el
usuario para variables especiales y de
entorno y ejecutan comandos
Estos ficheros de inicializacin sirven para
particularizar la sesin a los gustos y
necesidades de cada usuario
Inicializacin de la shell
Los ficheros de inicializacin de la shell
residen en el directorio base del usuario
Tambin hay ficheros de inicializacin
globales para todos los usuarios
Tienen nombres predeterminados
!
Tipos de Shell
Interactiva. Permite interactuar al usuario con
el sistema operativo
!
Inicializacin en bash
Varios ficheros para particularizacin de
comienzo y fin de sesin
!
/etc/profile
" Inicializacin global para login shells
/etc/basrc
" Configuracin global
$HOME/.bash_profile
" Ejecuta al comienzo de sesin
$HOME/.bashrc
" Ejecuta al comienzo de una shell
$HOME/.bash_logout
" Particulariza el fin de sesin
@ Juan Carlos Yelmo, DIT-UPM
Ejemplo de .bash_profile
# .bash_profile
# Get the aliases and functions
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
# User specific environment and startup programs
PATH=$PATH:$HOME/bin
BASH_ENV=$HOME/.bashrc
USERNAME=""
export USERNAME BASH_ENV PATH
Ejemplo de .profile