[ anterior ] [ Contenidos ] [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ siguiente ]
La palabra shell en Unix
es sinónimo de interprete de
comandos, una herramienta de gran potencia, aunque aquellos usuarios que sólo
emplean el modo gráfico del sistema pueden no llegar nunca a usarlo.
Trabajar en un entorno de shell es análoga al ya lejano interprete de comandos COMMAND.COM de MSDOS, aunque está infinitamente más desarrollada que este último. El nombre proviene del hecho de que es un intermediario entre el usuario y el kernel o núcleo del sistema.
El objetivo de una shell es leer los comandos que le pasa el usuario a través
de una terminal alfanumérica, que puede ser una consola o una ventana de
terminal. En el primer caso toda la pantalla forma la terminal y en general si
estamos en modo gráfico podemos pasar al modo consola pulsando simultáneamente
CTRL-ALT-Fx, donde Fx es una
tecla de función, desde F1 a F6. Una vez situados en
una consola podemos pasar a la consola número y pulsando
ALT-Fy. Para volver al entorno gráfico se pulsta
ALT-F7. Este modo consola es habitual que lo use el superusuario
(usuario root) para realizar tareas de mantenimiento del sistema.
Una ventana de terminal es una ventana dentro de un entorno gráfico en la que
podemos trabajar como si fuera una consola. Hay diferentes tipos de ventanas
de terminal, cada una con sus ventajas e inconvenientes. Para abrir una
ventana de terminal, por ejemplo en el entorno gráfico de GNOME, hay que hacer
clic con el ratón en Menu y seleccionar Herramientas ->
System Tools -> Terminal. En KDE
el terminal se llama
konsole y tiene su propio icono en la barra de tareas: la concha
de una almeja superpuesta a una pantalla.
Por razones de compatibilidad es aconsejable utilizar un tipo de ventana de terminal que no esté ligada a un gestor de ventanas o un entorno gráfico determinado. De este modo podremos trabajar en diferentes ordenadores, independientemente del entorno gráfico que estos tengan instalado. Un tipo de ventana muy común y cómoda, aunque algo anticuada, es la llamada xterm. Para abrir una de ellas podemos definir un atajo en nuestro entorno gráfico o simplemente escribir {\tt xterm} en la ventana de terminal que nos haya proporcionado el entorno gráfico.
El prompt de una shell es el carácter o caracteres al comienzo de la línea de comandos que indica que la shell está preparada para recibir los comandos que escribos. Usualmente en este prompt encontraremos la siguiente información:
username@hostname:$PWD$
donde username es el nombre del usuario, hostname el nombre de la máquina donde está ejecutándose la shell y $PWD el directorio donde se encuentra el usuario. Normalmente los prompts terminan en una carácter de dólar, de tanto por ciento o en almohadilla. A continuación del prompt suele haber un cursor, un cuadrado blanco (o negro, depende del fondo de pantalla que haya fijado el usuario) que indica donde comienza a escribir el usuario. Un ejemplo sería
thorin@gondor:~/textos$
Esto indica que el usuario thorin tiene una sesión abierta en el
nodo gondor y se encuentra actualmente en el directorio
~/textos. Más adelante explicaremos la estructura de directorios
del sistema Linux
.
Cuando el usuario hace login en el sistema, esto es, cuando entra
en una terminal alfanumérica o cuando realizamos una conexión remota con
telnet
o ssh
a un sistema) se entra directamente en
una shell. En Unix
existen distintos tipos de
shells, entre las más populares destacan:
csh
: C shell, con sintaxis parecida a la del lenguaje de
programación C.
bash
: Bourne again shell, shell por defecto de
GNU/Linux
.
zsh
: Z shell.
ksh
: Korn shell.
Cada una de ellas presenta sus propias particularidades y diferentes ficheros
de configuración para definir las preferencias del usuario. Nosotros nos
centraremos en bash
por ser la más extendida en
GNU/Linux
.
Hay que destacar que la shell, además de ser en interprete de comandos, es en sí mismo un lenguaje de programación para la construcción de scripts, programas que facilitan especialmente tareas de administración del sistema, sobre los que se hablará brevemente en capítulos posteriores.
Una vez que hemos entrado en nuestra xterm
podemos comenzar a dar
órdenes al sistema. En concreto para casi todos los comandos de
GNU/Linux
puede obtenerse información si corremos el programa
seguido de alguna de las siguientes opciones: -h,
-help o --help. Por ejemplo, si queremos conocer las
posibles opciones del comando xterm podemos hacer:
thorin@gondor:~$ xterm -help XTerm(197) usage: xterm [-options ...] [-e command args] where options include: -/+132 turn on/off 80/132 column switching -C intercept console messages -Sccn slave mode on "ttycc", file descriptor "n" -T string title name for window -/+ah turn on/off always highlight -/+ai turn off/on active icon -/+aw turn on/off auto wraparound -b number internal border in pixels -/+bc turn on/off text cursor blinking -bcf milliseconds time text cursor is off when blinking -bcn milliseconds time text cursor is on when blinking -bd color border color -/+bdc turn off/on display of bold as color -bg color background color -bw number border width in pixels -/+cb turn on/off cut-to-beginning-of-line inhibit -cc classrange specify additional character classes -/+cjk_width turn on/off legacy CJK width convention -class string class string (XTerm) -/+cm turn off/on ANSI color mode -/+cn turn on/off cut newline inhibit -cr color text cursor color -/+cu turn on/off curses emulation -/+dc turn off/on dynamic color selection ...
Si desea consultar todas las opciones posibles puede subir y bajar una página
en su xterm usando las teclas SHIFT-RePag y
SHIFT-AvPag. Esta forma de consultar las opciones es rápida, pero
no sirve para todos los comandos y su salida a veces es demasiado breve. Para
obtener más información acerca de algún comando se puede consultar la página de
manual man
para dicho comando. Por ejemplo, para el comando
xterm
haremos:
thorin@gondor:~$ man xterm
Dentro de la página de man
pulsando la barra espaciadora se avanza
una pantalla y pulsando la tecla B se retrocede una pantalla. En
muchos casos es también muy util recurrir al comando info
que
proporciona una información más exhaustiva de la proporcionada por el comando
man
. Si no se recuerda exactamente el nombre de un comando se
puede usar apropos
. Por ejemplo, si escribimos
thorin@gondor:~$ apropos list
obtenemos una salida en la que nos da todos los comandos que realizan listas. En todos los casos podemos apreciar la variedad de opciones y libertad de configuración que nos proporciona trabajar en este sistema operativo.
Toda shell tiene definidos una serie de comandos internos como alias o export pero también pueden ejecutarse utilidades Linux como ls o mkdir entre otras. En el capítulo Comandos más usados, Capítulo 5 se da una lista de los comandos más usados cuando se trabaja dentro de una shell. También es conveniente conocer una serie de combinaciones de teclas que resultan de suma utilidad, entre las que destacan:
TAB Completa en comando que estemos tecleando.
Flecha arriba y flecha abajo Navega sobre las últimas instrucciones que hemos escrito.
CTRL-e Sitúa el cursor al final de la línea de comandos.
CTRL-a Sitúa el cursor al principio de la línea de comandos.
ESC-f Avanza el cursor una palabra en la línea de comandos.
ESC-b Retrocede el cursor una palabra en la línea de comandos.
CTRL-k Borra desde la posición del cursor hasta el final de la línea.
CTRL-y Pega lo que se ha borrado en último lugar.
CTRL-l Borra el contenido de la terminal.
CTRL-u Borra la línea entera.
CTRL-d Similar a CTRL-c. Interrumpe un proceso.
CTRL-_ Deshace el último cambio realizado.
Podemos practicar con estas combinaciones, y acostumbrarse a su uso permite alcanzar una gran rapidez al trabajar con el ordenador.
Al iniciarse una sesión el usuario posee una serie de variables definidas. Algunas de las más importantes son
HOSTNAME Nombre de la máquina o nodo donde est\' corriendo la sesión.
USER Nombre del usuario username.
SHELL Shell activa.
HOME Path del directorio home del usuario.
PATH Lista de directorios donde se buscan ejecutables.
PS1 Definición del prompt del usuario.
El valor de estas preferencias puede consultarse mediante el comando env sin añadirle opción alguna. Estas preferencias del usuario en una bash shell se definen a través de varios ficheros que se leen durante el arranque de la sesión:
/etc/profile Fichero de configuración del sistema.
.profile ó .bash_profile Fichero de configuración del usuario que complementa al fichero /etc/profile.
.bashrc Fichero de configuración del usuario que complemente a los dos anteriores.
Los ficheros /etc/profile y .bashrc se leen siempre al entrar en el sistema o al abrir una terminal, pero el .bash_profile sólo se lee cuando se abre una login shell. Hay que destacar que el fichero profile se lee independientemente de la shell que usemos.
En estos ficheros se definen, las variables de entorno antes citadas como: PATH, HOME, PS1, TERM y también se definen los alias que deseemos usar o el mensaje de bienvenida que deseemos ver al abrir una sesión, si deseamos ver escritos sobre la pantalla mensajes de otros usuarios, etc.
[ anterior ] [ Contenidos ] [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ siguiente ]
Comprendiendo el Sistema: Comandos Básicos
Version 0.01francisco.perez@dfaie.uhu.es