El Shell

  
 Este tutorial esta orientado principalmente para los que recien se inician en sistemas basados en Unix... Esta es la primera parte de este mini curso...

 Empecemos, segun Wikipedia, el término shell se emplea para referirse a aquellos programas que proveen una interfaz de usuario para acceder a los servicios del sistema operativo. Estos pueden ser gráficos o de texto simple, dependiendo del tipo de interfaz que empleen. Los shells están diseñados para facilitar la forma en que se invocan o ejecutan los distintos programas disponibles en el computador.


 El Shell permite definir variables para ser usadas tanto desde línea de comandos como en programación Shell (Shell-Scripts).

  Dichas variables, a diferencia con lo que sucede en los lenguajes de programación, NO tienen tipo. Son una posición de memoria donde se puede almacenar tanto números como caracteres.
  Por lo tanto es responsabilidad del programador la correcta utilización del tipo de datos.
  Las variables sirven para adaptar el entorno del usuario a su mejor conveniencia.
  
  Existen básicamente 2 tipos de variables:

1) Variables de Ambiente: Son predefinidas, se escriben en mayúsculas y  contienen datos útiles para el entorno de programación.
      Algunas de ellas son:

PATH: Define el camino de búsqueda de los comandos
TERM: Define el tipo de terminal
MAIL:  Define el lugar en el file-system donde se encuentran las casillas de mail.
HOME: Define el directorio de entrada de cada usuario

2) Variables de Usuario: Son las que utiliza el programador, se sugiere escribirlas en minúsculas.

Definición  de Variables

Las variables no se definen, simplemente se les asigna un valor.
Si no se le asigna ningún valor, entonces la variable se encuentra indefinida y esto puede traer problemas.

Ej: $ a=1234
   $ respuesta=si

Contenido  de Variables

Para mostrar el contenido de una variable se le antepone el signo $.

Ej: $ echo $rta

Una vez definida la variable conviene exportarla, para hacerla extensible a todos los niveles de sub-shells del shell corriente.
Esto se hace por intermedio del comando export.

Ejemplo: $ export a

Clarifiquemos cómo funciona la exportación:

$ var=hola
$ echo $var
$ hola
$ sh
$ echo $var
$    

Nótese como en el ejemplo anterior, la variable var, luego de acceder a un sub-shell, pierde su valor. Para que esto no ocurra, se la debe exportar. Entonces:

$ var=hola
$ echo $var
$ hola
$ export var
$ sh
$ echo $var
$ hola  

Ahora si, la variable var mantiene su contenido hola.
Con el comando set, se pueden observar las variables seteadas.

Uso de comillas

En principio, consideraremos 3 tipos de comillas cuando estemos en el entorno de programación Shell.

Comilla Simple (Simple Quote) (ALT+39) ‘ ‘
Cuando el Shell las encuentra, toma literalmente el contenido que encierran.

Ej: $ echo ‘hola’
   $ hola

Comilla Doble (Double Quote) (ALT+34) “ “
Cuando el Shell las encuentra, toma literalmente el contenido que encierran, salvo algunos caracteres especiales como el $, y el \ (back-slash)

Ej: $ echo “El promedio es: $prom”
   $ El promedio es: 23

Nótese como se resuelve el contenido de la variable prom.

Comilla Acostada (Back Quote) (ALT+96) ` `
Cuando el Shell las encuentra, resuelve la expresión contenida en ellas.

Ej: $ a=`pwd`  

La variable a, entonces, contiene el directorio corriente
Si tipeamos: $ echo $a el resultado será, por ejemplo:

$ /home/alumno/don_leandro

A continuación detallaremos algunos ejemplos:
Ejecutamos el siguiente comando con el consiguiente resultado en la segunda línea:

$ ls
$ filea fileb filec

Además definimos la siguiente variable:

$ testvar=“Esta es una prueba”

A partir de aquí se producen los siguientes resultados:

1)  $ echo “* and ls”
   $ * and ls

2)  $ echo * and ls
   $ filea fileb filec and ls

3)  $ echo “* and `ls`”
   $ * and filea fileb filec

4)   $ echo * and “`ls`”
    $ filea fileb filec and filea fileb filec

5)   $ echo `ls`
    $ filea fileb filec

6)   $ echo * and `ls`
    $ filea fileb filec and filea fileb filec

7)    $ echo * and $testvar
    $ filea fileb filec and Esta es una prueba

8)    $ echo “* and $testvar”
    $ * and Esta es una prueba

9)    $ echo ‘* and $testvar’
    $ * and $testvar

10)  $ echo \* and \$testvar
    $ * and $testvar




             



No hay comentarios:

Publicar un comentario