escuela de informática y telecomunicaciones la shell bash
TRANSCRIPT
![Page 1: Escuela de Informática y Telecomunicaciones La Shell Bash](https://reader035.vdocuments.mx/reader035/viewer/2022081800/553200f5550346a85b8b49ef/html5/thumbnails/1.jpg)
Escuela deInformática y Telecomunicaciones
La Shell Bash
![Page 2: Escuela de Informática y Telecomunicaciones La Shell Bash](https://reader035.vdocuments.mx/reader035/viewer/2022081800/553200f5550346a85b8b49ef/html5/thumbnails/2.jpg)
Escuela deInformática y Telecomunicaciones
Capitulo 1
Introducción a Bash
![Page 3: Escuela de Informática y Telecomunicaciones La Shell Bash](https://reader035.vdocuments.mx/reader035/viewer/2022081800/553200f5550346a85b8b49ef/html5/thumbnails/3.jpg)
3© 2007 Cisco Systems, Inc. Todos los derechos reservados. Cisco Public
Escuela de Informática y Telecomunicaciones
Shell BashLa shell es lo que ve cuando abre una
terminal y lo que más usa para iniciar cada comando
Hay una variedad de shells disponibles, pero todas hacen los mismo:
–Escuchar comandos–Iniciar procesos–informar los resultados
![Page 4: Escuela de Informática y Telecomunicaciones La Shell Bash](https://reader035.vdocuments.mx/reader035/viewer/2022081800/553200f5550346a85b8b49ef/html5/thumbnails/4.jpg)
4© 2007 Cisco Systems, Inc. Todos los derechos reservados. Cisco Public
Escuela de Informática y Telecomunicaciones
Shell BashLa shell más utilizada en Linux es la shell
bash, la cual es la shell por defecto en Red Hat Enterprise Linux
La shell bash tiene capacidades de gran alcance para facilitar tareas complejas o incluso hacerlas posibles.
Está diseñada para 2 tipos diferentes de uso shell interactiva y script de shell
![Page 5: Escuela de Informática y Telecomunicaciones La Shell Bash](https://reader035.vdocuments.mx/reader035/viewer/2022081800/553200f5550346a85b8b49ef/html5/thumbnails/5.jpg)
5© 2007 Cisco Systems, Inc. Todos los derechos reservados. Cisco Public
Escuela de Informática y Telecomunicaciones
Shell interactiva Permite interactuar con el usuario
Repiten el ciclo de :–Escuchar una línea de comandos–Evalúa el comando solicitado–Realiza todas las acciones solicitadas –Muestra los resultados
La shell escucha al teclado de entrada y emplea la tecla de ENTER para reconocer el final de la entrada
![Page 6: Escuela de Informática y Telecomunicaciones La Shell Bash](https://reader035.vdocuments.mx/reader035/viewer/2022081800/553200f5550346a85b8b49ef/html5/thumbnails/6.jpg)
6© 2007 Cisco Systems, Inc. Todos los derechos reservados. Cisco Public
Escuela de Informática y Telecomunicaciones
Script de Shell Los scripts de la shell bash son programas
pequeños escritos mediante la misma sintaxis que se utiliza en la línea de comandos.
Permiten a los usuarios automatizar las acciones repetidas al combinar una serie de comandos
Ejecutan una serie de comandos en modo no interactivo
La shell bash provee una programación lógica (tales como ramas y bucles) para escribir scripts sofisticado
![Page 7: Escuela de Informática y Telecomunicaciones La Shell Bash](https://reader035.vdocuments.mx/reader035/viewer/2022081800/553200f5550346a85b8b49ef/html5/thumbnails/7.jpg)
7© 2007 Cisco Systems, Inc. Todos los derechos reservados. Cisco Public
Escuela de Informática y Telecomunicaciones
Shell de inicio Cada vez que alguien inicie sesión o abra una terminal,
una shell se inicia automáticamente
La shell es sólo "otro programa", nuevas shells pueden iniciarse desde la shell existente
La nueva shell se denomina subshell de la shell original
Cuando se sale de la subshell, el control vuelve a la shell original
![Page 8: Escuela de Informática y Telecomunicaciones La Shell Bash](https://reader035.vdocuments.mx/reader035/viewer/2022081800/553200f5550346a85b8b49ef/html5/thumbnails/8.jpg)
8© 2007 Cisco Systems, Inc. Todos los derechos reservados. Cisco Public
Escuela de Informática y Telecomunicaciones
El archivo ~/.bashrc Al iniciarse la shell bash busca en el
directorio de inicio del usuario un archivo titulado .bashrc
Los comandos listados en el archivo se ejecutan como si fueran escritos en la línea de comandos
![Page 9: Escuela de Informática y Telecomunicaciones La Shell Bash](https://reader035.vdocuments.mx/reader035/viewer/2022081800/553200f5550346a85b8b49ef/html5/thumbnails/9.jpg)
9© 2007 Cisco Systems, Inc. Todos los derechos reservados. Cisco Public
Escuela de Informática y Telecomunicaciones
Historial de comandos El comando shell bash mantiene el
historial de cada uno de los comandos escritos por el usuario
Ofrece varias formas para desplegar el historial
La más común es con el comando History
![Page 10: Escuela de Informática y Telecomunicaciones La Shell Bash](https://reader035.vdocuments.mx/reader035/viewer/2022081800/553200f5550346a85b8b49ef/html5/thumbnails/10.jpg)
10© 2007 Cisco Systems, Inc. Todos los derechos reservados. Cisco Public
Escuela de Informática y Telecomunicaciones
Sustitución de historial La shell bash también realiza "sustitución
de historial", la cual se desencadena por el signo de exclamación
![Page 11: Escuela de Informática y Telecomunicaciones La Shell Bash](https://reader035.vdocuments.mx/reader035/viewer/2022081800/553200f5550346a85b8b49ef/html5/thumbnails/11.jpg)
11© 2007 Cisco Systems, Inc. Todos los derechos reservados. Cisco Public
Escuela de Informática y Telecomunicaciones
Conservar el historial entre sesiones La shell bash conserva los historiales de
comandos entre sesiones en el archivo .bash_history en el directorio de inicio
Los comandos ejecutados en un proceso bash no están disponibles en el historial cuando se ejecutan más de un bash en forma simultanea
La última shell al salir sobrescribirá las historias de las shells que salieron anteriormente
![Page 12: Escuela de Informática y Telecomunicaciones La Shell Bash](https://reader035.vdocuments.mx/reader035/viewer/2022081800/553200f5550346a85b8b49ef/html5/thumbnails/12.jpg)
12© 2007 Cisco Systems, Inc. Todos los derechos reservados. Cisco Public
Escuela de Informática y Telecomunicaciones
Conservar el historial entre sesiones
![Page 13: Escuela de Informática y Telecomunicaciones La Shell Bash](https://reader035.vdocuments.mx/reader035/viewer/2022081800/553200f5550346a85b8b49ef/html5/thumbnails/13.jpg)
13© 2007 Cisco Systems, Inc. Todos los derechos reservados. Cisco Public
Escuela de Informática y Telecomunicaciones
Trucos del historial de comandos ESC-. y ALT-.
–El último simbolo de un comando suele representar el objeto que alguien está manipulando.
CTRL-R –Muestra los comando tecleados anteriormente
fc–Permite editar el comando con el editor vi
![Page 14: Escuela de Informática y Telecomunicaciones La Shell Bash](https://reader035.vdocuments.mx/reader035/viewer/2022081800/553200f5550346a85b8b49ef/html5/thumbnails/14.jpg)
Escuela deInformática y Telecomunicaciones
Capitulo 2
Listas de comandos y scripts
![Page 15: Escuela de Informática y Telecomunicaciones La Shell Bash](https://reader035.vdocuments.mx/reader035/viewer/2022081800/553200f5550346a85b8b49ef/html5/thumbnails/15.jpg)
15© 2007 Cisco Systems, Inc. Todos los derechos reservados. Cisco Public
Escuela de Informática y Telecomunicaciones
Ejecución de comandos Ejecución de comandos múltiples
–La shell bash permite a los usuarios unir comandos múltiples en una sola línea de comandos separando los comandos con un ;.
Ejecución de comandos en una subshell –Permite a los usuarios la fácil ejecución de comandos en una subshell, delimitando el comando entre paréntesis.
–Las subshells se utilizan para evitar efectos secundarios.
![Page 16: Escuela de Informática y Telecomunicaciones La Shell Bash](https://reader035.vdocuments.mx/reader035/viewer/2022081800/553200f5550346a85b8b49ef/html5/thumbnails/16.jpg)
16© 2007 Cisco Systems, Inc. Todos los derechos reservados. Cisco Public
Escuela de Informática y Telecomunicaciones
Ejecución de comandosEjemplo con subshell
Ejemplo sin subshell
[elvis@station elvis]$ (cd /etc/X11; ls)
[elvis@station elvis]$ bash [elvis@station elvis]$ cd /etc/X11; ls [elvis@station elvis]$ exit
![Page 17: Escuela de Informática y Telecomunicaciones La Shell Bash](https://reader035.vdocuments.mx/reader035/viewer/2022081800/553200f5550346a85b8b49ef/html5/thumbnails/17.jpg)
17© 2007 Cisco Systems, Inc. Todos los derechos reservados. Cisco Public
Escuela de Informática y Telecomunicaciones
Introducción a los scripts de shell Los comandos se envían a través de un
programa específico llamado intérprete, el cual ejecuta un comando a la vez.
Este intérprete suele ser la shell bash
![Page 18: Escuela de Informática y Telecomunicaciones La Shell Bash](https://reader035.vdocuments.mx/reader035/viewer/2022081800/553200f5550346a85b8b49ef/html5/thumbnails/18.jpg)
18© 2007 Cisco Systems, Inc. Todos los derechos reservados. Cisco Public
Escuela de Informática y Telecomunicaciones
Que se debe saber de los script de shell La primera línea de su script debe especificar a
qué intérprete enviar las instrucciones.
Se hace con una cadena especial llamada "shebang" y le sigue el interprete para el script –Ejemplo, para usar bash como su intérprete usted debería usar #!/bin/sh o #!/bin/bash.
–La mayoría de los scripts sólo usan #!/bin/sh.
![Page 19: Escuela de Informática y Telecomunicaciones La Shell Bash](https://reader035.vdocuments.mx/reader035/viewer/2022081800/553200f5550346a85b8b49ef/html5/thumbnails/19.jpg)
19© 2007 Cisco Systems, Inc. Todos los derechos reservados. Cisco Public
Escuela de Informática y Telecomunicaciones
Que se debe saber de los script de shell Antes de ejecutar un script, se debe habilitar el
permiso "ejecutable" en él (de lo contrario, es sólo un archivo de texto).
Por seguridad no se puede ejecutar el script en el directorio actual, ya que existen rutas de ejecución–Se pueden utilizar comodines relativos (~/foo.sh o ./foo.sh)
–colocar el script en un directorio que sea parte de su RUTA o crear una carpeta bin dentro del home
![Page 20: Escuela de Informática y Telecomunicaciones La Shell Bash](https://reader035.vdocuments.mx/reader035/viewer/2022081800/553200f5550346a85b8b49ef/html5/thumbnails/20.jpg)
20© 2007 Cisco Systems, Inc. Todos los derechos reservados. Cisco Public
Escuela de Informática y Telecomunicaciones
Ejemplo de script
![Page 21: Escuela de Informática y Telecomunicaciones La Shell Bash](https://reader035.vdocuments.mx/reader035/viewer/2022081800/553200f5550346a85b8b49ef/html5/thumbnails/21.jpg)
21© 2007 Cisco Systems, Inc. Todos los derechos reservados. Cisco Public
Escuela de Informática y Telecomunicaciones
Valores de retorno Cada proceso en Linux tiene un ciclo de vida
–los procesos comienzan a solicitud de otro proceso (a menudo shell).
–El proceso solicitado se denomina padre y el proceso recién nacido el hijo
–proceso hijo suele realizar sus deberes y luego muere
–Un proceso de salida deja atrás una pequeña parte de información cuando muere (retorno o estatus de salida)
–El proceso padre es responsable de reunir los valores de retorno de los hijos muertos
![Page 22: Escuela de Informática y Telecomunicaciones La Shell Bash](https://reader035.vdocuments.mx/reader035/viewer/2022081800/553200f5550346a85b8b49ef/html5/thumbnails/22.jpg)
22© 2007 Cisco Systems, Inc. Todos los derechos reservados. Cisco Public
Escuela de Informática y Telecomunicaciones
Valores de retorno
Los valores de retorno vienen en forma de enteros los cuales van de 0 a 255
Los programas pueden escoger libremente el valor al salir
Un programa devuelve en 0 para implicar "éxito"
Se almacena el valor de retorno del comando ejecutado anteriormente en una variable especial llamada ?–echo $?
![Page 23: Escuela de Informática y Telecomunicaciones La Shell Bash](https://reader035.vdocuments.mx/reader035/viewer/2022081800/553200f5550346a85b8b49ef/html5/thumbnails/23.jpg)
23© 2007 Cisco Systems, Inc. Todos los derechos reservados. Cisco Public
Escuela de Informática y Telecomunicaciones
Ejecución de comandos múltiples de modo condicional La shell bash usa &&y || para unir dos
comandos de modo condicional
Cuando los comandos se unen de este modo, el primero siempre se ejecutará.
El segundo comando puede que se ejecute o no dependiendo del valor de retorno del primer comando
![Page 24: Escuela de Informática y Telecomunicaciones La Shell Bash](https://reader035.vdocuments.mx/reader035/viewer/2022081800/553200f5550346a85b8b49ef/html5/thumbnails/24.jpg)
24© 2007 Cisco Systems, Inc. Todos los derechos reservados. Cisco Public
Escuela de Informática y Telecomunicaciones
Ejecución de comandos múltiples de modo condicional
Comando && (and)–En caso que el primer comando tenga éxito se ejecuta el siguiente comando
Comando || (or)–En caso que el primer comando fallara se ejecuta el siguiente
![Page 25: Escuela de Informática y Telecomunicaciones La Shell Bash](https://reader035.vdocuments.mx/reader035/viewer/2022081800/553200f5550346a85b8b49ef/html5/thumbnails/25.jpg)
Escuela deInformática y Telecomunicaciones
Capitulo 3
Variable de bash
![Page 26: Escuela de Informática y Telecomunicaciones La Shell Bash](https://reader035.vdocuments.mx/reader035/viewer/2022081800/553200f5550346a85b8b49ef/html5/thumbnails/26.jpg)
26© 2007 Cisco Systems, Inc. Todos los derechos reservados. Cisco Public
Escuela de Informática y Telecomunicaciones
Conceptos básicos de la variable de shell La shell bash le permite a los usuarios
establecer y hacer referencia a las variables de shell
Una variable de shell es simplemente un valor con nombre que la shell recuerda
Se pueden utilizar en comandos y scripts de shell y pueden también referenciarse en programas como opciones de configuración
Hay dos tipos de variables de shell: variables locales y variables de entorno
![Page 27: Escuela de Informática y Telecomunicaciones La Shell Bash](https://reader035.vdocuments.mx/reader035/viewer/2022081800/553200f5550346a85b8b49ef/html5/thumbnails/27.jpg)
27© 2007 Cisco Systems, Inc. Todos los derechos reservados. Cisco Public
Escuela de Informática y Telecomunicaciones
Variables locales
Existe solo dentro de la shell en la cual se crea Las shells hijas heredan las variables de entorno
como cuando se lanza una terminal después de iniciar sesión
Las variables se establecen y se configuran con una sintaxis VAR=valor y se referencian con una sintaxis $VAR.
La variable se referencia con el comando unset
![Page 28: Escuela de Informática y Telecomunicaciones La Shell Bash](https://reader035.vdocuments.mx/reader035/viewer/2022081800/553200f5550346a85b8b49ef/html5/thumbnails/28.jpg)
28© 2007 Cisco Systems, Inc. Todos los derechos reservados. Cisco Public
Escuela de Informática y Telecomunicaciones
Detalles de la variable de shell
Los nombres de variables pueden ser cualquier cadena de caracteres alfanuméricos (A-Z, a-z, 0-9), y el guión bajo (_)
No pueden comenzar por un número Distinguen mayúsculas de minúsculas Si quiere establecer una variable a un valor que
contenga espacios, debe incluir el valor entre comillas
Utilizar corchetes para delinear nombres de variable siempre es correcto
![Page 29: Escuela de Informática y Telecomunicaciones La Shell Bash](https://reader035.vdocuments.mx/reader035/viewer/2022081800/553200f5550346a85b8b49ef/html5/thumbnails/29.jpg)
29© 2007 Cisco Systems, Inc. Todos los derechos reservados. Cisco Public
Escuela de Informática y Telecomunicaciones
Variables de Bash
Variables Bash de sólo lectura
![Page 30: Escuela de Informática y Telecomunicaciones La Shell Bash](https://reader035.vdocuments.mx/reader035/viewer/2022081800/553200f5550346a85b8b49ef/html5/thumbnails/30.jpg)
30© 2007 Cisco Systems, Inc. Todos los derechos reservados. Cisco Public
Escuela de Informática y Telecomunicaciones
Variables de Bash
Variables Bash preasignadas
![Page 31: Escuela de Informática y Telecomunicaciones La Shell Bash](https://reader035.vdocuments.mx/reader035/viewer/2022081800/553200f5550346a85b8b49ef/html5/thumbnails/31.jpg)
31© 2007 Cisco Systems, Inc. Todos los derechos reservados. Cisco Public
Escuela de Informática y Telecomunicaciones
Variables de entorno
Una variable de shell se crea y luego la variable de shell es "promovida" a una variable de entorno mediante el comando export
![Page 32: Escuela de Informática y Telecomunicaciones La Shell Bash](https://reader035.vdocuments.mx/reader035/viewer/2022081800/553200f5550346a85b8b49ef/html5/thumbnails/32.jpg)
32© 2007 Cisco Systems, Inc. Todos los derechos reservados. Cisco Public
Escuela de Informática y Telecomunicaciones
Listado de variables El comando set, sin argumentos, lista las
variables de shell y las variables de entorno asociadas con la shell, mientras que el comando env, otra vez sin argumentos, lista sólo variables que han sido exportadas al entorno.
![Page 33: Escuela de Informática y Telecomunicaciones La Shell Bash](https://reader035.vdocuments.mx/reader035/viewer/2022081800/553200f5550346a85b8b49ef/html5/thumbnails/33.jpg)
33© 2007 Cisco Systems, Inc. Todos los derechos reservados. Cisco Public
Escuela de Informática y Telecomunicaciones
Variables de entorno más utilizadas
![Page 34: Escuela de Informática y Telecomunicaciones La Shell Bash](https://reader035.vdocuments.mx/reader035/viewer/2022081800/553200f5550346a85b8b49ef/html5/thumbnails/34.jpg)
34© 2007 Cisco Systems, Inc. Todos los derechos reservados. Cisco Public
Escuela de Informática y Telecomunicaciones
Variable PATH Cuando se ingresa un comando por la shell
bash la consola debe buscar el comando en el sistema
Si la búsqueda fuera completa demoraría mucho la consola
La variable de entorno PATH contiene una lista de directorios en los cuales deberían buscar los archivos ejecutables, separados por una coma
![Page 35: Escuela de Informática y Telecomunicaciones La Shell Bash](https://reader035.vdocuments.mx/reader035/viewer/2022081800/553200f5550346a85b8b49ef/html5/thumbnails/35.jpg)
Escuela deInformática y Telecomunicaciones
Capitulo 4
Expansión de la línea de comandos
![Page 36: Escuela de Informática y Telecomunicaciones La Shell Bash](https://reader035.vdocuments.mx/reader035/viewer/2022081800/553200f5550346a85b8b49ef/html5/thumbnails/36.jpg)
36© 2007 Cisco Systems, Inc. Todos los derechos reservados. Cisco Public
Escuela de Informática y Telecomunicaciones
Generalidades Antes de ejecutar un comando, la shell
bash ejecuta varias expansiones en la línea de comandos.
Varios tipos de expansiones de bash, tales como la expansón del nombre de ruta (comodín) y la expansión de variables ya se han descrito
![Page 37: Escuela de Informática y Telecomunicaciones La Shell Bash](https://reader035.vdocuments.mx/reader035/viewer/2022081800/553200f5550346a85b8b49ef/html5/thumbnails/37.jpg)
37© 2007 Cisco Systems, Inc. Todos los derechos reservados. Cisco Public
Escuela de Informática y Telecomunicaciones
Expansión de la línea de comandos
![Page 38: Escuela de Informática y Telecomunicaciones La Shell Bash](https://reader035.vdocuments.mx/reader035/viewer/2022081800/553200f5550346a85b8b49ef/html5/thumbnails/38.jpg)
38© 2007 Cisco Systems, Inc. Todos los derechos reservados. Cisco Public
Escuela de Informática y Telecomunicaciones
Expansión de llaves
La expansión de llaves expande una sola palabra en palabras múltiples
Sustituye uno de los elementos en "llave" para cada palabra.
Ejemplo–La expresión {c,b,r}at se expandiría en tres palabras cat bat rat
![Page 39: Escuela de Informática y Telecomunicaciones La Shell Bash](https://reader035.vdocuments.mx/reader035/viewer/2022081800/553200f5550346a85b8b49ef/html5/thumbnails/39.jpg)
39© 2007 Cisco Systems, Inc. Todos los derechos reservados. Cisco Public
Escuela de Informática y Telecomunicaciones
Expansión de llaves[prince@station prince]$ mkdir chap{01,02,03,04}
|-- chap01/
|-- chap02/
|-- chap03/
`-- chap04/
![Page 40: Escuela de Informática y Telecomunicaciones La Shell Bash](https://reader035.vdocuments.mx/reader035/viewer/2022081800/553200f5550346a85b8b49ef/html5/thumbnails/40.jpg)
40© 2007 Cisco Systems, Inc. Todos los derechos reservados. Cisco Public
Escuela de Informática y Telecomunicaciones
Expansión de llaves
[prince@station prince]$ mkdir chap{01,02}/{html,text}
|-- chap01/
| |-- html/
| `-- text/
|-- chap02/
| |-- html/
`-- text/
![Page 41: Escuela de Informática y Telecomunicaciones La Shell Bash](https://reader035.vdocuments.mx/reader035/viewer/2022081800/553200f5550346a85b8b49ef/html5/thumbnails/41.jpg)
41© 2007 Cisco Systems, Inc. Todos los derechos reservados. Cisco Public
Escuela de Informática y Telecomunicaciones
Expansión de tilde expande un ~nombredeusuario para el
usuario del directorio de inicio del nombredeusuario
![Page 42: Escuela de Informática y Telecomunicaciones La Shell Bash](https://reader035.vdocuments.mx/reader035/viewer/2022081800/553200f5550346a85b8b49ef/html5/thumbnails/42.jpg)
42© 2007 Cisco Systems, Inc. Todos los derechos reservados. Cisco Public
Escuela de Informática y Telecomunicaciones
Expansión aritmética
La shell bash trata de manera especial texto delimitado con una sintaxis $((...))
Las variables se tratan como enteros numéricos y los operadores matemáticos estándar como +, -, *, y / se tratan como tal.
La shell bash sólo soporta enteros aritméticos.
![Page 43: Escuela de Informática y Telecomunicaciones La Shell Bash](https://reader035.vdocuments.mx/reader035/viewer/2022081800/553200f5550346a85b8b49ef/html5/thumbnails/43.jpg)
43© 2007 Cisco Systems, Inc. Todos los derechos reservados. Cisco Public
Escuela de Informática y Telecomunicaciones
Sustitución de comandos
Permite a los usuarios ejecutar comandos arbitrarios en la subshell e incorporar los resultados dentro de la línea de comandos
La sintaxis de antigua era encerrar el comando entre "acentos graves"
La sintaxis más moderna similar a la expansión aritmética, pero con solo un par de paréntesis: $(subcomando)
![Page 44: Escuela de Informática y Telecomunicaciones La Shell Bash](https://reader035.vdocuments.mx/reader035/viewer/2022081800/553200f5550346a85b8b49ef/html5/thumbnails/44.jpg)
44© 2007 Cisco Systems, Inc. Todos los derechos reservados. Cisco Public
Escuela de Informática y Telecomunicaciones
Expansión de nombre de ruta
![Page 45: Escuela de Informática y Telecomunicaciones La Shell Bash](https://reader035.vdocuments.mx/reader035/viewer/2022081800/553200f5550346a85b8b49ef/html5/thumbnails/45.jpg)
45© 2007 Cisco Systems, Inc. Todos los derechos reservados. Cisco Public
Escuela de Informática y Telecomunicaciones
Comillas y caracteres de escape
La shell bash proporciona tres mecanismos para evitar que los caracteres sean interpretados por la shell, escapando, utilizando comillas dobles o sencillas.
![Page 46: Escuela de Informática y Telecomunicaciones La Shell Bash](https://reader035.vdocuments.mx/reader035/viewer/2022081800/553200f5550346a85b8b49ef/html5/thumbnails/46.jpg)
46© 2007 Cisco Systems, Inc. Todos los derechos reservados. Cisco Public
Escuela de Informática y Telecomunicaciones
Comillas y caracteres de escape
![Page 47: Escuela de Informática y Telecomunicaciones La Shell Bash](https://reader035.vdocuments.mx/reader035/viewer/2022081800/553200f5550346a85b8b49ef/html5/thumbnails/47.jpg)
47© 2007 Cisco Systems, Inc. Todos los derechos reservados. Cisco Public
Escuela de Informática y Telecomunicaciones
Comillas y caracteres de escape
Comillas dobles: "..."–Las comillas dobles se utilizan en situaciones donde usted desearía tratar la mayoría de la puntuación literalmente o combinar palabras en un sólo símbolo, pero aún puede hacer uso de variables, sustitución de comandos y sustitución de historial
Comillas sencillas inclinadas a la derecha (apóstrofes): '...'–Las comillas sencillas son las más poderosas y se utilizan en situaciones similares a las comillas dobles cuando quiere que toda la puntuación, incluyendo las variables y la sustitución de comandos, se traten literalmente.
![Page 48: Escuela de Informática y Telecomunicaciones La Shell Bash](https://reader035.vdocuments.mx/reader035/viewer/2022081800/553200f5550346a85b8b49ef/html5/thumbnails/48.jpg)
48© 2007 Cisco Systems, Inc. Todos los derechos reservados. Cisco Public
Escuela de Informática y Telecomunicaciones
Comillas y caracteres de escape
Comillas sencillas inclinadas hacia la izquierda (acentos graves): `...`
–Los acentos graves son básicamente diferentes a las comillas simples o dobles, no son para citar. Estos acentos se utilizan para invocar la sustitución de comandos en el texto incluido.
![Page 49: Escuela de Informática y Telecomunicaciones La Shell Bash](https://reader035.vdocuments.mx/reader035/viewer/2022081800/553200f5550346a85b8b49ef/html5/thumbnails/49.jpg)
49© 2007 Cisco Systems, Inc. Todos los derechos reservados. Cisco Public
Escuela de Informática y Telecomunicaciones
Otras expansionesExpansión de variables
–$VARNAME o ${VARNAME}
Expansión del historial
![Page 50: Escuela de Informática y Telecomunicaciones La Shell Bash](https://reader035.vdocuments.mx/reader035/viewer/2022081800/553200f5550346a85b8b49ef/html5/thumbnails/50.jpg)
Escuela deInformática y Telecomunicaciones
Capítulo 5
Personalización de la shell
![Page 51: Escuela de Informática y Telecomunicaciones La Shell Bash](https://reader035.vdocuments.mx/reader035/viewer/2022081800/553200f5550346a85b8b49ef/html5/thumbnails/51.jpg)
51© 2007 Cisco Systems, Inc. Todos los derechos reservados. Cisco Public
Escuela de Informática y Telecomunicaciones
Comandos internos de la shell
Al evaluar una línea de comandos, la shell trata la primera palabra como un comando.
La shell bash implementa algunos comandos de modo interno, lo que significa que los comandos no existen en el sistema de archivos como un programa cargable, sino que la shell misma los implementa.
Estos comandos se conocen como comandos internos de la shell.
Estos suelen ser comandos sencillos relacionados con cambios a la shell misma.
![Page 52: Escuela de Informática y Telecomunicaciones La Shell Bash](https://reader035.vdocuments.mx/reader035/viewer/2022081800/553200f5550346a85b8b49ef/html5/thumbnails/52.jpg)
52© 2007 Cisco Systems, Inc. Todos los derechos reservados. Cisco Public
Escuela de Informática y Telecomunicaciones
Comandos internos de la shellLos comandos internos al no ser parte de
un programa cargado, al consultar su origen no va a mostrar nada (which cd)
Un ejemplo de comando interno es el comando help
Otros comandos utilizados son: cd, pwd, echo
![Page 53: Escuela de Informática y Telecomunicaciones La Shell Bash](https://reader035.vdocuments.mx/reader035/viewer/2022081800/553200f5550346a85b8b49ef/html5/thumbnails/53.jpg)
53© 2007 Cisco Systems, Inc. Todos los derechos reservados. Cisco Public
Escuela de Informática y Telecomunicaciones
AliasLos alias permiten a los usuarios
personalizar los nombres de los comandos o enlazar comandos con las opciones o argumentos más utilizados.
Una vez creados, los alias se utilizan como si fueran cualquier otro comando.
![Page 54: Escuela de Informática y Telecomunicaciones La Shell Bash](https://reader035.vdocuments.mx/reader035/viewer/2022081800/553200f5550346a85b8b49ef/html5/thumbnails/54.jpg)
54© 2007 Cisco Systems, Inc. Todos los derechos reservados. Cisco Public
Escuela de Informática y Telecomunicaciones
Alias
Los alias se crean (y examinan) mediante el comando interno alias.–alias NAME=VALOR
Este comando crearía un alias denominado NOMBRE, el cual apuntaría al valor VALOR.
La asignación de alias no permite espacios en ningún lado del signo de igual
Las frases que contienen múltiples palabras (separadas por espacios) deben ir entre comillas
El comando alias también se utiliza para examinar los alias actualmente definidos.
![Page 55: Escuela de Informática y Telecomunicaciones La Shell Bash](https://reader035.vdocuments.mx/reader035/viewer/2022081800/553200f5550346a85b8b49ef/html5/thumbnails/55.jpg)
55© 2007 Cisco Systems, Inc. Todos los derechos reservados. Cisco Public
Escuela de Informática y Telecomunicaciones
unaliasLos alias se pueden suprimir con el
comando interno de la shell unalias.
Para suprimir un alias, pase el nombre de alias como un argumento al comando unalias
![Page 56: Escuela de Informática y Telecomunicaciones La Shell Bash](https://reader035.vdocuments.mx/reader035/viewer/2022081800/553200f5550346a85b8b49ef/html5/thumbnails/56.jpg)
56© 2007 Cisco Systems, Inc. Todos los derechos reservados. Cisco Public
Escuela de Informática y Telecomunicaciones
Evaluación de alias ¿Cuándo busca alias la shell de bash ?
Se busca alias en donde se espera un comando
Si la primera palabra es reconocida como un alias , el alias se expande
La excepción es si el alias se expande al comando que tiene el mismo nombre de alias en cuyo caso la shell simplemente ejecuta la expansión y sigue adelante
![Page 57: Escuela de Informática y Telecomunicaciones La Shell Bash](https://reader035.vdocuments.mx/reader035/viewer/2022081800/553200f5550346a85b8b49ef/html5/thumbnails/57.jpg)
57© 2007 Cisco Systems, Inc. Todos los derechos reservados. Cisco Public
Escuela de Informática y Telecomunicaciones
Algoritmo de Ejecución de comandos
1.Realiza cualquier expansión de la shell
2.¿La palabra se define como un alias? Si es así, expanda el alias y vuelva a comenzar (a menos que el alias se expanda a un comando que tenga el mismo nombre del alias en cuyo caso expande el alias y empieza de nuevo, pero no vuelve a expandir alias).
3.¿La palabra se define como una función de una shell? Si es así, llame la función de la shell en la shell actual, (las funciones de la shell van más allá del alcance de este curso, pero están incuídas aquí para completar la información).
4.¿La palabra es un comando intermo de la shell? Si es así, ejecute el comando interno.
5.¿La palabra contiene un /? Si es así, ejecute el archivo si existe y tiene permisos ejecutables.
6.Si la palabra no contiene un /, busque un archivo con un nombre similar en todos los directorios en orden como se definió en el entorno de variable PATH. Si existe un archivo coincidente y tiene permisos ejecutables, ejecute el archivo.
![Page 58: Escuela de Informática y Telecomunicaciones La Shell Bash](https://reader035.vdocuments.mx/reader035/viewer/2022081800/553200f5550346a85b8b49ef/html5/thumbnails/58.jpg)
58© 2007 Cisco Systems, Inc. Todos los derechos reservados. Cisco Public
Escuela de Informática y Telecomunicaciones
Personalizar el intérprete de comandos de bash
Escuchar Evaluar
Ejecutar
Interprete Primario PS1
Interprete Secundario PS2
¿Falta por ejecutar?
![Page 59: Escuela de Informática y Telecomunicaciones La Shell Bash](https://reader035.vdocuments.mx/reader035/viewer/2022081800/553200f5550346a85b8b49ef/html5/thumbnails/59.jpg)
59© 2007 Cisco Systems, Inc. Todos los derechos reservados. Cisco Public
Escuela de Informática y Telecomunicaciones
Personalización de PS1 y PS2
![Page 60: Escuela de Informática y Telecomunicaciones La Shell Bash](https://reader035.vdocuments.mx/reader035/viewer/2022081800/553200f5550346a85b8b49ef/html5/thumbnails/60.jpg)
60© 2007 Cisco Systems, Inc. Todos los derechos reservados. Cisco Public
Escuela de Informática y Telecomunicaciones
Personalización de PS1 y PS2
Secuencias de escape comunes utilizadas en intérpretes de comandos bash
![Page 61: Escuela de Informática y Telecomunicaciones La Shell Bash](https://reader035.vdocuments.mx/reader035/viewer/2022081800/553200f5550346a85b8b49ef/html5/thumbnails/61.jpg)
61© 2007 Cisco Systems, Inc. Todos los derechos reservados. Cisco Public
Escuela de Informática y Telecomunicaciones
Banderas de la shell: el comando interno setCuando se utiliza con la línea de
comandos, como suele ser el caso, el comando se utiliza para establecer, o anular las banderas de shell.
Cuando se llamado sin argumentos, el comando set visualiza todas las variables de shell y sus valores
![Page 62: Escuela de Informática y Telecomunicaciones La Shell Bash](https://reader035.vdocuments.mx/reader035/viewer/2022081800/553200f5550346a85b8b49ef/html5/thumbnails/62.jpg)
62© 2007 Cisco Systems, Inc. Todos los derechos reservados. Cisco Public
Escuela de Informática y Telecomunicaciones
Banderas de la shell: el comando interno set
![Page 63: Escuela de Informática y Telecomunicaciones La Shell Bash](https://reader035.vdocuments.mx/reader035/viewer/2022081800/553200f5550346a85b8b49ef/html5/thumbnails/63.jpg)
63© 2007 Cisco Systems, Inc. Todos los derechos reservados. Cisco Public
Escuela de Informática y Telecomunicaciones
Banderas de la shell: el comando interno set
El comando set con la sintaxis normal de las opciones (tal como set -x) habilita la bandera especificada. Para inhabilitar la bandera, remplace el guión (-) por un signo más (+) (tal como set +x).
![Page 64: Escuela de Informática y Telecomunicaciones La Shell Bash](https://reader035.vdocuments.mx/reader035/viewer/2022081800/553200f5550346a85b8b49ef/html5/thumbnails/64.jpg)
64© 2007 Cisco Systems, Inc. Todos los derechos reservados. Cisco Public
Escuela de Informática y Telecomunicaciones
Opciones de la shell: el comando interno shoptEl comando bash también tiene una
segunda serie de variables de configuración, las cuales se conocen como "opciones de shell“
Se establecen –shopt -s nombreopción
Se anulan–shopt -u nombreopción
![Page 65: Escuela de Informática y Telecomunicaciones La Shell Bash](https://reader035.vdocuments.mx/reader035/viewer/2022081800/553200f5550346a85b8b49ef/html5/thumbnails/65.jpg)
65© 2007 Cisco Systems, Inc. Todos los derechos reservados. Cisco Public
Escuela de Informática y Telecomunicaciones
Opciones de la shell: el comando interno shopt
El comando shopt nombreopción visualiza el estado actual de la opción
Solo shopt visualiza todas las opciones de la shell
![Page 66: Escuela de Informática y Telecomunicaciones La Shell Bash](https://reader035.vdocuments.mx/reader035/viewer/2022081800/553200f5550346a85b8b49ef/html5/thumbnails/66.jpg)
66© 2007 Cisco Systems, Inc. Todos los derechos reservados. Cisco Public
Escuela de Informática y Telecomunicaciones
Opciones de la shell: el comando interno shopt
![Page 67: Escuela de Informática y Telecomunicaciones La Shell Bash](https://reader035.vdocuments.mx/reader035/viewer/2022081800/553200f5550346a85b8b49ef/html5/thumbnails/67.jpg)
Escuela deInformática y Telecomunicaciones
Capítulo 6
Lectura de scripts de shell e inicialización de shell
![Page 68: Escuela de Informática y Telecomunicaciones La Shell Bash](https://reader035.vdocuments.mx/reader035/viewer/2022081800/553200f5550346a85b8b49ef/html5/thumbnails/68.jpg)
68© 2007 Cisco Systems, Inc. Todos los derechos reservados. Cisco Public
Escuela de Informática y Telecomunicaciones
Lectura de scriptsLa shell bash lee el archivo de script y lo
ejecuta como si ingresaran los comandos por teclado
La ejecución puede modificar las variables y configuraciones de la shell actual
![Page 69: Escuela de Informática y Telecomunicaciones La Shell Bash](https://reader035.vdocuments.mx/reader035/viewer/2022081800/553200f5550346a85b8b49ef/html5/thumbnails/69.jpg)
69© 2007 Cisco Systems, Inc. Todos los derechos reservados. Cisco Public
Escuela de Informática y Telecomunicaciones
Tipos de ShellLas shell se pueden diferenciar en 2
grupos–Shells diferenciadas por el tipo de inicio• Shell de inicio de sesión• Shell de no inicio o de inicio manual
–Shells diferenciadas por la interacción con el usuario• Shell interactiva• Shell no interactiva
![Page 70: Escuela de Informática y Telecomunicaciones La Shell Bash](https://reader035.vdocuments.mx/reader035/viewer/2022081800/553200f5550346a85b8b49ef/html5/thumbnails/70.jpg)
70© 2007 Cisco Systems, Inc. Todos los derechos reservados. Cisco Public
Escuela de Informática y Telecomunicaciones
Tipos de Shell
Shell de inicio de sesión–Shells que se accede al acceder a una consola virtual o maquina remota
–Primero se lee el archivo /etc/profile para inicializar variables de entorno
–Luego origina todos los archivos coincidentes al patrón /etc/profile.d/*.sh.
–Busca una serie de archivos en el directorio de inicio del usuario• ~/.bash_profile
–Busca y origina el archivo~/.bashrc
![Page 71: Escuela de Informática y Telecomunicaciones La Shell Bash](https://reader035.vdocuments.mx/reader035/viewer/2022081800/553200f5550346a85b8b49ef/html5/thumbnails/71.jpg)
71© 2007 Cisco Systems, Inc. Todos los derechos reservados. Cisco Public
Escuela de Informática y Telecomunicaciones
Tipos de Shell
Shells de no-inicio de sesión (interactivas)–El único archivo utilizado para personalizar shells de no-inicio de sesión es el archivo
~/.bashrc–También existe el archivo de configuración global en /etc/bashrc
Shells de no-inicio de sesión (no interactivas)–No leen por defecto ninguno de los archivos de arranque (aunque esta conducta puede
cambiarse estableciendo la variable de entorno BASH_ENV)
![Page 72: Escuela de Informática y Telecomunicaciones La Shell Bash](https://reader035.vdocuments.mx/reader035/viewer/2022081800/553200f5550346a85b8b49ef/html5/thumbnails/72.jpg)
72© 2007 Cisco Systems, Inc. Todos los derechos reservados. Cisco Public
Escuela de Informática y Telecomunicaciones
Archivos de configuración de arranque bash
![Page 73: Escuela de Informática y Telecomunicaciones La Shell Bash](https://reader035.vdocuments.mx/reader035/viewer/2022081800/553200f5550346a85b8b49ef/html5/thumbnails/73.jpg)
73© 2007 Cisco Systems, Inc. Todos los derechos reservados. Cisco Public
Escuela de Informática y Telecomunicaciones
¿Por qué hay de shells de inicio y no inicio de sesión? Al arrancar, los varios scripts de arranque
leídos por shells de inicio tienden a emplear mucho tiempo personalizando variables de entorno
Cuando las subsehells se inician, no se necesita repetir todo este trabajo.
Cuando un proceso hijo es generado por la shell de inicio de sesión, las variables de entorno se copian automáticamente en el hijo
![Page 74: Escuela de Informática y Telecomunicaciones La Shell Bash](https://reader035.vdocuments.mx/reader035/viewer/2022081800/553200f5550346a85b8b49ef/html5/thumbnails/74.jpg)
74© 2007 Cisco Systems, Inc. Todos los derechos reservados. Cisco Public
Escuela de Informática y Telecomunicaciones
¿Por qué hay de shells de inicio y no inicio de sesión?
Archivos de configuración de arranque bash
![Page 75: Escuela de Informática y Telecomunicaciones La Shell Bash](https://reader035.vdocuments.mx/reader035/viewer/2022081800/553200f5550346a85b8b49ef/html5/thumbnails/75.jpg)
75© 2007 Cisco Systems, Inc. Todos los derechos reservados. Cisco Public
Escuela de Informática y Telecomunicaciones
¿Por qué hay shells interactivas y no - interactivas?Las shells no-interactivas son shells
iniciadas como resultado de ejecutar un script
Con el fin de evitar posibles efectos secundarios del script de arranque, las shells no-interactivas no leen scripts de arranque tras el inicio.
![Page 76: Escuela de Informática y Telecomunicaciones La Shell Bash](https://reader035.vdocuments.mx/reader035/viewer/2022081800/553200f5550346a85b8b49ef/html5/thumbnails/76.jpg)
76© 2007 Cisco Systems, Inc. Todos los derechos reservados. Cisco Public
Escuela de Informática y Telecomunicaciones
Salida de las shells de inicio de sesión: ~/.bash_logoutTras la salida, las shells de inicio de
sesión leerán el archivo ~/.bash_logout si existe.
En RHEL el archivo simplemente ejecuta el comando clear para que la pantalla se limpie de información tras la salida.