Shell
description
Transcript of Shell
ShellARISO 2
Escola Tècnica Superior d’Enginyeria de Telecomunicació de Barcelona(Universitat Politècnica de Catalunya)
Esta obra está bajo una licencia Reconocimiento-No comercial-Compartir bajo la misma licencia 2.5 España de Creative Commons. Para ver una copia de esta licencia, visite:
http://creativecommons.org/licenses/by-nc-sa/2.5/es/
o envíe una carta a:Creative Commons, 559 Nathan Abbott Way, Stanford,California 94305, USA.
Licencia Creative Commons
Eres libre de: copiar, distribuir y comunicar públicamente la obra hacer obras derivadas
Bajo las condiciones siguientes: Atribución. Debes reconocer la autoría de la obra en los términos especificados por el
propio autor o licenciante. No comercial. No puedes utilizar esta obra para fines comerciales. Licenciamiento Recíproco. Si alteras, transformas o creas una obra a partir de esta obra,
solo podrás distribuir la obra resultante bajo una licencia igual a ésta. Al reutilizar o distribuir la obra, tienes que dejar bien claro los términos de la licencia de
esta obra. Alguna de estas condiciones puede no aplicarse si se obtiene el permiso del titular de
los derechos de autor
Advertencia: Los derechos derivados de usos legítimos u otras limitaciones reconocidas por ley no se
ven afectados por lo anterior. Esto es un resumen legible por humanos del texto legal (la licencia completa)
Licencia Creative Commons
ShellIntroducción
Que es el Shell? Interprete de comandos Aplicación que permite al usuario
interactuar con el sistema◦ Iniciar aplicaciones
Borrar un fichero …Matar una aplicación
Diferentes shells: sh, csh, ksh, zsh, bash
ShellFicheros
Ficheros Tira de bytes identificados por un nombre Los programas interpretan la semántica Tipos:
◦ Ficheros de datos Texto Bases de datos Ejecutables
◦ Dispositivos E/S (discos, terminales)◦ Canales de comunicación (pipes, sockets)◦ Directorios
Sistema Ficheros Organización en forma de árbol
/
bin etc tmp lib dev usr
profes
ariso2
rubenb
docs
F1.txt
F2.txt
practicas
proyectos
alumnes
Referencias a Ficheros El identificador del fichero (path)
◦ . directorio de trabajo◦ .. directorio padre◦ / directorio raíz
Tipo de referencias:◦ Absoluta: desde la raíz◦ Relativa: desde el directorio de trabajo
ShellComandos básicos
Comandos man COMANDO
◦ Información extensa sobre todo el sistema Llamadas a sistema Comandos Librerías Programas de usuario
whatis COMANDO◦ Descripción de un comando
apropos keyword◦ Buscador
Comandos Directorios:
◦ ls◦ mkdir <dir>◦ rmdir <dir>◦ cd <dir>◦ pwd
Ficheros:◦ cp <src> <dst>◦ mv <src> <dst>◦ rm <src>
Comandos Filtros:
◦ cat◦ more◦ head◦ tail◦ sort◦ grep
Otros:◦ chmod◦ echo◦ clear◦ vi, vim, joe, emacs, nedit◦ logout
ShellAmpliación de comandos
Metacarácteres Herramienta del Shell para designar
conjuntos de ficheros Expresiones regulares
Metacarácter
Descripción
* Secuencia de caracteres (de 0 a n)
? Cualquier carácter (1)
[-] Carácter en un rango ([abcd] [a-f])
Redirección de E/S Los procesos tienen 3 canales de e/s por
defecto:◦ Canal 0: Entrada estándar (teclado)◦ Canal 1: Salida estándar (pantalla)◦ Canal 2: Salida error estándar (pantalla)
La redirección supone cambiar estos canales por otros ficheros◦ program > file◦ program < file◦ program &> file◦ program >> file
Redirección de E/S Redirección entre canales de procesos:
PIPES◦ program1 | program2
◦ canal 0 del program2 recibe canal 1 del program1
program1 program2
ShellShellscripts
Shellscript Lenguaje de programación que usa el shell
como base◦ Permite ejecutar todos los comandos shell◦ Permite usar variables◦ Permite usar control de flujo (bucles,
condicionales)◦ Paso de parámetros
#!/bin/bash
Shellscript Variables
◦ Declaración y asignación de valores: var=“valor” var=“$var”valor var2=10 var2=$var2+10
Parámetros◦ $# Número de parámetros◦ $1 Valor del parámetro 1◦ $2 Valor del parámetro 2◦ …
Shellscript chmod u+x script test
◦ test 1 –ge 2◦ test 4 –ne 6◦ Sin prints, con valor de retorno
expr◦ expr 3 + 4◦ expr 3 \* 4◦ Imprime
echo◦ ’Valor $val’ Literal◦ "Valor $val" Sustitución de variables◦ `programa $val` Ejecución y sustitución
Shellscript: for
for var in listado
comando1comando2
done
Shellscript: for#!/bin/bashfor variable in ord*do echo "Fichero $variable" echo "Caracteres 1: `wc -c $variable`" echo "Caracteres 2: `cat $variable | wc -c`" echo "----------------------"done
Shellscript: if
if condición1then
comandos1
[ elif condición2then
comandos2 ]
[ else comandos3 ]
fi
Shellscript: if#!/bin/bashfor variable in ord*do echo "Fichero $variable" echo "Caracteres 1: `cat $variable | wc -c`" palabras=`cat $variable | wc -c` if test `expr $palabras % 2` -eq 0 then echo "PAR" else echo "IMPAR" fi echo "----------------------"done
Shellscript: while
while condición1do
comandos1
done
until condición2do
comandos2
done
Shellscript: while#!/bin/bashvar=10while test $var -gt 0do var=`expr $var - 1` echo "$var"done
#!/bin/bashvar=10until test $var -eq 0do #var=$var-1 var=`expr $var - 1` echo "$var"done
Shellscript: case
case palabra inpatrón1) comandos1 ;;patrón2) comandos2 ;;...patrónN) comandos3 ;;
esac
Shellscript: case#!/bin/bashcase $# in 0) echo "Sin argumentos: escriba algo mas" exit ;; 1) echo "1 argumento, OK" ;; *) echo "Demasiados argumentos: solo necesita uno" exit ;;esac
case $1 in dir) ls ;; cls) clear ;; *) echo "Comando no reconocido" ;;esac