Está en la página 1de 7

UNMSM

Laboratorio de Sistemas Operativos

Fac de Ingeniera de Sistema e Informtica

Gua de Laboratorio

Gua 01: Bash


Objetivo

Aprender a desenvolverse dentro de la terminal de una distribucin de


Linux. Aprender a desarrollar scripts que automaticen la labores de
administracin de un sistema operativo.

Objetivos Especficos

Comandos bsicos para el tratamiento de ficheros y directorios

El shell BASH, variables y sentencias de control bsicas

Automatizar tareas de administracin del sistema operativo

Desarrollo de la Prctica

3.1

Comandos bsicos para el tratamiento de ficheros.

En toda la familia UNIX existen una serie de comandos bsicos que nos van
a permitir navegar a travs del sistema de archivos, efectuar el
mantenimiento de los archivos del sistema y manipular de alguna manera
los mismos. Algunos de estos comandos son:
33333
Listar directorios (carpetas) (ls)
Este comando nos permite ver el contenido de un directorio (carpeta), que
archivos y directorios estn incluidos en el y que atributos tienen. Algunos
ejemplos de uso de ls son:

Mostrar el contenido de un directorio en forma abreviada: ls

Mostrar el contenido de un directorio en forma detallada: ls l

Mostrar el contenido de un directorio en forma detallada y en un


formato entendible por nosotros los humanos: ls lh

Mostrar el contenido de un directorio en forma detallada, en un


formato entendible por nosotros los humanos incluyendo los
ficheros ocultos: ls -lah

Vctor H. Bustamante Olivera

Pgina 1

UNMSM

Laboratorio de Sistemas Operativos

Fac de Ingeniera de Sistema e Informtica

Gua de Laboratorio

33333
Crear, eliminar y navegar en subdirectorios
Los comandos necesarios para realizar el mantenimiento de directorios son:

mkdir Un comando utilizado para crear subdirectorios,


simplemente ejecute mkdir <nombredeldirectorio>.
cd ~
mkdir mio
ls

rmdir Un comando utilizado para borrar un subdirectorio vacio,


ejecute rmdir <nombredeldirectorio>
cd ~
rmdir mio
ls

cd Un comando utilizado para navegar a travs de los


subdirectorios del disco. Para hacerlo simplemente digite: cd
<nombredeldirectorio>
cd ~
mkdir mio
ls
cd mio
ls

33333
Copiar, mover, renombrar y eliminar archivos
El mantenimiento de archivos se realiza a travs de los siguientes
comandos:
-

cp Un comando que permite copiar archivos desde una ubicacin a


otra, aqu algunos ejemplos del uso de cp
o

Copiar el archivo /etc/hosts al directorio del usuario


representado por el carcter ~ (en Linux puede utilizar la
combinacin Alt-Gr y 4 para este carcter):
cp

/etc/hosts

Copiar el archivo /etc/hosts al directorio /home/alumno/mio,


luego visualizar el contenido del directorio mio:

Vctor H. Bustamante Olivera

Pgina 2

UNMSM

Laboratorio de Sistemas Operativos

Fac de Ingeniera de Sistema e Informtica

Gua de Laboratorio

mkdir /home/alumno/mio
cp

/etc/hosts

/home/alumno/mio/

ls /home/alumno/mio
o

Copiar el archivo /etc/hosts al directorio del usuario con otro


nombre:
cd ~
cp

/etc/hosts hosts.conf

ls
o

Copiar el subdirectorio /var/www al directorio del usuario, en


este caso vamos a copiar una carpeta con todo su contenido
incluyendo las carpetas internas:
cp

