Está en la página 1de 4

Sistema UNIX: El shell

Junio 2014
Introduccin al shell
El intrprete de comandos es la interfaz entre el usuario y el sistema operativo, por este motivo
se le da el nombre "shell", que en castellano significa "caparazn".
Por lo tanto, el shell acta como un intermediario entre el sistema operativo y el usuario
utilizando lneas de comando introducidas por dicho usuario. Su funcin consiste en la lectura
de la lnea de comandos, la interpretacin de su significado, la ejecucin del comando y luego la
devolucin del resultado a travs de las salidas.
El shell es un archivo ejecutable que debe interpretar los comandos, transmitirlos al sistema y
devolver el resultado. Existen muchos tipos de shell: Los ms comunes son: sh (llamado
"Bourne shell"), bash ("Bourne again shell"), csh ("C Shell"), Tcsh ("Tenex C shell"), ksh ("Korn
shell"), y zsh ("Zero shell"). Generalmente, sus nombres coinciden con el nombre del ejecutable.
Cada usuario tiene un shell predeterminado, que se activar al abrirse el aviso del comando. El
shell predeterminado se especifica en el archivo de configuracin /etc/passwd, en el ltimo
campo de la lnea que corresponde al usuario. Es posible cambiar el shell durante una sesin;
para hacerlo, slo se deber ejecutar el archivo ejecutable correspondiente. Por ejemplo:
/bin/bash
Ventana de lnea de comandos (prompt)
El shell se inicia a travs de la lectura de su configuracin completa (en un archivo del directorio
/etc/), y luego de la lectura de la configuracin propia del usuario (en un archivo oculto cuyo
nombre comienza con un punto y que se ubica en el directorio bsico del usuario, es decir
/home/user_name/.configuration_file). Luego, se muestra una ventana de lnea de comandos o
prompt:
machine:/directory/current$
En forma predeterminada, en la mayora de los shells el "prompt" (aviso) consiste en el nombre
de la mquina seguido por dos puntos (:), el directorio actual y luego, un carcter que indica el
tipo de usuario conectado:
"$" define a un usuario normal
"#" define al administrador, llamado "root"
El concepto de la lnea de comandos
Una lnea de comandos es una cadena de caracteres que representan a un comando. Este
comando corresponde a un archivo ejecutable del sistema o del shell junto con otros
argumentos opcionales (parmetros):
ls -al /home/jf/
En el comando anterior, ls es el nombre del comando, mientras que -al y home/jean-francois/
son los argumentos. Los argumentos que comienzan con - se denominan opciones. Por lo
general, para cada comando hay una cierta cantidad de opciones que se pueden detallar al
introducir uno de los siguientes comandos:
command --help command -? man command
Entrada-salida estndar
Una vez que se ejecuta un comando, se crea un proceso. Luego, este proceso abre tres flujos:
stdin, denominado entrada estndar, en el que el proceso leer los datos de entrada. En
forma predeterminada, stdin se refiere al teclado. STDIN se identifica con el nmero 0;
stdout, denominado salida estndar, en el que el proceso escribir los datos de salida. En
forma predeterminada, stdout se refiere a la pantalla. STDOUT se identifica con el nmero
1;
stderr, denominado error estndar, en el que el proceso escribir los mensajes del error.
En forma predeterminada, stderr se refiere a la pantalla. STDERR se identifica con el
nmero 2;
En forma predeterminada, cada vez que se ejecuta un programa, los datos se leen desde el
teclado y el programa enva los datos de salida y los errores a la pantalla. Sin embargo, tambin
es posible leer datos desde cualquier dispositivo de entrada, incluso desde un archivo, y enviar
los datos de salida a un dispositivo de visualizacin, un archivo, etc.
Redirecciones
Como cualquier sistema Unix, Linux posee mecanismos que permiten redirigir la entrada-salida
estndar hacia los archivos.
Por lo tanto, si se utiliza el carcter ">" se puede redirigir la salida estndar de un comando que
se ubica a la izquierda hacia un archivo que se ubica a la derecha:
ls -al /home/jf/ > toto.txt echo "Toto" > /etc/myconfigurationfile
El siguiente comando equivale a una copia de los archivos:
cat toto > toto2
El propsito de la redireccin ">" es crear un nuevo archivo. Entonces, si ya existe un archivo
con el mismo nombre, dicho archivo ser eliminado. El siguiente comando simplemente crea un
archivo vaco:
> file
La utilizacin del carcter doble ">>" permite agregar la salida estndar al archivo. Es decir,
permite agregar la salida despus del archivo sin eliminarlo.
En forma similar, el carcter "<" indica una redireccin de la entrada estndar. El siguiente
comando enva el contenido del archivo toto.txt hacia la entrada del comando cat, cuyo nico
propsito es mostrar el contenido de la salida estndar (este ejemplo no es muy til pero resulta
instructivo):
cat < toto.txt
Por ltimo, la utilizacin de la redireccin "<<" permite la lectura en la entrada estndar, hasta
que se encuentre la cadena ubicada a la derecha. En el siguiente ejemplo, se leer la entrada
estndar hasta que se encuentre la palabra STOP. Luego, se mostrar el resultado:
cat << STOP
Tuberas de comunicacin
Las tuberas (en ingls "pipes") son mecanismos de comunicacin especficos para todos los
sistemas UNIX. Una tubera, simbolizada por una barra vertical (carcter "|"), permite asignar la
salida estndar de un comando a la entrada estndar de otro, de la misma forma en que una
tubera permite la comunicacin entre la entrada estndar de un comando y la salida estndar
de otro.
En el siguiente ejemplo, la salida estndar del comando ls -al se enva al programa sort, el cual
debe ordenar los resultados en orden alfabtico.
ls -al | sort
Esto permite conectar una cierta cantidad de comandos a travs de sucesivas tuberas. En el
siguiente ejemplo, el comando muestra todos los archivos del directorio actual, selecciona las
lneas que contienen la palabra "zip" (utilizando el comando grep) y cuenta la cantidad total de
lneas:
ls -l | grep zip | wc -l
UNIX system - The shell UNIX-System - SHELL Systmes UNIX - Le shell Sistemi UNIX - La
shell Sistemas UNIX -Shell
Este documento intitulado Sistema UNIX: El shell de Kioskea (es.kioskea.net) esta puesto a diposicin bajo la
licencia Creative Commons. Puede copiar, modificar bajo las condiciones puestas por la licencia, siempre que esta
nota sea visible.