reemplazo en bash

Mauricio Vergara Ereche mave007 en inf.utfsm.cl
Sab Abr 17 23:09:27 CLT 2004


On Sat, Apr 17, 2004 at 09:03:04PM -0400, Alvaro Herrera wrote:
> Hola,
>

holap

> Hace un par de dias me di cuenta de un truco en bash que no conocia:
> reemplazo en la historia de mandatos con el caracter ^  Por ejemplo, si
> acabo de ejecutar
> 
> rm -fr /home/alvherre
> luego hago
> ^alvherre^vonbrand
> y automaticamente se ejecuta
> rm -fr /home/vonbrand
> 

eehh!! vivan los bash-maniacs! :)

Una cosa que hay que tener en cuenta con ese reemplazo, es que sólo tomará
la primera ocurrencia que exista en la línea... Del ejemplo de Alvaro, si en
vez de escribir ^alvherre^vonbrand pongo algo asi como... ^r^t
quedará:
tm -fr /home/alvherre

o sea... no reemplazo todas las "r"... sino que sólo la primera.

OTRO Tip!

Una de las cosas que más me molestaba cuando creaba un directorio dentro de
bash, era tener que entrar a él y escribir el nombre completo de nuevo de
ese directorio (si claro... con el TAB se ayuda... pero si los nombres son
muy parecidos, no sirve de mucho)

Encontré una expansión que repite el último argumento del comando
anteriormente ejecutado... !$

Por ejemplo:

Primero hago algo como crear un dir...
mkdir MiLindoNuevoDirectorio
Luego escribo
cd !$
y esto se reemplaza automáticamente por
cd MiLindoNuevoDirectorio

aahhh q liiiindo!... pero qué pasa si quiero repetir todos los argumentos
que le pasé al último comando?
Bueno... para eso tenemos !*

Por ejemplo:
Quiero compilar algo con gcc, pero al muy bestia le dio laguna mental y lo
compiló con python2.2 

Ejemplo:

python2.2 -Wall -O2 source.c -o ejecutable
Y me da lata escribir ^python2.2^gcc ... Asi que escribo:
gcc !*
Y con eso bash me lo expandirá a:
gcc -Wall -O2 source.c -o ejecutable

Finalmente... si quiero estar seguro de qué cosa me arrojará el comando,
pero no quiero ejecutarlo (pero sí dejarlo en el HISTORY), entonces le saco
la lenga... ¿ahh? ¿como? sisisisi... le saco la lengua -> :P

Por ejemplo:

Del ejemplo de alvaro...

rm -fr /home/alvherre
pero no estoy seguro de hacer el comando para borrarle la cuenta a HvB, pero
si dejarlo en history... agrego al final una sacada de lengua :P
^alvherre^vonbrand:P
y bash me realiza la expansión, pero no la ejecuta sino que la deja en el
history:
rm -fr /home/vonbrand

Eso... más paltas-tips de Bash... ver en:

http://www.inf.utfsm.cl/~mave007/Presentaciones/Bash

Saludos!

-- 
         .----.                                                          
      _.'__    `.    Mauricio Vergara Ereche            +5691241718      
  .--(#)(##)---/#\   counter.li.org: #188365   	        Valparaíso, CHILE
.' @          /###\  http://www.inf.utfsm.cl/~mave007                    
:             #####  http://www.usci.inf.utfsm.cl                            
 `-..__.-' _.-\###/  Unidad de Servicios de Computacion e Internet       



Más información sobre la lista de distribución Linux