Vous êtes sur la page 1sur 3

LINUX USER Lnea de Comandos: Shell

Trucos Bash

SHELL ELEGANTE
Unos cuantos trucos pueden alegrar la lnea de comandos y aadir una
nota de color a tu consola.
POR HEIKE JURZIK

a shell es el intrprete de la lnea


de comandos situado entre el
usuario y el sistema. Entre otras
cosas interpreta comandos, comodines y variables, enlaza comandos y
pasa salidas de programas a otras
herramientas o a otros ficheros.
Junto a Bourne Shell (Sh), Korn
Shell (Ksh), C Shell (Csh) y Z Shell
(Zsh), la Bourne Again Shell, o
Bash, juega un destacado papel en
sistemas estilo Unix, establecindose a s misma como la shell
estndar en Linux. Trabajar con
Bash es un poco ms divertido si se
modifica la lnea de comandos para

78

Nmero 23

adaptarla a las preferencias personales, si se est familiarizado con


los principales atajos de teclado, y
si se aade ms funcionalidad definiendo los propios alias y variables
de entorno.

Atencin!
Los comandos se introducen tpicamente
en el promt de la shell. Uno tpico se asemeja a lo siguiente:

trabajando y el directorio de trabajo


actual (ste es el directorio personal del
usuario actual en nuestro ejemplo, denotado por el carcter tilde). Si se est trabajando como administrador del sistema, como root, el prompt se presentar
ligeramente distinto: en la mayora de los
sistemas suele indicarse que se es root
con el signo almohadilla (#) que aparece
en el prompt:
huhnis:~ #

huhn@huhnix:~>

El prompt nos da el ID de usuario, el


nombre del ordenador en el que se est

WWW.LINUX- MAGAZINE.ES

Los usuarios pueden modificar el prompt


para presentar la fecha y la hora, el
tiempo de actualizacin del ordenador o

Lnea de Comandos: Shell LINUX USER

usar diferentes colores, es decir, con


unos cuantos pasos se podr configurar
el entorno de trabajo individual. La
variable de entorno responsable de esta
apariencia del prompt es PS1 (ver la seccin Todo es Variable). Si se deseara
presentar la hora actual (en formato de
24 horas) delante de los nombres de
usuario y del ordenador, seguido del
directorio de trabajo actual, puede asignarse temporalmente la variable
mediante lo siguiente:
$ export PS1=[ \t]U
\u@\h: \w>
[19:11:06] huhn@huhnix:~>

Las secuencias de escape usadas aqu


son \t (hora en formato 24 horas), \u
(nombre de usuario), \h (nombre del
host al primer punto) y \w (directorio de
trabajo actual). Otras secuencias de
escape especiales permiten dar color al
prompt, asignar el verde a un prompt de
usuario normal y rojo al del administrador, por ejemplo.
El manual de Bash dispone de una
lista completa con todas las secuencias
de escape; tambin es aconsejable comprobar el Bash Prompt Howto [1].

Buena Memoria
Bash posee una buena memoria, ya que
almacena la entrada del usuario en la historia (un fichero llamado ~/.bash_history), permitiendo a los usuarios reciclar
comandos en la pantalla. Pulsando la
tecla [Flecha arriba] presenta el ltimo
comando escrito en la pantalla. Si la pulsamos mltiples veces nos retrocede
hacia atrs en el tiempo, mientras que si
pulsamos la tecla [Flecha abajo] nos lleva
hasta el da ms prximo al de hoy. Pueden modificarse comandos que fueron
reciclados de esta manera y ejecutarlos de
nuevo pulsando Enter.
Evidentemente, la memoria de Bash es
slo tan buena en la medida en la que se
le especific en la variable de entorno
HISTSIZE (ver la seccin Todo es Variable). Puede preguntarse a la shell que
nos diga cuantos slots tiene reservados
para los comandos:
$ echo $HISTSIZE
500

Cuando la shell alcanza este umbral, el


comando en la parte superior de la lista

comienza a desaparecer
para
dejar sitio a otros
nuevos. Para evitar el desgaste de
la tecla [Flecha
arriba]
Bash
incluye una funcin de bsqueda. Si se pulsan los atajos de
teclado [Ctrl-R] o
[Crtl-S] (ver el
cuadro Atajos de
Teclado
de
Bash) se pueden
realizar bsquedas adelante o
hacia atrs a travs de la historia
Figura 1: Todo es una variable. env presenta una lista completa de
para un comando
variables de entorno Bash.
determinado. El
prompt cambia para que esto quede
el valor predeterminado. Por ejemreflejado, por ejemplo, pulsando [Ctrl-R]
plo, fc -l -5 dar los ltimos cinco
sita el siguiente prompt en la pantalla:
comandos.
La herramienta script proporciona
(reverse - i - search) `:
un mtodo alternativo para loguear
una sesin de la shell. Puede escriSe escribe el comando (o parte del
birse script MyLogfile antes de arrancomando) que se est buscando a partir
car una sesin de shell extendida,
de los dos puntos. Bash completar los
para grabar los comandos que se
comandos mientras que se est escriintrodujeron y las salidas que creabiendo, de modo que unas cuantas letras
ron. Puede abandonarse el este prcdeberan bastar para encontrar el
tico logueado pulsando [Ctrl] + [D].
comando que se est buscando. Para ejeFicheros de Configuracin
cutar un comando puede usarse este
Bash
mtodo, y luego pulsar [Enter]. Alternativamente, tambin puede llevarse a
Bash viene con toda una coleccin de
cabo manteniendo pulsadas [Crtl] + [R]
ficheros de inicio que modifican el
hasta encontrar lo que se est buscando.
comportamiento de la shell (y otros
Si se pulsa [Esc] es posible modificar el
programas incluidos en el sistema).
comando antes de ejecutarlo.
Para aadir versatilidad a este caos, la
mayora de las distribuciones utilizan
Contexto
diferentes mtodos, asignando difeLas funciones que hemos visto
rentes prioridades a los ficheros de
hasta ahora ayudan a encontrar
configuracin o incluyendo an ms
comandos, pero estn completaficheros.
mente sacadas fuera de contexto.
Usando SSH para iniciar una sesin
Para presentar procesos ms comen una consola virtual que arranca
plejos en la pantalla, bien puede
una shell, sta va precedida de un
verse el fichero historia (~/
signo menos en la lista de procesos:
.bash_history) o bien ejecutar la
shell builtin fc (de Fix Com$ ps auxwww | grep bash
mand). En combinacin con la etihuhnix 3778 0.0 0.3 3056U
queta -l , esta herramienta presenta
1652 tty1 Ss+ May28 0:00U
los ltimos 17 comandos, siendo 17
- bash
el nmero de comandos a mostrar
huhnix 4193 0.0 0.3 3068U
1672 pts/1 Ss May28 0:00U
de manera predeterminada. Puede
/bin/bash
aadirse un nmero para cambiar

WWW.LINUX- MAGAZINE.ES

Nmero 23

79

LINUX USER Lnea de Comandos: Shell

~/.bashrc para
analizar los cambios.
Tambin
puede acortarse
el
comando
introduciendo
~/.bashrc.
El alias builtin
es otra prctica
caracterstica
que permite a los
usuarios definir
comandos que
usan
regularmente junto con
su tpica eleccin de opciones, y asignar un
nombre
ms
Figura 2: Las variables de entorno permiten a los usuarios modificar el
corto e intuitivo
comportamiento de Bash y de muchos otros programas.
a todo el mogolln. La mayora
La shell comprueba primero el direcde las distribuciones definen unos
torio de inicio de los usuarios para
cuantos alias por defecto. Para conocer
~/.bash_profile. Si este fichero se
los alias de la versin que se dispone se
encuentra perdido, bash busca priescribe el comando alias en el prompt:
mero ~/:bash_login, y luego /etc/
profile o ~/.profile.
$ alias

Shells Interactivas
Adems de todo lo anterior, existen
shells interactivas, tales como las que
se arrancan desde dentro de otras
shells. stas incluyen Xterms u otros
programas de consola en interfaces de
usuario grficas. Las preferencias para
estas shells se almacenan en la privada
~/.bashrc, o en el fichero del sistema
global /etc/bash.bashrc, donde tambin
se aaden las definiciones alias y las
variables de entorno discutidas en este
artculo.
Aunque se modifique el propio ~/
.bashrc, bien se necesita arrancar una
nueva shell, o bien introducir source

alias ls=ls U
color=auto

Para definir un alias para la sesin shell


actual se escribe el comando alias
seguido del nombre del nuevo atajo, un
signo igual y el comando (entre comillas), como en:
alias ll=ls -l

El comando unalias permite liberar cualquier atajo que no sea necesario. Por
ejemplo, unalias ll se deshara del alias
que acabamos de definir. Para obtener un
alias persistente es preciso aadir la definicin al fichero ~/.bashrc y parsearlo.

Tabla 1: Atajos de Teclado de Bash


[Ctrl-A]
[Ctrl-E]
[Esc-B]
[Esc-F]
[Ctrl-B]
[Ctrl-F]
[Ctrl-K]
[Ctrl-U]
[Ctrl-W]
[Ctrl-T]
[Esc-T]
[Ctrl-L]

80

Mueve el cursor hasta el principio de la entrada.


Mueve el cursor hasta el final de la entrada.
Mueve el cursor una palabra hacia atrs.
Pasa el cursor a la siguiente palabra.
Mueve el cursor un carcter atrs.
Pasa el cursor hasta el siguientes carcter.
Elimina desde la posicin del cursor hasta el final de la entrada.
Elimina desde la posicin del cursor hasta el principio de la entrada.
Elimina la palabra a la izquierda del cursor.
Intercambia el carcter bajo el cursor con el carcter a la izquierda del cursor.
Intercambia las dos palabras precedentes.
Limpia el contenido de la ventana terminal.

Nmero 23

WWW.LINUX- MAGAZINE.ES

Todo es Variable
Las variables de entorno permiten
extender el nmero de caractersticas
de la shell y modificar el comportamiento de otros determinados programas. El sistema viene con un juego de
variables por defecto, tales como el
ejemplo HISTSIZE (ver la seccin
Buena Memoria). Puede usarse el
comando echo para presentar el valor
de la variable, recordando que hay que
anteponer el signo dlar a la variable:
echo $HISTSIZE

Si se est interesado en una lista


completa de todas las variables de
entorno de Bash, puede escribirse
env en la lnea de comandos para
obtenerla (Figura 1).
Ejecutando el comando export
estableceremos una variable. Por
ejemplo, si se desea ejecutar un programa en un lenguaje distinto solamente una vez, se establece temporalmente la variable LC_ALL y se
aade el nombre del ejecutable despus de un espacio en blanco.
LC_ALL=fr_FR firefox

El comando arrancara este popular


navegador en francs. Tambin
puede usarse el comando unset para
deshabilitar una variable establecida
en la shell actual como sigue:
unset LS_COLORS

Para establecer una variable de forma


persistente se aade el comando
export a ~/.bashrc. La Figura 2 muestra un fichero de configuracin Bash
comentado con varios ejemplos de

tiles variables.

GLOSARIO
Builtin: Un builtin no es un ejecutable independiente, sino
comandos de la shell integrados.
Los builtins rara vez tienen su
propia pgina man, sino que se
describen en la pgina de bash
(man bash).

RECURSOS
[1] HOWTO del prompt de Bash: http://
www.tidp.org/HOWTO/
Bash-Prompt-Howto/

Vous aimerez peut-être aussi