ejemplos de shell
Ingenierías Técnicas en Informática de Sistemas y Gestión
2006/2007
__________________________________________________________________________________________
Ejemplos de guiones shell
−
Ruta absoluta vs. ruta relativa
Es muy importante saber en qué directorio estamos ubicados para poder referenciar
correctamente un archivo/directorio determinado.El comando pwd nos muestra la ruta completa del directorio donde estamos trabajando.
La variable de entorno HOME (se accede a ella con $HOME) nos proporciona el directorio de
trabajo asociado al usuario.
Supongamos que nos encontramos en el directorio /home/usuario/Practica1. Después de
ejecutar el comando ls -l obtenemos la siguiente salida. Aquí hay dos subdirectorios
denominadosPractica2 y public_html.
-rwxr-xr-x
drwxr-xr-x
-rwxr-xr-x
-rwxr-xr-x
drwxr-xr-x
-rw-r--r--rw-r--r--rw-r--r-lrwxrwxrwx
-rw-r--r--rw-r--r--
1
4
1
1
2
1
1
2
1
2
1
jcarlos
jcarlos
jcarlos
jcarlos
jcarlos
jcarlos
jcarlos
jcarlos
jcarlos
jcarlos
jcarlos
users
users
users
users
users
users
users
users
users
users
users
52
728
56
106
80
1362
7
21284
321284
0
2007-03-09
2007-03-26
2007-03-09
2007-03-01
2007-02-24
2007-03-05
2007-03-10
2007-03-10
2007-03-10
2007-03-10
2007-03-05
20:32
19:08
20:32
22:52
16:30
20:54
20:16
20:15
20:14
20:15
22:53
ejemplo1
Practica2
progreso
prueba1
public_html
rr
rr2
rr2link
rr2slink -> rr2
rrlink
sal
Pues bien, cualquier referencia a este subdirectorio utilizando la rutarelativa será simplemente
a través de su nombre ya que se encuentra justo debajo de donde estamos.
ls -l Practica2
cd Practica2
Si nos encontráramos en el subdirectorio public_html, entonces
ls -l ../Practica2
cd ../Practica2
Todo éstos son ejemplos de ruta relativa.
Su ruta absoluta será /home/usuario/Practica1/Practica2. Ahora:
ls -l /home/usuario/Practica1/Practica2
cd/home/usuario/Practica1/Practica2
Ejemplos Shell Script
1
Laboratorio de Sistemas Operativos
Ingenierías Técnicas en Informática de Sistemas y Gestión
2006/2007
__________________________________________________________________________________________
Con estos comandos siempre obtendremos los mismos resultados, independientemente del
directorio desde donde los lancemos.
Si esto lo aplicamos a unshell script tendremos lo siguiente:
if [ -d Practica2 ] será cierto si Practica2 es un subdirectorio del directorio donde
ejecutemos el shell script.
if
[
-d
/home/usuario/Practica1/Practica2
]
será
cierto
si
/home/usuario/Practica1/Practica2 es un directorio. Aquí no importa desde dónde
lanzamos el script ya que estamos utilizando la runta absoluta.
Si estamos enel directorio /home/usuario/Practica1 y lanzamos el script
código es el siguiente:
ejemplo1 cuyo
#!/bin/bash
if [ -d $1 ]
then
echo $1 es un directorio
else
echo $1 no es un directorio
fi
Aquí $1 representa el valor del primer argumento introducido al ejecutar lo siguiente:
. ejemplo1 Practica2
Dentro del script anterior $1 será sustituido por el valor Practica2. Como Practica2sí que es un
subdirectorio del directorio donde hemos lanzado el script, la salida será cierta.
Pero una ejecución como . ejemplo1 /home/usuario/Practica1/Practica2 también será cierta,
ya que ahora $1 será sustituido por el valor /home/usuario/Practica1/Practica2 que,
evidentemente, es un directorio.
Supongamos ahora que el directorio de trabajo por defecto del usuario (directorio al quese
conecta el usuario) es /home/usuario. $HOME tendrá pues, el valor /home/usuario. Entonces:
if [ -d $HOME/Practica1 ] será cierta.
if
[
-d
$HOME/Practica2
]
será
falsa
pues
no
existe
el
directorio
/home/usuario/Practica2
Ejemplos Shell Script
2
Laboratorio de Sistemas Operativos
Ingenierías Técnicas en Informática de Sistemas y Gestión
2006/2007...
Regístrate para leer el documento completo.