La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Programación II Ing. Diego J. Arcusin 3 – Uso del Shell.

Presentaciones similares


Presentación del tema: "Programación II Ing. Diego J. Arcusin 3 – Uso del Shell."— Transcripción de la presentación:

1 Programación II Ing. Diego J. Arcusin info@digikol.com.ar 3 – Uso del Shell

2 Comandos En su forma más simple es una palabra aislada. Los terminadores de comandos indican al shell donde finaliza un comando. Nueva Línea ; & Precedencia de operadores | tiene mayor precedencia que ; No es lo mismo: date; who | wc que (date; who) | wc Los paréntesis se utilizan para agrupar comandos

3 Metacaracteres Conjunto de caracteres con propiedades especiales para el shell: > >> < | Para evitar que el Shell interprete los metacaracteres: Utilizar. Por ejemplo: $echo *** o anteponer una barra invertida antes de cada metacaracter. Por ejemplo: $echo \*\*\* Nota: Es posible usar comillas dobles pero el shell interpreta dentro de las mismas los caracteres $, `...` y \ * ? [abc] ; & \....

4 Metacaracteres (Cont.) Los delimitadores de un tipo protegen los delimitadores de otro tipo. Por ejemplo: $ echo se puede incluir aqui ? se puede incluir aqui ? $ No es necesario que los delimitadores encierren al argumento completo. Por ejemplo: $ echo x * y x * y $

5 Metacaracteres (Cont.) Las cadenas con delimitadores pueden contener caracteres de nueva línea. Por ejemplo: $ echo hola > mundo hola mundo La cadena > es el prompt secundario PS2 desplegado por el Shell cuando espera más entrada por parte del usuario. Una diagonal invertida al final de una línea hace que la línea continúe. Esta es la forma de presentar al Shell una línea larga $ echo abc\ > def\ > ghi abcdefghi $ El metacaracter # se utiliza para comentarios. El shell ignora todo a la derecha de # $ echo Hola #Mundo Hola $

6 Nuevos Comandos El Unix permite la creación de nuevos comandos con facilidad. Por ejemplo. Comando que indica cuantos usuarios hay logueados: $ echo who | wc –l > cuentausuarios $chmod +x cuentausuarios Si un archivo es ejecutable y contiene texto, entonces el shell supone que es un shell script (Archivo de comando de Shell) Este shell script también pudo ser ejecutado mediante: sh <cuentalineas, o sh cuentalineas En cualquiera de estos casos el script no requiere permisos de ejecución sino de lectura. El Shell crea un proceso hijo para su ejecución (llamado subshell)

7 Argumentos y Parámetros El Shell asigna a la variable $1 el valor del primer argumento recibido. Hace lo mismo para los siguientes argumentos con las variables $2... $9 La variable $* contiene a la totalidad de argumentos recibidos. $0 es el nombre del script que se está ejecutando. Por ejemplo el Script buscaperm. Busca todos los archivos pertenecientes que tengan los permisos especificados. find / -perm $1 –print Otro ejemplo. Script haceejecutable chmod +x $*

8 Salida como argumentos Mediante la utilización de las comillas invertidas `...` en un comando, se puede ejecutar otro comando y su salida será incluida en el primer comando. Por ejemplo: $echo la hora actual es `date` $haceejecutable `buscaperm 655`

9 Variables de Shell El shell permite la utilización de variables como la mayoría de los lenguajes de programación. Algunos variables ya vistas: $1, $PATH, $PS1 Para asignar una variable: VARIABLE=valor; Para referirse a una variable $VARIABLE Algunos ejemplo de asignación de variables: nombre=Diego directorio=´pwd´

10 Variables de Shell (cont.) El valor de las variables se asocia al shell que la crea y no se pasa directamente a los hijos del Shell. $x=hola $sh $echo $x $exit $echo $x hola $ Para permitir que una variable sea accesible desde un subshell se utiliza el comando export