/var/www/*

~/www

mv Un comando que permite mover archivos desde una ubicacin a


otra y tambin permite renombrarlos. Algunos ejemplos de su uso
son:
o

Mover el archivo host.conf del directorio del usuario al


subdirectorio mio:
cd ~
mv

host.conf

mio

Renombrar el archivo host.conf a host.conf.back dentro de la


carpeta mio:
cd mio
ls
mv

host.conf

host.conf.back

ls
-

rm Un comando que permite borrar ficheros y directorio completos


aunque contengan datos. Algunos ejemplos de su uso son:
o

Eliminar el archivo host.conf.back:


cd ~/mio
ls

Vctor H. Bustamante Olivera

Pgina 3

UNMSM

Laboratorio de Sistemas Operativos

Fac de Ingeniera de Sistema e Informtica

rm

Gua de Laboratorio

host.conf.back

ls
o

Eliminar todo el subdirectorio /home/alumno/www que


copiamos en un ejercicio anterior incluyendo los archivos que
tiene dentro:
cd ~
ls
rm

fr

www

ls

Por qu crear scripts?

3.2

Conocer como crear scripts es esencial para cualquiera que desee estar
familizarizado con la administracin de un sistema de cmputo, an si
actualmente no ha pensado en escribir un script. Considere que cuando una
mquina linux arranca ejecuta los scripts ubicados en /etc/rc.d para
establecer la configuracin del sistema y levantar servicios. Un
entendimiento detallado de estos scripts de inicio es esencial para analizar
el comportamiento de un sistema y posiblemente modificarlo.
Los scripts nos llevan de regreso a la filosofa clsica de UNIX de dividir un
proyecto complejo en tareas ms simples.
Cuando NO utilizar scripts

Para tareas intensivas en recursos, especialmente donde la velocidad


es el factor.

Procedimientos que involucran clculos complejos, especialmente


aritmtica de punto flotante.

Tareas que requieren portabilidad a travs de varias plataformas.

Aplicaciones complejas donde la programacin estructurada es


necesaria.

Aplicaciones de misin crtica donde se este apostando el futuro de


la empresa

Aplicaciones donde la seguridad es importante, donde se necesite


garantizar la integridad del sistema y protegerse de intrusin,
cracking o vandalismo.

Vctor H. Bustamante Olivera

Pgina 4

UNMSM

Laboratorio de Sistemas Operativos

Fac de Ingeniera de Sistema e Informtica

Gua de Laboratorio

Si se requiere un uso intensivo de operaciones con archivos.

Si se necesitan arreglos multidimensionales

Si se necesitan estructuras de datos, tales como listas o rboles

Si se necesita generar grficos o manipular GUIs

Si se necesita acceso directo al hardware

Si se necesita acceso a puertos y sockets de I/O

Si se necesita aplicaciones cerradas o propietarias.

Si se requiere cualquiera de estas caractersticas, piense en usar Perl, Tcl,


Python o C, C+ o Java.
Para que un script se pueda ejecutar, es importante tener en cuenta que
debe tener los permisos adecuados, el ms importante es el de ejecucin.
Utilice la orden chmod para modificar los permisos del scritp de la siguiente
manera:
chmod u+rx <nombredelscript>
3.3

Comenzando a escribir scripts

En su acepcin ms simple, un script no es ms que una lista de comandos


del sistema almacenados en un archivo. Por ltimo, esto nos ahorra el
esfuerzo de retiepar una secuencia particular de comandos cada vez que es
invocado.
Ejemplo 1. Limpieza: Un script para limpiar los archivos de log
ubicados en /var/log
# Limpieza
# Se debe ejecutar como superusuario
cd /var/log
cat /dev/null > messages
cat /dev/null > wtmp
echo Logs borrados!
En este ejemplo no hay nada fuera de lo comn, es slo un conjunto de
comandos que pueden ser fcilmente invocados uno por uno desde la lnea
de comandos en la consola. Las ventajas de colocar los comandos en un
scripts van ms alla de no tener que volver a escribir los comandos una y
otra vez. El script puede ser fcilmente modificado, personalizados o
generalizado para una aplicacin particular.
Ejemplo 2. Limpieza: Una versin mejorada del script anterior
Vctor H. Bustamante Olivera

Pgina 5

UNMSM

Laboratorio de Sistemas Operativos

Fac de Ingeniera de Sistema e Informtica

Gua de Laboratorio

#!/bin/bash
# Limpieza Versin 2
# Debe ejecutarse como ROOT
# Variables
LOG_DIR=/var/log
ROOT_UID=0
LINES=50
E_XCD=66
E_NOTROOT=67
if [ $UID -ne $ROOT_UID ]
then
echo Debe ser root para ejecutar este script.
fi
if [ -n $1 ]
then
lines=$1
else
lines=$LINES
fi
cd $LOG_DIR
if [ `pwd` != $LOG_DIR ]
then
echo No se pudo cambiar a $LOG_DIR
exit $E_XCD
fi
tail -$lines messages > mesg.temp
mv mesg.temp messages
cat /dev/null > wtmp
echo Logs borrados!
exit 0

Ejercicio:

Teniendo en consideracin lo siguiente:


33 Que la variable $# indica cuantos parmetros se pasan mediante la
lnea de ordenes a un script y que $1, $2, ... son las variables que
representan a dichos parametros
33 Que la ejecucin exitosa de un comando retorna 0 y que la variable
$? almacena dicho valor.

Vctor H. Bustamante Olivera

Pgina 6

UNMSM

Laboratorio de Sistemas Operativos

Fac de Ingeniera de Sistema e Informtica

Gua de Laboratorio

Construya un script que se encargue que reciba como parmetros los


nombres de 2 directorios, cree dentro del primer subdirectorio el segundo
subdirectorio y copie los archivos contenidos en /etc/apache2 dentro del
segundo subdirectorio.
Dicho programa debe:

Verificar que se ha recibido la cantidad correcta de parametros desde


la lnea de comandos

Ingresar dentro del primer subdirectorio, en caso de no existir debe


crearse.

Crear el segundo subdirectorio e ingresar en el. En caso de no poder


hacerlo retornar un cdigo de error.

Copiar los archivos de /etc/apache2 dentro del segundo subdirectorio.

Listar el contenido del segundo subdirectorio.

Vctor H. Bustamante Olivera

Pgina 7