Aprendiendo Perl, el reto: historia popular

Javier Tiá javier.tia en gmail.com
Mar Jul 10 17:43:39 PDT 2012


Hola Marcelo,

2012/7/10 Marcelo <marcelo.magallon en gmail.com>:
> Hola,
>
> gracias por la contribución.
>
> No me aguanto las ganas de comentar sobre este pedazo en particular:
>
> 2012/7/8 Javier Tiá <javier.tia en gmail.com>:
>
>>     my $get_cmds =
>>         qq/$ENV{'SHELL'} -i -c "history -r; history"/
>>         . q/ | awk '{for (i=2; i<NF; i++) printf $i " "; print $NF}'/;
>>
>>     chomp(my @cmds = qx# $get_cmds #);
>
> admito una reacción alérgica a la prescencia de awk ahí, pero en
> realidad no comento por eso, sino más bien porque la salida de
> "history" no es estable como para tratar de parsearla en esta forma.
> Por ejemplo, en mi caso una línea de esa salida se ve así:
>
>  2336  Tue, 10 Jul 2012 15:00:00 -0600 cd

Me alegra saques a relucir este pedazo de código. De todo el script,
dicha parte fue la que más tiempo me tomó. Buscando respuesta a esta
pregunta:

  ¿Cómo puedo leer la historia de una manera portable? ...


En mi caso, también el formato de la historia es diferente:

    2512  18:01 vim t

Pero fue porque yo cambié el formato en mi '.bashrc', asumo que
también cambiaste el suyo.
Tampoco aplicaría mi solución, aunque solo tendría que cambiar 2 por 3
en el ciclo de awk. En tu caso por otro número "especial".

Aplicaría para todo usuario que no haya tocado el formato de su
historia, como viene por defecto en Bash, format de la historia:

   <Nro historia><ESPACIOS><COMANDO>

No cubre todos los casos, pero si la mayoría.

Saludos,

-- 
Javier


Más información sobre la lista de distribución Costarica-pm