11 Más comandos El comando set muestra todas las variables definidas por el usuario. El comando. permite la ejecución de un script en el Shell actual. tee – copia la entrada a un archivo (o archivos) y a la vez envía la entrada a la salida estándar time – Ejecuta un comando y despliega en el error estándar cuánto tardo dicho comando. pick – Presenta sus argumentos uno a la vez y pide confirmación. Su salida son aquellos donde se confirmó mediante un yes. sleep – espera un número especificado de segundos antes de terminar. Ejemplo Script alarma. Recibe 2 parámetros (Cant. Segundos y Texto a displayar). sleep $1 echo $2

12 Salida de Error Si bien, por default, la salida de error es direccionada a la terminal, también puede ser redireccionada. Para esto se utiliza: $comando 2> archivo En alguna situación, podría requerirse enviar la salida de error hacia el mismo flujo que la salida estándar. Para esto se puede utilizar: $comando 2> &1 Por ejemplo: $ time wc /etc/passwd > wc.out 2>&1 De la misma forma se puede direccionar la salida estandar a la salida de error mediante: 1> &2

13 Introducción a las Iteraciones For. Permite iterar con una lista de palabras. Sintaxis for var in lista de palabras do comandos done Ejemplos: for i in * (...) for i in $i (...) for i in ´cat archivo´ (...) for i in ´pick *´ (...) for i in 3 4 5 6; (...)

14 Juntándolo todo Ejemplo de un Script algo más complejo. ¿Qué hace este script? for i in ´pick *´ do echo ===================== echo Archivo: $i echo ===================== cat $i echo echo done

15 Preguntas ?

16 Ejercicios 3.1. suponiendo que hay 5 usuarios logueados. Cuál sería la salida de los siguientes comandos: $who; date | wc –l$(who; date) | wc -l 3.2. Desarrolle los siguientes comandos: snooze- Comando que a los 9 minutos displaye: Despertate!!! (Util para las clases teóricas de Programación II) restringe- Comando que quita todos los permisos al grupo y al mundo. 3.3. Qué diferencia hay entre los siguientes comandos (ejecutelos en /bin) $echo d*e 3.4. Para qué sirve la opción –n del echo ?

17 Ejercicios 3.5. Prediga que hará cada uno de los siguientes comandos: $grep \$$grep \.\ $grep \\$$grep \\\\ $grep \\ \ $ $grep \$ $grep \$$grep $ 3.6. ¿Cómo indicaría a grep que busque un patrón que empiece con - ? 3.7. Qué sucede con: $cat x y > y$cat x >> x 3.8. Si ejecuta: $rm * ¿Por qué rm no puede advertir al usuario que está por borrar todos sus archivos? 3.9. Qué ocurre si utiliza $10 como variable de Shell para que sea reemplazada por el argumento número de 10.

18 Ejercicios 3.10. Investigue cuantos de los comandos de /bin y /usr/bin son realmente archivos de Shell. ¿Cómo averiguarlo? 3.11. Ejecute: $`date` ¿Qué ocurre? 3.12. Qué diferencia hay entre: for i in * y for i in $* 3.13. Diseñe un programa que reciba una cadena arbitraria y realice una búsqueda de ese texto dentro de los nombre de los archivos del Home directory del usuario. 3.14. Describa tres formas de ejecutar un Shell Script. 3.15. Muestre los nombres y valores de todas las variables del Shell. 3.16. Modifique la variables PS1 de su.profile para que muestre su nombre de usuario y el directorio de trabajo.

19 Ejercicios 3.10. Desarrolle un Script que reciba un directorio como argumento y muestre el archivo más nuevo de dicho directorio. 3.17. Desarrolle un Script llamado agregapath que reciba n argumentos y los agregue a la variable $PATH. 3.18. Desarrolle un script llamado auditor. Este script recibe 2 argumentos: Un usuario y un directorio. El Script deberá encontrar todos los archivos pertenecientes al usuario especificados que contengan la palabra sexo y se encuentren dentro del directorio especificado (y sus subdirectorios).


Descargar ppt "Programación II Ing. Diego J. Arcusin 3 – Uso del Shell."

Presentaciones similares


Anuncios Google