Upload
jefferson-agila
View
378
Download
0
Embed Size (px)
Citation preview
Introducción a UNIX
Sistemas Operativos 2015
Unix Programming Environment
Objectivos: Conocer las características básicas de Unix y la filosofía de Unix
Comandos básicos
Sistema de archivos
Shell
Filtros (wc, grep, sort, awk)
Redirección de archivos, Tuberías
Estructura de un Sistema UNIX
Applications
Shell
\Kernel (OS)
Hardware
Aplicaciones estandar:
• Comandos de Sistema de archivos
• editores de textos
• compiladores
• procesadores de texto
Unix y los Usuarios
La mayoría de versiones de Unix proven el mismo conjunto de aplicaciones (comandos y shells).
A pesar de que sus interfaces de usuario no son parte directa del SO, están estandarizados lo suficientemente para que baste con aprender una versión.
Versiones de Unix
SysV (AT&T)
BSD (Berkeley)
Solaris (Sun)
IRIX (SGI)
AIX (IBM)
LINUX (free software)
Logearse
Modos:
Desde la consola
Acceso remoto mediante SSH, telnet.
Los nombres y comandos son sensitivas a mayúsculas o minúsculas!
Username
(tipicamente) una secuencia de caracteres alfanuméricos de longitud no mayor a 8.
Identificacion primaria de la cuenta.
(usualmente) usada como direccion de correo
El nombre del directorio home está relacionado con el nombre de usuario.
Creación de un usuario
adduser hernan
Password
Cadena secreta que nadie debe conocer (ni el sistema!)
Al pulsar la clave, el Sistema la encripta y la compara con lo almacenado.
Debería tener al menos 6 caracteres
Es una Buena idea mezclar mayúsculas y minúsculas, números y caracteres especiales (asccii estandar)
Cambio de clave de un usuario
passwd hernan
Directorio home
Directorio personal del usuario,
/home/hernan
/home/prueba
A veces está montado en un file system separado del SO
Directorio home
Directorio actual al logearse
cd lleva a home
Localizacion de varios archivos de inicio y configuración. :
.vimrc .bashrc .bash_profile .forward .plan .mozilla/ .elm/ .logout
Archivos y nombre de archivos
Un archivo es la unidad básica de almacenamiento.
Son sensibles a mayúsculas! (case sensitive)
De hecho, todo es case sensitive!
Los archivos en Unix pueden contener cualquier character, excepto el character null y slash (/).
Los nombres de archivos pueden ser largos!
Cuan largo depende de la version
Archivos y nombre de archivos
Cada archivo en el mismo directorio debe tener un nombre único.
Los archivos que inician con un '.' son ucultos
Directorios
Un directorio es un clase especial de archivo - Unix usa los directories para almacenar informacion acerca de los archivos.
Unix Filesystem
El Sistema de archivos
Es un Sistema de organización jerárquicade archivos y directorios.
El nivel superior de la jerarquía se llama la “raiz” (root) y and guarda todos los archivos y directorios del Sistema de archivos.
El nombre del directorio root es /
Filesystem
/
bin etc home/ tmp usr
hollid2 scully bin etc
netprog unix X ls who
Rutas (Pathnames)
La ruta de un archivo incluye el nombre del archivo y el nombre de la carpeta que lo contiene, y el nombre de la carpeta que la contiene … hasta llegar a la raiz
Ej.
/home/hernan/trabajos/tarea1
Comando para ver directorio actual
pwd
Ejemplos de rutas
/
bin/ etc/ home/ tmp/ usr/
Hollid2/ scully/ bin/ local/
netprog unix/ X ls who
/usr/bin/lsSyllabus
/home/hollid2/unix/Syllabus
Crear usuarios y su estructura con su nombre en vez de Hollid2
Rutas Absolutas
Las que se especifican desde la raiz.
/home/hernan
Absolutas especiales :
~hernan/ /home/hernan (solo para el
directorio home del usuario)
~ es el directorio home de $USER
Para ver el contenido de las variables de entorno
echo $USER
Rutas relativas
Prefijadas con el directorio actual ( $PWD )Relativas a la carpeta de trabajo actual$ cd /home/hernan
$ pwd
/home/hernan
$ ls unix/Sillabus
unix/Sillabus
$ ls X
ls: X: No such file or directory
$ ls /home/scully/X
/home/scully/X
Rutas relativas especiales
. – Directorio actual
.. – Directorio padre
$ pwd
/home/hernan
$ ls ./netprog
./netprog
$ ls ../scully
X
24/10/2015
Disco vs. Sistema de archivosLa jerarquía completa puede incluir varios discos físicos.
Algunas carpetas pueden estar en otras computadoras
/
bin etc users tmp usr
hollid2 scully
Comandos – Sintaxis Básica
El Shell considera el primer elemento como un comando. Los siguientes elementos son argumentos
Los Argumentos que inician con un – son llamadosopciones
Sintaxis de comandos:command [option1] [option2] . . . [optionN]grep "Hernan" /etc/passwd
ls -o /home/hernan /home/prueba/Public
– -o lista larga
– Los 2 parámetros son directorios
Comandos de archivos y carpetas
ls – lista el contenido de un directorio
-a – all files
-l – long listing
pwd – print working directory
cd – change directory
Sin argumentos, lleva a home
Páginas de ayuda
Información detallada de comandos:man ls
man cat
man man
– Se puede buscar por palabras clave:
man -k buscado
Opciones de línea de commandos
Se puede modificar el formato de salida de lsmediante opciones.
-l long format (fechas, propietario y permisos). Comparable a -o
-a all (muestra también los archivos ocultos*)
-F incluye un caracter especial para indicar el tipo de archivo.
-C lista en columnas
*los archivos ocultos inician con "."
Ver archivos
cat – concatena, envía a la salida
estándar (stdout). Muestra el contenido de un archivo
less, more – utilidades de paginación
od – octal dump. Para ver el contenido
en octal, hex, control chars, etc.
Copiar, borrar, enlazar
rm – borrar
rm ~/tmp/download
mv – mover (renombrar) un archivo
mv ant.arch ../otroDir/nuevo.arch
cp – copiar
cp dirOrigen/arch dirDest/arch
ln – crea un enlace duro (inode) o suave (symbolic) a un archivo
Comandos para directorios
mkdir crear directorio (make
directory)
rmdir borrar un directorio (remove
directory)
Los directorios pueden moverse o renombrarse (mv), y copiarse (cp –r)
Comandos…
filtrar datosgrep "Hernan" /etc/passwd
• Versión de Linuxuname -srv
• Leer un archivomore /etc/passwdcat /etc/passwd
Comandos…
Procesos en ejecución
ps ax o ps –e• Concatenar comandos• cd; ls -l; pwd
• Combinación de comandos Shell: uso de tubería (pipe)• ls /dev | grep sda
Redireccionamiento28/10/2015
Redireccionamiento
• Entrada de un comando desde un archivo: ordenar• sort < /etc/passwd
• Guardando el resultado en un archivo• grep uucd /etc/passwd > usuario• sort /etc/passwd > ~/ordenado.text
• Entrada y salida desde y hacia un archivo• sort < /etc/passwd > ordenado
Redireccionamiento
Agregando datos a un archivo
• echo hola >> usuario• Leyendo datos a un archivo hasta cierta condición
• cat <<zz > input.txt
• Encontrar / Buscar• find / -name COPYING -print
• Enviar el error a un archivo• find / -name COPYING -print 2> finderr
• Desechar el error• find / -name COPYING -print 2> /dev/null
Comandos…
Atajo con TABcat /etc/mod{TAB}
• Conteo de líneas palabras y caracteres• wc /etc/passwd• wc –l /etc/passwd• cat /etc/passwd | wc
• ej. Cuantos procesos están activos en memoria?
Atributos de los archivos
Cada archivo tiene algunos atributos:
Fechas de acceso:
Creacion del archivo
Último cambio
Última lectura
Tamaño
Propietarios (usuario y grupo)
Permisos
Tipo – directorio, enlace, norlam, etc.
ACLs – lista de control de acceso
Atributos de los archivos
Atributos de fecha:
Cuando fue cambiado ls -l
Ordenar por fecha de modificación ls -lt
Propietarios
Cada archivo es propiedad de un usuario.
Se puede ver con ls y la opción -l o -o:
ls -l
total 24
drwxr-xr-x 7 jjohnson users 80 Jan 3 2015 cs265/
-rw------- 1 jjohnson users 8258 Jan 3 2015 cs265.html
-rw-r--r-- 1 jjohnson users 8261 Jan 3 2015 cs265.html~
ls -l
$ ls -l foo
-rw-rw---- 1 hollingd grads 13 Jan 10 23:05 foo
permisospropiet grupo
tam
fecha
nombre
Permisos
Cada archivo tiene permisos específicos
Hay tres tipos de permisos: read r
write w
execute x
Hay 3 conjuntos de permisos:
1. Usuario / propietario
2. grupo
3. otros (los demás)
ls -l y los permisos
-rwxrwxrwxUser Group Others
Tipo de archivo:
- – archivo normal
d – directorio
s – enlace simbólico
(otros)
rwx
archivos:
r – permitido leer.
w - permitido escribir / editar
x - permitido ejecutar
Directorios:
r - permitido ver el contenido (nombres)
w - permitido agregar o eliminar archivos.
x - permitido a “ingresar” al directorio
Cambio de permisos
El commando chmod cambia permisos
de archivos y directorios.
forma:
chmod modo archivo
chmod – modos numericos
Permisos para cada conjunto de usuarios (user, group, other) como núm de 3-bit
r – 4
w – 2
x – 1
El modo es un número octal de 3 dígitos #
755 – rwxr-xr-x
644 – rw-r—r--
700 – rwx------
chmod - ejemplos$ chmod 700 CS571
$ ls –o Personal
drwx------ 10 kschmidt 4096 Dec 19 2004 CS571/
$ chmod 755 public_html
$ chmod 644 public_html/index.html
$ ls –ao public_html
drwxr-xr-x 16 kschmidt 4096 Jan 8 10:15 .
drwx--x--x 92 kschmidt 8192 Jan 8 13:36 ..
-rw-r--r-- 5 kschmidt 151 Nov 16 19:18 index.html
$ chmod 644 .plan
$ ls –o .plan
-rw-r--r-- 5 kschmidt 151 Nov 16 19:18 .plan
29/10/2015Tarea:Realizar ejemplo de cada uno de los comandos
chmod –modos simbólicos
Usado para colocar, agregar, o eliminar permisos
forma:[ugoa][+-=][rwx]
u – user g – group o – other a – all
+ agregar permisos - quitar permisos = colocar permisos
chmod ejemplos
$ ls -al foo
-rwxrwx--x 1 hollingd grads foo
$ chmod g-wx foo
$ ls -al foo
-rwxr----x 1 hollingd grads foo
$ chmod u-r .
$ ls
ls: .: Permission denied
Comandos para almacenar
tar
Crea un gran archivo a partir de muchosarchivos
gzip, gunzip
Utilidad de compreción de archivos
tar en Linux realiza una compression gzip con la opción z :
$ tar czf 571back.tgz CS571
$ tar xzf assn1.tgz
El Shell como interfaz de usuario
Un shell es un intérprete de commandos , una interfaz entre el humano (u otro programa) y el SO
Es, por si mismo, otro programa
Bourne-again Shell (bash)
Extension del shell Bourne Shell (sh)
Tiene mucho de las extensions del shell Korn (ksh)
Inicio de Sesión
Una vez logeado, el shell inicia y muestra el prompt. ($)
Al iniciar el shell busca archivos de configuración y personalización en home. Se puede cambiar el prompt, PATH, etc.
Personalización
parámetros.
Prompt de usuario
Dónde encontrar el correo
atajos
Se lo realiza en los archivos de inicio
Archivos de inicio
sh,ksh:
/etc/profile (predet del sistema)
~/.profile
bash:
~/.bash_profile
~/.bashrc
~/.bash_logout
csh:
~/.cshrc
~/.login
~/.logout
Logeo Incorrecto
Se recibe la petición de “Password:” aún si se usó un login erroneo
– Por qué?
Ingreso de commandos
El shell imprime el prompt y espera que se escriba un comando.
El primer element se espera sea el commando. Pueden ser:
Incorporados del shell - comandos que el shell interpreta directamente.
Programas externos (utilidades) –programas independientes en el disco (se busca en el orden especificado de las carpetas en $PATH)
Interpretar un Comando - type
Cuando se encuentra un comando, el shell:1. Busca por alias
2. Busca funciones definidas por el usuario
3. Busca si es incorporado
4. Busca utilidades en los directorios especificadosen $PATH
Se puede usar type para saber que usa el shell:type echo
echo is a shell builtin
type chmod
chmod is /bin/chmod
Opciones y argumentos
Forma estandarizada de los comandos:
comando opción(es) argumentos
Las opciones modifican la forma en la cual trabajaa un comando, frecuentemente un guión y una letra(puede combinarse luego del guión)
Des logearse
exit (commando incorporado)
Sale del shell
Si se está en el shell de login (nivelsuperior), nos desconecta del sistema
Al ser el shell un programa que se ejecuta, puede ser invocadorecursivamente
Standard I/O
Cuando se ingresa un commando, el shell crea un subshell para ejecutar el proceso o script.
El shell establece e canales I/O:
Entrada estándar (0) – teclado
Salida estándar (1) – pantalla
Error estándar (2) – pantalla
Esos flujos pueden ser redireccinados a y desde un archivo, o incluso a otro comando
Los programas y los I/O estandar
ProgramStandard Input
(STDIN)
Standard Output
(STDOUT)
Standard Error
(STDERR)
Terminar un flujo en la entrada estandar
Para indicar el fin de la entrada pulsar Ctrl-D (^D), que es la señal EOF de la línea, esto Cierra el flujo de entrada (stream).
El shell es un programa que lee desde la entrada estándar.
Qué sucede al pulsar ^D en el shell?
(Ver el comando set e ignoreeof)
Ejercicio: Crear Script y usar argumentos %0, %1, etc.
cat > prog1.sh
Lista comandos … ^D
chmod a+x *.sh
./prog1.sh o sh prog1.sh
Metacaracteres del Shell
Algunos caracteres tienen significadosespeciales para el shell: redirección I/O
< > |
comodines
* ? [ ]
otros
& ; $ ! \ ( ) space tab newline
Deben usarse junto con caracteres de escape o entre comillas para evitarcomportamientos indeseados
Comodines
* – iguala 0 o más caracteres
? – iguala exáctamente 1 caracter
[<list>] – iguala cualquier caracter dentro de la lista
Ej.
ls *.cc – lista todos los archivos fuente de C++ en la
carpeta
ls a* – lista todos los archivos que inician con ’a’
ls a*.jpeg – lista todos las fotos JPEGs que iniciancon ’a’
ls * - lista todo dentro de subdirectorios inclusive
Comodines …
ls file?
- busca file1, file2, pero no file ofile22
ls file?.*.DEL
- busca file1.h.DEL, file9.cc.DEL, file3..DEL pero no file8.DEL o file.html.DEL
Estas no son expresiones regulares!
4/11/2015
Comodines
[abc] iguala cualquiera de los caracteres
ls T[eE][sS][tT].doc
[a-z] iguala cualquier caracter en el rangols [a-zA-Z]*
[!abc…] iguala cualquier caracter except
aquellos en la lista.ls [!0-9]*
Variables de Shell
bash usa variables shell para almacenar información
Usadas para cambiar el comportamiento del shell y de otros programas
Podemos acceder a esas variables: Colocar nuevos valores para personalizar el
shell.
Ver el valor para ayudar a completar una tarea.
Cambiar/Ver las Variables
Para asignar (en sh, ksh, bash):VAR=algunaCadena
OTRA_VAR=“Con espacios”
Nota, no usar espacio alrededor de ‘=‘
Para ver :$ echo $VAR
algunaCadena
$ echo $OTRA_VAR
Con espacios
Variables del Shell
Algunas comunes:
PATH – lista de carpetas en donde buscar commandos que no son incorporados al shell
PS1 –prompt primario
USER – nombre del login del usuario
HOME – carpeta home del usuario
PWD – carpeta de trabajo actual
Otras importantes
SHELL – el shell del login
TERM – el tipo de terminal
HISTFILE – en donde se almacena el historial de comandos
EDITOR – mantiene el editor preferido del usuario
HOSTNAME – nombre de la máquina
SHELLOPTS – valor de varias opciones del shell (ver set incorporado del shell Bash)
Mostrar el valor de variables de Shell
Colocar el Prefijo "$“ a la variable.
El comando echo lo muestra:
$ echo $HOME
$ echo $PATH
Se puede usar estas variables en cualquier comando:
$ ls -al $HOME
Colocando valores en las variables Shell
Se usa un comando de asignaciónincorporado: set
HOME=/etc
PATH=/usr/bin:/usr/etc:/sbin
NEWVAR="blah blah blah"
Comando set
Sin argumentos imprime el listado de todas las variables de entorno.
Algunas opciones bash
noclobber – no permite que la redirecciónsobreescriba un archivo existente
ignoreeof – El Shell no sale con ctrl-D
vi – usa una interfaz de estilo vi (se usaemacs de forma predeterminada)
-n – ejecución en seco (solo ejecuta el parser, pero no lo ejecuta). Útil para depuración de scripts
Caracter de escape \
Usar backslash para inhibir el comportamiento especial de los siguientes caracteres :
$ echo $USER
hernan
$ echo \$USER
$USER
$ echo a\\b
a\b
Comillas dobles
Inhibe todos los comportamientos, excepto sustitución de variables, sustitución de comandos, y el caracterde escape \$ echo “$USER es $USER”
hernan es hernan
$ echo “\$USER es $USER”
$USER es hernan
$ echo “He dicho, \”Espera un
momento\””
He dicho, “Espera un momento”
Comillas simples
Inhibe casi todos los comportamientosespeciales
No puede contener una comilla simple
$ echo ‘he dicho “espera!”’
he dicho “espera!”
$ echo ‘Mi nombre es $USER’
Mi nombre es $USER
$ mv compuestoPorMozart
‘compuesto por – Mozart’
Filosofía Unix
La union de pequenas utileriasmediante entubamiento y redirecciónpara realizar fácilmente tareas no triviales
Ej., encontrar los 3 subdirectorios másgrandes:
$ du –s * | sort –nr | head -n3
120180 Files
22652 Zaychik
9472 tweedledee.tgz
Filosofía UnixEntubamiento y combinación con filtros
Conectar la salida de un comando a la entrada de otro para obtener filtroscompuestos
who | wc -l
ls | sort -f
ls -s | sort -n
ls -l | sort -nr -k4
ls -l | grep ‘^d’
Control de procesos
Los Procesos se ejecutan en un subshell (de forma predeterminada)
Los Subshell heredan las variables exportadas
Cada proceso tiene su ID (pid) y un padre (ppid)
Usar ps para verlos
$ ps
PID TTY TIME CMD
350 pts/4 00:00:00 bash
22251 pts/4 00:00:00 vim
22300 pts/4 00:00:00 ps
Control de procesos (cont.)
Usar la opción –f para un listado largo :
$ ps –fUID PID PPID C STIME TTY TIME CMD
hernan 350 349 0 10:06 pts/4 00:00:00 -bash
hernan 22251 350 0 17:32 pts/4 00:00:00 vim tarea
hernan 22437 350 0 17:36 pts/4 00:00:00 ps -f
Usar –e para listar los procesos de todos los usuarios.
$ ps –e | grep xmms
29940 pts/0 00:33:47 xmms
Matar un proceso
El comando kill envía una senal al proceso (al PID dado)
De forma predeterminada, envía TERM (terminate), el que solicita que finaliceel proceso, de tal manera se lo haga de forma limpia
usar -9 para enviar la senal KILL (no será ignorada), pero no de forma limpia
Ej:
$ kill -9 29940
Control de trabajo
El shell permite administrar trabajos(jobs)
Coloca los trabajos en Segundo plano(background)
mueve un trabajo a primer plano(foreground)
suspende un trabajo
Mata un trabajo
Trabajos a Segundo plano
Se lo hace colocando un "&“ al final de la línea de comando.
No se necesita esperar que se termine el trabajo, se puede escribir un Nuevo comandoinmediatamente.
Se puede tener un grupo de trabajos ejecutandoseal mismo momento.
Ej.ls -lR > /home/hernan/listadoTotal.txt &
Listar los trabajos
El comando jobs listará los trabajos en Segundo plano:
> jobs
[1] Running ls -lR >
listadoTotal.txt &
>
El shell asigna un número a cadatrabajo (en este caso 1).
Suspendiendo y Reanudando los trabajos en Segundo plano
Se puede suspender pulsando ^Z (Ctrl-Z). Suspendido significa que se detiene el trabajo, pero no
finaliza. El trabajo se mostrará en el listado obtenido con jobs.
Se usa fg y el número de trabajo, precedido por %. Sin un argumento, fg trae el ultimo trabajo al primer plano
$ jobs
[1] Stopped ls -lR > listadoTotal.txt &
$ fg %1
ls -lR > listadoTotal.txt
Colocar en el Segundo plano un trabajo suspendido
Si está en primer plano, se debe suspenderlo
Usar bg, tal como se lo hizo con fg,
para permitir que un trabajo suspendido continúe en el Segundo plano:$ bg %3
Finalizar un trabajo
Kill puede tomar un número de trabajo o incluso un nombre de trabajo, usando %:$ find . –name core\* -print >
archivosCore &
$ firefox&
$ jobs
[1]+ Running find . –name …
[2]+ Running firefox
$ kill %2
Editores de texto
Un editor de texto se usa para crear y modificar archivos.
Los más comunes son:
vi (también vim en Linux) $ vimtutor
emac
$ emacs
Entonces pulsar, ctrl-h t
VI comandos básicos:•cambiar de modo comando a modo insert: i• cambiar de modo insert a modo comando: Esc* Modo comando:
•hacia arriba k
•hacia abajo j•hacia la izquierda h•hacia la derecha l•grabar :wEnter (write)•salir sin grabar :q!Enter•deshacer u•rehacer Ctrl+r•escribir y salir :wqEnter• Eliminar linea dd• Salir grabando :x
Tarea: realizar un script llamado copiar.sh que pida unacarpeta de origen, un nombre de archivo, una carpeta de destino y un nombre de destino, realice la copia y finalmente muestre el contenido de forma paginada del archivo en cuestion.