Escuela deInformática y Telecomunicaciones
Unidad 3
La shell Bash
2© 2007 Cisco Systems, Inc. Todos los derechos reservados. Cisco Public
Escuela de Informática y Telecomunicaciones
Ejemplo 1 Inicie una subshell
Revise dentro de los procesos cuantas shell están iniciadas
[madonna@station madonna]$ bash
[madonna@station madonna]$ ps
PID TTY TIME CMD
9750 pts/5 00:00:00 bash
9786 pts/5 00:00:00 bash
9814 pts/5 00:00:00 ps
[madonna@station madonna]$ exit
exit
[madonna@station madonna]$
3© 2007 Cisco Systems, Inc. Todos los derechos reservados. Cisco Public
Escuela de Informática y Telecomunicaciones
Actividad 1Ejecute el Comando history
ComandoOrden del Comando
4© 2007 Cisco Systems, Inc. Todos los derechos reservados. Cisco Public
Escuela de Informática y Telecomunicaciones
Ejemplo 2
5© 2007 Cisco Systems, Inc. Todos los derechos reservados. Cisco Public
Escuela de Informática y Telecomunicaciones
Ejemplo 3
6© 2007 Cisco Systems, Inc. Todos los derechos reservados. Cisco Public
Escuela de Informática y Telecomunicaciones
Actividad 2Cree un directorio llamado bin
Quite los permisos al grupo propietario y a otros grupos
Mueva un archivo (ejemplo1.txt) al directorio bin
7© 2007 Cisco Systems, Inc. Todos los derechos reservados. Cisco Public
Escuela de Informática y Telecomunicaciones
Ejemplo 3 Inhibición del historial de comandos [madonna@station madonna]$ rm .bash_history
[madonna@station madonna]$ ln -s /dev/null .bash_history
[madonna@station madonna]$ ls -l .bash_history
lrwxrwxrwx 1 madonna madonna 9 Aug 26 16:35 .bash_history -> /dev/null
[madonna@station madonna]$ cat .bash_history
[madonna@station madonna]$
8© 2007 Cisco Systems, Inc. Todos los derechos reservados. Cisco Public
Escuela de Informática y Telecomunicaciones
Ejercicio 3 Use un editor de texto para modificar el
archivo .bashrc desde su directorio de inicio, agregando la siguiente línea al final del archivo.
– date >> .bash_timestamps Observe el archivo .bash_timestamps, y confirme si
se agrega una nueva marca de tiempo cada vez que inicia una nueva shell bash.
De nuevo, mediante un editor de texto, agregue una línea de comentario a su archivo .bashrc que describa brevemente por qué el comando de fecha fue agregado e incluya su nombre de usuario como la persona que hizo la modificación
Escuela deInformática y Telecomunicaciones
Capitulo 2
Listas de comandos y scripts
10© 2007 Cisco Systems, Inc. Todos los derechos reservados. Cisco Public
Escuela de Informática y Telecomunicaciones
Ejercicio 1Que diferencia tienen los siguientes
comandos
cd /dev/; ls –l; cat null
(cd /dev/; ls –l; cat null)
11© 2007 Cisco Systems, Inc. Todos los derechos reservados. Cisco Public
Escuela de Informática y Telecomunicaciones
Ejercicio 2Cree un archivo bash llamado ejemplo.sh
que muestre la hora y los usuarios que esté conectados
12© 2007 Cisco Systems, Inc. Todos los derechos reservados. Cisco Public
Escuela de Informática y Telecomunicaciones
Ejercicio 3 Agregue una línea al final del archivo
ejemplo.sh en su directorio de inicio. La línea debe ejecutar los comandos cd
/usr/nombre_usuario, ls –l nombre_archivo y en caso de existir el archivo desplegarlo
– nombre_usuario: Nombre del usuario que inicia la sesion
– Nombre_archivo: archivo de texto que se despliega al inicio de la shell. Se debe considerar que puede no existir.
Escuela deInformática y Telecomunicaciones
Capitulo 3
Variable de bash
14© 2007 Cisco Systems, Inc. Todos los derechos reservados. Cisco Public
Escuela de Informática y Telecomunicaciones
Ejercicio 1 Imprima la variable $LANG
Cambie su valor a de_DE y despliegue la fecha de hoy
Cambie su valor a es_ES y despliegue la fecha de hoy
¿Qué ocurre?
15© 2007 Cisco Systems, Inc. Todos los derechos reservados. Cisco Public
Escuela de Informática y Telecomunicaciones
Listado de variables
Lista las variables de entornos con set
Liste las variables exportado en env
16© 2007 Cisco Systems, Inc. Todos los derechos reservados. Cisco Public
Escuela de Informática y Telecomunicaciones
Ejercicio 2 Inicie sesión con un usuario (nero) Cree una variable llamada google
–google=www.google.cl
Inicie una subconsola y trate de acceder a la variable
Salga de la consola y exporte la variable (variable de entorno)
Inicie otra subconsola y trate de acceder a la variable de la siguiente forma–links $google
17© 2007 Cisco Systems, Inc. Todos los derechos reservados. Cisco Public
Escuela de Informática y Telecomunicaciones
Ejercicio 3
Tras el arranque, su shell debería crear la variable de shell CLICHE, la cual debería apuntar a la frase en inglés that is how the cookie crumbles. Asegúrese que la variable no se convierta en una variable de entorno.
Tras el arranque, su shell debe redirigir la salida del comando date al archivo en su directorio de inicio titulado ppid_is_my_parent, en donde ppid es remplazado por su id del proceso padre de shell (almacenado en la variable de shell PPID).
Escuela deInformática y Telecomunicaciones
Capitulo 4
Expansión de la línea de comandos
19© 2007 Cisco Systems, Inc. Todos los derechos reservados. Cisco Public
Escuela de Informática y Telecomunicaciones
Ejemplo 1Ejemplo de expansión de la línea de
comandos–find /etc -name *.txt–touch a.txt b.txt–find /etc -name *.txt–find /etc -name “*.txt”
20© 2007 Cisco Systems, Inc. Todos los derechos reservados. Cisco Public
Escuela de Informática y Telecomunicaciones
Ejemplo 2
[prince@station prince]$ mkdir ogg
[prince@station prince]$ mkdir ogg/{blues,folk}
[prince@station prince]$ touch ogg/{blues,folk}/playlist
21© 2007 Cisco Systems, Inc. Todos los derechos reservados. Cisco Public
Escuela de Informática y Telecomunicaciones
Ejercicios 11. Configure su archivo ~/.bashrc para que, tras el arranque, la
variable LINUX_VERS contenga toda la primera línea del archivo /var/log/dmesg, (el archivo /var/log/dmesg se regenera cada vez que se arranca la máquina, por lo que deberá establecer la variable de modo dinámico. Recuerde que el comando head -1 mostrará la primera línea del archivo).
2. En su directorio de inicio, cree archivos con los sigu¡entes nombres de archivo, (el contenido de los archivos es irrelevante).
a. archivo sin títulob. **'s y ||'sc. >> README!! <<
22© 2007 Cisco Systems, Inc. Todos los derechos reservados. Cisco Public
Escuela de Informática y Telecomunicaciones
Ejercicios 2
En su directorio de inicio, cree un subdirectorio denominado shirts. Dentro del subdirectorio, cree 108 archivos de la forma estilo.tamaño.color.ext, donde cada archivo contenga una combinación de valores a partir del cuadro siguiente
Por ejemplo, el directorio debería contener archivos titulados tee.XXL.red.info, tee.XXL.red.inv, tee.XL.red.info, tee.XL.red.inv y así sucesivamente.
Escuela deInformática y Telecomunicaciones
Capítulo 5
Personalización de la shell
24© 2007 Cisco Systems, Inc. Todos los derechos reservados. Cisco Public
Escuela de Informática y Telecomunicaciones
Ejemplo 1 Which ps
–/bin/ps
Which cd
cd –help
help
help cd
25© 2007 Cisco Systems, Inc. Todos los derechos reservados. Cisco Public
Escuela de Informática y Telecomunicaciones
Ejemplo 2
26© 2007 Cisco Systems, Inc. Todos los derechos reservados. Cisco Public
Escuela de Informática y Telecomunicaciones
Ejemplo 3
set -x
27© 2007 Cisco Systems, Inc. Todos los derechos reservados. Cisco Public
Escuela de Informática y Telecomunicaciones
Ejercicio 1
Edite su archivo ~/.bashrc para que las shells bash recién creadas tengan las siguientes propiedades.
1. El alias dir ejecuta el comando ls -l.
2. El alias globoff inhabilita la expansión de nombre de ruta (habilitando la bandera de shell apropiada).
3. El alias complementario globon habilita la expansión del nombre de ruta (inhabilitando la bandera de shell apropiada).
4. La shell tiene la opción de shell cdspell habilitada.
Escuela deInformática y Telecomunicaciones
Capítulo 6
Lectura de scripts de shell e inicialización de shell
29© 2007 Cisco Systems, Inc. Todos los derechos reservados. Cisco Public
Escuela de Informática y Telecomunicaciones
Ejercicio 1
Utilizando los siguientes caracteres
30© 2007 Cisco Systems, Inc. Todos los derechos reservados. Cisco Public
Escuela de Informática y Telecomunicaciones
Ejercicio 1Modifique la variable PS1 para que tenga
las siguientes salidas1. ¿Qué hay de nuevo viejo?
2. [user@localhost dir actual]$
3. [user@localhost Fecha actual]$
31© 2007 Cisco Systems, Inc. Todos los derechos reservados. Cisco Public
Escuela de Informática y Telecomunicaciones
Ejemplo Existen más de una opción de utilizar el
comando su–Su nombre usuario (no inicio)–Su – nombre usuario (inicio)
Para Nero
Vaya al archivo ~/bash_profile y agregue al final “echo bash_profile “
Vaya al archivo ~/.bashrc y agregue al final “echo .bashrc “