SHELL Lo que ocurre internamente en tu ordenador cuando este ejecuta una acción, tal como, leer un fichero, grabar un documento, acceder al CDRom o ejecutar un programa, es un proceso bastante complicado y que requiere una serie de acciones por parte de tu sistema operativo. Por si esto no es suficiente, necesitamos también, una manera de poder comunicarnos con nuestro sistema operativo para decirle que es lo que queremos hacer. Es aqui donde un intérprete de comandos (shell) hace su trabajo. Un shell o intérprete de comandos es el proceso encargado de traducir los comandos que los usuarios introducen, a instrucciones que el sistema operativo entiende. Es el programa que se encuentra entre el sistema operativo y el usuario ,el cual nos hace la vida mas fácil. Todo usuario que quiera profundizar en un sistema Unix/linux tendrá más tarde ó temprano que familiarizarse con el shell de su sistema, el cual se convertirá en una herramienta imprescindible en la administración diaria del sistema, tanto por su potencia como versatilidad. En el caso de un shell de Unix, éste sirve de intermediario entre el usuario y el sistema operativo del servidor (Unix es un sistema operativo multiusuario y multitarea, es decir, que puede atender a varias personas, máquinas y tareas al mismo tiempo). El shell de Unix se encarga de aceptar los comandos por parte del usuario, verificando su correcta sintaxis y luego enviando las órdenes a otra parte del sistema para su ejecución. Así, por medio de un shell una persona puede tener acceso a los recursos de una máquina. Los sistemas Unix pueden tener diferentes shells, los más utilizados son el C shell (csh), el Bourne (bash) y el Korn (ksh). Cada uno de ellos ofrece un lenguaje diferente de comandos. El Bourne shell es el más antiguo y tuvo gran popularidad en su lanzamiento, es el shell por defecto del UNIX. El C shell reensambla la programación en lenguaje C y por tanto es más completo que el anterior. El Korn Shell es el más moderno de los tres y el más desconocido Uno puede escoger el entorno de programación a usar cuando se solicita el código, en caso de no notificar nada se asignará por defecto el intérprete de mandatos ksh en el IBM SP2 y en el HP V2250 y el tcsh en el resto de máquinas del CESCA y del CEPBA. Si se quiere cambiar temporalmente de shell se tiene que utilizar el mandato: bsh - para pasar a Bourne shell csh - para pasar a c-shell tcsh - para pasar a tc-shell ksh - para pasar a k-shell Algunas de las características de estos intérpretes de mandatos csh, tcsh y ksh son: Interpretan los diferentes mandatos especificados por el usuario. Un mandato es una secuencia de palabras, la primera de las cuales es el nombre del mandato y los otros sus argumentos. Procesamos un mandato en interactivo (foreground) y varios en background. Para ejecutar un mandato en background, la secuencia de argumentos tiene que acabar con el símbolo &. Algunos mandatos: jobs Lista todos los procesos en ejecución en background. kill número_de_proceso Cancela un proceso en background (el número de trabajo se puede obtener con el mandato jobs). fg número_de_proceso Pasa un proceso de background a foreground. <Ctrl+Z> Suprime el proceso interactivo. <Ctrl+C> Cancela el proceso interactivo. bg número_de_proceso Continúa la ejecución en background de un proceso interactivo que ha sido suspendido. Permite redireccionar la entrada (fichero stdin y la salida (fichero stdout y stderr) de un mandato por pantalla a un fichero. Por ejemplo: jobs >> nombre_fichero En este caso, la lista de procesos en background no aparece por pantalla, sino, que se guarda al final del fichero indicado. Para crear un nuevo fichero (en vez de añadir la información a uno ya existente), se tiene que utilizar el símbolo <. Para redireccionar el fichero de entrada stdin, <. Para redireccionar el fichero de salida (stdout i stderr), >& o >>&, según se quiera crear un nuevo fichero o añadir a uno ya existente. También permiten conectar la salida de un mandato a la entrada de otro, de manera que el segundo pueda empezar a ejecutar tan pronto los datos estén disponibles (por ejemplo, sin tener que esperar que el primer mandato termine completamente su ejecución). Para esto, los dos mandatos tienen que separarse con el símbolo |. Por ejemplo, para obtener una lista completa de todos los ficheros en el directorio actual, así como el de sus subdirectorios y visualizarlo por la pantalla página por página: ls -RC | more Para más información sobre la sintaxis y la utilización de cualquier mandato de csh, tcsh y ksh se debe utilizar el mandato man nombre_mandato. Los ficheros que tienen un significado especial para este intérprete de mandatos c-shell y k-shell y que se encuentran en el directorio principal del usuario son: c-shell y tcsh: .login y .cshrc k-shell: .profile y .kshrc Este fichero se ejecuta cada vez que el usuario se conecta al sistema. En la siguiente gráfica se trata de representar la manera en la que el shell es el intermediario entre el usuario y el Hardware sirviendo como el lector de los comandos: Conclusiones: Solo se recalca constantemente que "Todo lo que se puede hacer en modo gráfico, se puede hacer también en modo texto, a base de comandos. Pero no todo lo que se puede hacer en modo texto, se puede hacer en modo gráfico" y que tan solo cada vez salen cada vez mas programas que a base de click de mouse o de ventanas se facilita el uso de los comandos haciéndolos mas vistosos y fáciles de manejar. Bibliográfia: www.google.com www.monografias.com www.vivalinux.com.ar www.gnu.org www.abcdatos.com