Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Linux Basico 8
Linux Basico 8
TAKASHI SUGASAWA
LINUX Bsico
8. Shells(3) ndice
8.1 8.2 8.3 8.4 8.5 Introduccin a scripts de shell Redaccin de scripts de shell Programacin con control Procesos de scripts de shell Ajuste del ambiente del shell
LINUX Bsico (8. Shells(3)) 3
8.1(2) Un ejemplo de scripts de shell Ahora vamos a crear un script de shell donde que
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. whoami hostname primero teclee i, despus escriba el texto. pwd 4. Salga de vi guardando el archivo. teclee ESC, Z, Z
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 donde whoami hostname pwd 6. Agregue el permiso de ejecucin 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]$ ./donde usr000 el resultado del script de shell linuxpc /home/usr000 Si no sale as, chequee el contenido o los permisos del archivo.
8.1(3) Arranque de scripts de shell Podemos ejecutar un script de shell como sigue
tambin. bash <nombre_de_script>
[usr000@linuxpc[usr000@linuxpc usr000]$ ./donde usr000 linuxpc /home/usr000 igual [usr000@linuxpc usr000]$ bash donde usr000 linuxpc /home/usr000
8.1(4) Variedad de scripts de shell Cada shell (BASH, Shell Bourne, Shell C, tcsh, ...) tiene
su manera de descripcin 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.
#!/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 Bsico (8. Shells(3)) 10
11
echo "Su nombre del usuario es $variable1." echo "Ahora usted est en $variable2."
Sustitucin del variable
[usr000@linuxpc usr000]$ ./donde4 Su nombre del usuario es usr000. Ahora usted est en linuxpc:/home/usr000.
LINUX Bsico (8. Shells(3)) 12
[usr000@linuxpc usr000]$ ./quien Entrar de la teclado (+[Enter]) Nombre del usuario: usr000 usr000 Sugasawa Takashi
13
grep $1 /home/copropiedad/cuenta.txt
Esto es necesario.
$0: El nombre del comando. $*: Todos los parmetros. $#: El nmero de parmetros.
LINUX Bsico (8. Shells(3)) 14
Si el resultado del comando es 0, ... Si no, ... Todos los programas tienen su valor de resultado. Generalmente el valor 0 representa el estado de salida del programa con xito.
El estado de salida del comando ejecutado ltimamente, se puede saber con el variable "$?".
LINUX Bsico (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 -d FILE STR1 = STR2 STR1 != STR2 INT1 -eq INT2 INT1 -ne INT2 INT1 -gt INT2 INT1 -ge INT2 INT1 -lt INT2 INT1 -le INT2 cierto si existe el fichero FILE y es regular. cierto si el fichero FILE es un directorio. cierto si la cadena STR1 es igual a la cadena STR2. no es igual cierto si el nmero INT1 es igual al nmero INT2. no es igual mayor que mayor que o igual menor que menor que o igual
LINUX Bsico (8. Shells(3)) 16
[usr000@linuxpc usr000]$ cat quien3 #!/bin/bash # "quien3": Presenta quin es el usuario de su seleccin.
El nmero de parmetros. if test $# -ge 1 Si el nmero de parmetros es mayor o igual que 1, ...
then grep $1 /home/copropiedad/cuenta.txt else echo read grep fi [usr000@linuxpc usr000]$ ./quien3 usr000 usr000 Sugasawa Takashi [usr000@linuxpc usr000]$ ./quien3 Nombre del usuario: usr000 usr000 Sugasawa Takashi -n "Nombre del usuario: " usuario $usuario /home/copropiedad/cuenta.txt
17
for i in $* Todos los parmetros. do ... por ejemplo, si hay 3 palabras, $i se repite 3 veces. ... done Podemos acceder cada palabra as.
18
[usr000@linuxpc usr000]$ cat quien4 #!/bin/bash # "quien4": Presenta quin es el usuario de su seleccin. if test $# -ge 1 then for i in $* do grep $i /home/copropiedad/cuenta.txt done else echo -n "Nombre del usuario: " read usuario grep $usuario /home/copropiedad/cuenta.txt fi [usr000@linuxpc usr000]$ ./quien4 Nombre del usuario: usr000 usr000 Sugasawa Takashi [usr000@linuxpc usr000]$ ./quien4 usr000 usr000 Sugasawa Takashi [usr000@linuxpc usr000]$ ./quien4 usr000 usr001 usr000 Sugasawa Takashi usr001 Acosta Alonzo Jessica Elizabeth
LINUX Bsico (8. Shells(3)) 19
21
Proceso de Shell
22
Al hacer logout, se ejecuta. Al hacer login, se ejecutan. Cuando el bash inicia como un shell interactivo, se ejecuta.
LINUX Bsico (8. Shells(3)) 23
Ejemplo de .bashrc
[usr001@linuxpc ~]$ cat ~/.bashrc # .bashrc # User specific aliases and functions # Source global definitions if [ -f /etc/bashrc ]; then . /etc/bashrc fi umask 022 PS1="[\u@\h \w]\$ " alias ll='ls -l' alias la='ls -a' Asigna el valor del umask. Cambia el formato del indicador del shell. Definen alias del comando
Los cambios van a tener su efecto, cuando se inicia el shell la prxima vez. Tenemos que chequear el archivo antes de rehacer Login.
LINUX Bsico (8. Shells(3)) 24
25