Laboratorio2-Programación bajo plataformas abiertas Profesor

Anuncio
Laboratorio2-Programación bajo plataformas abiertas
Profesor Francisco Siles
Estudiante Juan Orozco Villalobos-B14801
100
1.Usando comandos conocidos, explore las funciones de autocompletado, historial y búsqueda de
comandos del shell, así como las distintas formas de indicar nombre de archivos y directorios.
Hecho
2. Explore el funcionamiento de las variables de entorno. Ejecute los siguientes comandos:
$ echo $SALUDO
$ SALUDO=hola
$ echo $SALUDO
$ bash
$ echo $SALUDO
$ exit
$ export SALUDO=hola
$ bash
$ echo $SALUDO
$ exit
¿Qué sucede en cada caso? ¿Cuándo no funciona el comando echo y por qué?
root@localhost:/home/juan# echo $SALUDO **No emite respuesta, SALUDO no tiene ningún valor declarado
root@localhost:/home/juan# SALUDO=hola **Le asigna a la variable SALUDO el valor de “hola”
root@localhost:/home/juan# echo $SALUDO **Al usar echo en SALUDO, imprime el valor que se le asignó,osea “hola”
hola ** Impresión del hola
root@localhost:/home/juan# bash **Crea una “sub-sesión “ en la terminal
root@localhost:/home/juan# echo $SALUDO **Al suar echo en SALUDO no se imprime nada por que en esta sesión
SALUDO no tiene valor alguno asignado.
root@localhost:/home/juan# exit **Salir de la sub-sesión
exit **Salir de la sub-sesión
root@localhost:/home/juan# export SALUDO=hola **Exporta el valor de hola desde la sesión principal, dejando que otras
sub-sesiones puedan usar el SALUDO con el valor que se le asignó
root@localhost:/home/juan# bash **Crea una “sub-sesión “ en la terminal
root@localhost:/home/juan# echo $SALUDO **Al usar echo en SALUDO, imprime el valor que se le asignó,osea “hola”,
dado que fue previamente exportado desde la sesión principal.
hola ** Impresión del hola
root@localhost:/home/juan# exit **Salir de la sub-sesión
exit **Salir de la sub-sesión
3.Declare algunas variables usando el comando export. Verifique que la declaración haya sido exitosa
usando printenv. ¿Qué sucede con las variables declaradas si cierra la sesión y la inicia de nuevo?
Se le asignó usando el comando export a A el valor de Avión, a B el de Barco y a C el de Carro, cuando
se cerró la sesión y se volvió a iniciar, se usó el comando echo en A, (echo A),y dio como salida una
letra “A”, sucedió de forma análoga en B y en C, por lo que se concluye que al cerrar la sesión se
borran todas los valores que se le asignaron a las distintas variables y se reinician a su valor original.
Cuando se usa el comando printenv A B C devuelve:
juan@localhost:~$ printenv A B C
juan@localhost:~$
4.Declare algunas variables usando export, pero esta vez editando el archivo ~/.bashrc (archivo de
configuración de bash para el usuario). Cierre la sesión e ingrese de nuevo. ¿Qué sucede ahora con las
variables?
Ésta vez, al modificar el archivo ~/.bashrc asignándole a las variables A,B y C los mismos valores que
en el caso anterior, cerrando sesión y volviendo a la terminal, al ejecutar el comando printenv AB C me
devuelve:
juan@localhost:~$ printenv A B C
Avion
Barco
Carro
Esto sucede por que el archivo ~/.bashrc se ejecuta cada vez que se llama al bash, por lo tanto, las
variables que estén allí declaradas se harán efectivas una vez se use el bash, independientemente si se
cierra la sesión, por que el archivo no se vuelve a su estado original.
5.Explore las redirecciones de entrada y salida y las tuberías usando los siguientes comandos (si tiene
dudas sobre
lo que hace alguno de los comandos, consulte la página de manual):
$ date > fecha.txt
$ date >> fecha.txt
$ ls -l /etc/ > dir.txt
$ ls -l /bin/ > dir.txt
$ echo Hola Mundo! > hola.txt
$ gzip < /etc/passwd > passwd.gz
$ gzip -dc passwd.gz | less
$ apt-cache search text editor | less
$ cat /etc/passwd | grep root
$ cat /usr/share/doc/gcc/copyright | wc
$ ls -l /etc/ | tee ls.txt
¿Qué sucede en cada caso? ¿Qué función cumple la redirección o tubería?
date > fecha.txt: Me crea en el directorio que estoy un archivo llamado fecha.txt en el que están los
datos que el comando date devuelve, que es la fecha y hora actuales
date >> fecha.txt: Escribe dentro del archivo que ya existía (fecha.txt) de nuevo la fecha, pero no borra
las anteriores, por lo que se deduce que al poner un > se crea un archivo o se sobreescribe borrando su
contenido y reemplazandolo por uno nuevo, pero si se usa el >> se edita el que esta ya creado, tomando
en cuenta el que estaba conservando lo que contenía y sumando el nuevo dato.
$ ls -l /etc/ > dir.txt: Crea un archivo en el directorio en el que se está llamado dir.txt, en el que se
escribe la salida del comando ls -l /etc/, que es el contenido del directorio etc.
$ ls -l /bin/ > dir.txt: Modifica el archivo dir.txt para que su nuevo contenido sea la salida de ls -l /bin/,
que es la lista de lo que está en el directorio /bin/
$echo Hola Mundo! > hola.txt:Crea en el directorio en el que estoy un archivo de texto que se llama
hola.txt, cuyo contenido es la frase “Hola Mundo!”
$ gzip < /etc/passwd > passwd.gz: Crea en el directorio en el que nos encontramos un archivo .gz
llamado passwd.gz, que contiene el archivo passwd.
$ gzip -dc passwd.gz | less: Imprime el contenido del archivo comprimido passwd.gz, lo que hace es
que descomprime el contenido y mediante el pipe lo envia a less, que imprime el texto del archivo en
pantalla
$ apt-cache search text editor | less: Imprime el contenido de la búsqueda que hace apt-cache sobre
editores de texto, el pipe liga el resultado de la búsqueda a less, que es un comando de impresión en
pantalla.
$ cat /etc/passwd | grep root: Usamos cat para ver el contenido de un archivo, y grep root para buscar
archivos que contengan la palabra root, en este caso el pipe sirve para imprimir con el cat el resultado
de la busqueda de lo que contenga root,
juan@localhost:~$ cat /etc/passwd | grep root
root:x:0:0:root:/root:/bin/bash
$ cat /usr/share/doc/gcc/copyright | wc: wc sirve para saber cuantas palabras componen un archivo,
mediante el pipe le asignamos eso al contenido de …/copyright, la impresión en la terminal es:
juan@localhost:~$ cat /usr/share/doc/gcc/copyright | wc
42 330 2207
$ ls -l /etc/ | tee ls.txt:Con tee es posible almacenar la salida estándar de un programa, en este caso el
pipe se usa para aplicar el tee a el ls -l /etc/, mientras se guarda en ls.txt y se imprime en la pantalla.
Segunda Parte: Programación de tareas con cron
1. Edite el crontab del usuario y agregue el comando
date >> /tmp/date
para que sea ejecutado cada minuto. Espere un par de minutos y compruebe que la acción se haya
efectuado correctamente.
Se usa el comando crontab -e para abrir el archivo en el que se tiene que modificar, y se escribe:
* * * * * date >> /tmp/date
Esto nos muestra en la pantalla cada minuto:
dom mar 25 10:22:31 CST 2012
dom mar 25 10:23:31 CST 2012
dom mar 25 10:24:31 CST 2012
2. Edite el crontab del sistema y agregue el comando que se muestra a continuación para que sea
ejecutado dentro de tres minutos (compruebe la hora del sistema usando el comando date) y todos los
demás días jueves de cada semana a la misma hora. El comando debe ser ejecutado por el usuario root:
echo "Esto es una prueba" > /root/prueba
Espere y compruebe su funcionamiento.
Se usa crontab -e para editar, y se escribe:
03 22* *4 echo “Esto es una prueba” > /root/prueba
Esto nos mostrara todos los jueves cada tres minutos la frase “Esto es una prueba” luego de las 10 de la
noche.
Descargar