Linux basico-8.PDF
Upcoming SlideShare
Loading in...5
×
 

Linux basico-8.PDF

on

  • 1,289 views

 

Statistics

Views

Total Views
1,289
Views on SlideShare
1,289
Embed Views
0

Actions

Likes
0
Downloads
33
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Linux basico-8.PDF Linux basico-8.PDF Presentation Transcript

  • LINUX Básico TAKASHI SUGASAWA LINUX Básico (8. Shells(3)) 1
  • Programa del curso 1. Introducción a LINUX 2. Operación básica de LINUX 3. Operación de archivos y directorios 4. Editor vi 5. Comprensión del sistema de ficheros 6. Shells(1) 7. Shells(2) 8. Shells(3) 9. Otros comandos LINUX Básico (8. Shells(3)) 2
  • LINUX Básico8. Shells(3) Índice 8.1 Introducción a scripts de shell 8.2 Redacción de scripts de shell 8.3 Programación con control 8.4 Procesos de scripts de shell 8.5 Ajuste del ambiente del shell LINUX Básico (8. Shells(3)) 3
  • 8.1 Introducción a scripts de shell(1) Comprensión de los scripts de shell • Normalmente escribimos los comandos en la terminal usando el teclado. • O sea los comandos pueden provenir de un archivo. • Un script de shell es una colección de uno o más comandos de shell en un archivo. • Para ejecutar los comandos en el script de shell, basta con escribir el nombre del archivo. • Las ventajas de scripts de shell son que: – No tiene que volver a escribir una secuencia de comandos. – Determina los pasos para llevar a cabo un objeto una vez. – Simplifica operaciones para usted mismo y para otros. LINUX Básico (8. Shells(3)) 4
  • 8.1(2) Un ejemplo de scripts de shell • Ahora vamos a crear un script de shell “donde” que ejecute 3 comandos “whoami”, “hostname”, “pwd” en secuencia. 1. Primero, confirme que está en el su directorio base.[usr000@linuxpc usr000]$ pwd/home/usr000 2. Inicie “vi” con el nombre del archivo, “vi donde”.[usr000@linuxpc usr000]$ vi donde 3. Escriba como siguiente en el “vi”.whoamihostname primero teclee “i”, después escriba el texto.pwd 4. Salga de “vi” guardando el archivo. teclee “ESC”, “Z”, “Z” LINUX Básico (8. Shells(3)) 5
  • 5. Confirme el existencia el archivo y su contenido.[usr000@linuxpc usr000]$ ls -l donde-rw-rw-r-- 1 usr000 usr000 20 sep 22 09:29 donde[usr000@linuxpc usr000]$ cat dondewhoamihostnamepwd 6. Agregue el permiso de ejecución al archivo.[usr000@linuxpc usr000]$ chmod +x donde[usr000@linuxpc usr000]$ ls -l donde-rwxrwxr-x 1 usr000 usr000 20 sep 22 09:29 donde 7. Ejecute el archivo.[usr000@linuxpc usr000]$ ./dondeusr000linuxpc el resultado del script de shell/home/usr000 Si no sale así, chequee el contenido o los permisos del archivo. LINUX Básico (8. Shells(3)) 6
  • 8.1(3) Arranque de scripts de shell• Podemos ejecutar un script de shell como sigue también. bash <nombre_de_script> [usr000@linuxpc[usr000@linuxpc usr000]$ ./donde usr000 linuxpc /home/usr000 igual [usr000@linuxpc usr000]$ bash donde usr000 linuxpc /home/usr000 En este caso, el permiso de ejecución no es necesario. [usr000@linuxpc usr000]$ chmod -x donde [usr000@linuxpc usr000]$ ls -l donde -rw-rw-r-- 1 usr000 usr000 20 sep 22 09:29 donde [usr000@linuxpc usr000]$ bash donde usr000 linuxpc /home/usr000 LINUX Básico (8. Shells(3)) 7
  • • El shell tiene opciones que son convenientes en el caso de la depuración. -x: El shell sale cada comando (detrás de un “+”) a stderr antes de ejecutarlo. -v: El shell sale sus entradas a stderr al captar los. -n: El shell solamente pasa los comandos, no ejecuta los. [usr000@linuxpc usr000]$ bash -x donde + whoami usr000 + hostname linuxpc + pwd /home/usr000 [usr000@linuxpc usr000]$ bash -nv donde whoami hostname pwd LINUX Básico (8. Shells(3)) 8
  • 8.1(4) Variedad de scripts de shell• Cada shell (BASH, Shell Bourne, Shell C, tcsh, ...) tiene su manera de descripción de scripts. BASH es el shell derivado de Shell Bourne. Por eso, BASH puede ejecutar los scripts de Shell Bourne. En este curso, aprendemos scripts de BASH. LINUX Básico (8. Shells(3)) 9
  • 8.2 Redacción de scripts de shell(1) Selección de shell que se arranca • La descripción como sigue en la cabeza del script, selecciona el tipo del shell que se arranca. #!/bin/bash nombre de ruta de acceso del shell Vamos a escribirlo como frase hecha, para definir el tipo del script de shell. [usr000@linuxpc usr000]$ cat donde2 #!/bin/bash whoami hostname pwd [usr000@linuxpc usr000]$ ./donde2 usr000 linuxpc /home/usr000 LINUX Básico (8. Shells(3)) 10
  • 8.2(2) Uso de comentarios • El signo “#” le indica al shell el principio de un comentario. Cada carácter a partir del signo “#” hasta el final de la línea es parte de ese comentario. • El shell ignora los comentarios. Un comentario es una nota para usted mismo o para cualquiera que lea el script. [usr000@linuxpc usr000]$ cat donde3 #!/bin/bash # Esto es un comentario. whoami # Esto es un comentario también. hostname pwd [usr000@linuxpc usr000]$ ./donde3 usr000 linuxpc /home/usr000 LINUX Básico (8. Shells(3)) 11
  • 8.2(3) Uso de variables • Variables son disponibles en scripts de shell: podemos asignar un valor a un variable y acceder el valor guardad en la variable. [usr000@linuxpc usr000]$ cat donde4 #!/bin/bash # "donde4": una prueba de script de shell variable1=`whoami` Asignación del valor al variable variable2=`hostname`:`pwd` echo "Su nombre del usuario es $variable1." echo "Ahora usted está en $variable2." Sustitución del variable [usr000@linuxpc usr000]$ ./donde4 Su nombre del usuario es usr000. Ahora usted está en linuxpc:/home/usr000. LINUX Básico (8. Shells(3)) 12
  • 8.2(4) Uso del comando “read” • El comando “read” toma la siguiente línea de entrada y la asigna a una variable.[usr000@linuxpc usr000]$ cat quien#!/bin/bash# "quien": Presenta quién es el usuario de su selección. Suprime aparteecho -n "Nombre del usuario: "read usuario Nombre de un variablegrep $usuario /home/copropiedad/cuenta.txt Sustitución del variable[usr000@linuxpc usr000]$ ./quienNombre del usuario: usr000 Entrar de la teclado (+[Enter])usr000 Sugasawa Takashi LINUX Básico (8. Shells(3)) 13
  • 8.2(5) Uso del parámetros de línea de comando • Podemos consultar los parámetros de línea de comando con los variables $1, $2, ..., $9.[usr000@linuxpc usr000]$ cat quien2#!/bin/bash# "quien2": Presenta quién es el usuario de su selección. Primer parámetrogrep $1 /home/copropiedad/cuenta.txt Esto es necesario.[usr000@linuxpc usr000]$ ./quien2 usr000usr000 Sugasawa Takashi $0 $1 $0: El nombre del comando. $*: Todos los parámetros. $#: El número de parámetros. LINUX Básico (8. Shells(3)) 14
  • 8.3 Programación con control(1) Uso de la estructura if • “if comando then ... else ... fi” es una estructura de decisión que le permite seleccionar uno de dos cursos de acción basados en el resultado de un comando. if comando Si el resultado del then comando es 0, ... ... Todos los programas tienen else Si no, ... su valor de resultado. ... Generalmente el valor 0 fi representa el estado de salida del programa con éxito. El estado de salida del comando ejecutado últimamente, se puede saber con el variable "$?". LINUX Básico (8. Shells(3)) 15
  • (40) test Regresa un estado de salida de cero cuando lo que se probó fue cierto. (ej.) test -f FILE1 test $variable1 = STR1 test $variable2 -lt 10-f FILE cierto si existe el fichero FILE y es regular.-d FILE cierto si el fichero FILE es un directorio.STR1 = STR2 cierto si la cadena STR1 es igual a la cadena STR2.STR1 != STR2 no es igualINT1 -eq INT2 cierto si el número INT1 es igual al número INT2.INT1 -ne INT2 no es igualINT1 -gt INT2 mayor queINT1 -ge INT2 mayor que o igualINT1 -lt INT2 menor queINT1 -le INT2 menor que o igual LINUX Básico (8. Shells(3)) 16
  • [usr000@linuxpc usr000]$ cat quien3#!/bin/bash# "quien3": Presenta quién es el usuario de su selección. El número de parámetros.if test $# -ge 1 Si el número de parámetros es mayor o igual que 1, ...then grep $1 /home/copropiedad/cuenta.txtelse echo -n "Nombre del usuario: " read usuario grep $usuario /home/copropiedad/cuenta.txtfi[usr000@linuxpc usr000]$ ./quien3 usr000usr000 Sugasawa Takashi[usr000@linuxpc usr000]$ ./quien3Nombre del usuario: usr000usr000 Sugasawa Takashi LINUX Básico (8. Shells(3)) 17
  • 8.3(2) Uso de la estructura for • “for nombre in palabras do... done” es una estructura iterativa.Un nombre del variable (ej.) $* *.txt a ab abc abcd `seq 1 10` for i in $* Todos los parámetros. do ... por ejemplo, $i si hay 3 palabras, ... se repite 3 veces. done Podemos acceder cada palabra así. LINUX Básico (8. Shells(3)) 18
  • [usr000@linuxpc usr000]$ cat quien4#!/bin/bash# "quien4": Presenta quién es el usuario de su selección.if test $# -ge 1then for i in $* do grep $i /home/copropiedad/cuenta.txt doneelse echo -n "Nombre del usuario: " read usuario grep $usuario /home/copropiedad/cuenta.txtfi[usr000@linuxpc usr000]$ ./quien4Nombre del usuario: usr000usr000 Sugasawa Takashi[usr000@linuxpc usr000]$ ./quien4 usr000usr000 Sugasawa Takashi[usr000@linuxpc usr000]$ ./quien4 usr000 usr001usr000 Sugasawa Takashiusr001 Acosta Alonzo Jessica Elizabeth LINUX Básico (8. Shells(3)) 19
  • 8.4 Procesos de scripts de shell Aquí hay un script de shell ... [usr000@linuxpc 8vo]$ cat ej_cd #!/bin/bash # "cd" en el script de shell echo -n "pwd: " pwd echo "cd /:" cd / En el script de shell, se ejecuta el comando "cd". echo -n "pwd: " pwd [usr000@linuxpc 8vo]$ pwd Antes de ejecutar el script /home/usr000/8vo En el script, se ejecuta el [usr000@linuxpc 8vo]$ ./ej_cd pwd: /home/usr000/8vo comando "cd", y ciertamente cd /: se ha cambiado el directorio pwd: / de trabajo actual. [usr000@linuxpc 8vo]$ pwd después de ejecutar el script /home/usr000/8vo pero, no se ha cambiado... LINUX Básico (8. Shells(3)) 20
  • • Normalmente el script de shell se ejecuta en el otro proceso.• Las operaciones en el una proceso no ejercen influencia sobre otros procesos. Proceso de Shell Proceso de otro shell ./ej_cd espera cd / LINUX Básico (8. Shells(3)) 21
  • • Utilizando el comando "source", se ejecuta el script de shell en el mismo proceso. [usr000@linuxpc 8vo]$ pwd ". ej_cd" también tiene /home/usr000/8vo mismo efecto. [usr000@linuxpc 8vo]$ source ej_cd pwd: /home/usr000/8vo cd /: pwd: / Proceso de [usr000@linuxpc /]$ pwd Shell / Esta vez, se ha cambiado el source ej_cd directorio de trabajo actual. cd / LINUX Básico (8. Shells(3)) 22
  • 8.5 Ajuste del ambiente del shell • Los cambios del ambiente del shell (umask, variables) no tienen su efecto después de la terminación del proceso. Al registrarse la próxima vez, tenemos que hacerlos otra vez. • Podemos escribirlos en el archivo “.bashrc” en el directorio base, que el bash ejecuta automáticamente al iniciar. [usr001@linuxpc usr001]$ ls -a ~ . .. .bash_history .bash_logout .bash_profile .bashrc .gtkrc Al hacer logout, se ejecuta. Al hacer login, se ejecutan. Cuando el bash inicia como un shell interactivo, se ejecuta. LINUX Básico (8. Shells(3)) 23
  • Ejemplo de “.bashrc”[usr001@linuxpc ~]$ cat ~/.bashrc# .bashrc# User specific aliases and functions# Source global definitionsif [ -f /etc/bashrc ]; then . /etc/bashrcfiumask 022 Asigna el valor del umask.PS1="[u@h w]$ " Cambia el formato del indicador del shell.alias ll=ls -l Definen alias del comandoalias la=ls -a Los cambios van a tener su efecto, cuando se inicia el shell la próxima vez. Tenemos que chequear el archivo antes de rehacer Login. LINUX Básico (8. Shells(3)) 24
  • ¡ Muchas gracias por su atención ! ¡ Hasta pronto ! LINUX Básico (8. Shells(3)) 25