bash history meme reloaded



$ history|awk '{a[$2]++} END{for(i in a){printf "%5d\t%s\n",a[i],i}}'|sort -rn|head
90 vi
50 cd
40 ls
34 python
33 sudo
21 ll
14 man
14 apt-cache
13 perl
12 mv

No había notado que ahora estoy editando tanto, vim siempre ha sido mi editor favorito, pero la vez anterior estaba en tercer lugar, por lo demás parece que ahora estoy haciendo más cosas “administrativas”, seguro la mayoría de los sudos son “sudo apt-get …”, python aparece en los primeros lugares !! eso si es sorpresa, perl también aparece!!, konqueror desapareció, ahora lo uso casi exclusivamente a traves de “alt-F2”. Otra cosa es que ya no bajo tanta cosa, ultimamente solo he usado el bittorrent para bajar algun disco que le hace falta a mi aipo.



Los mas usados


$ echo $HISTCONTROL
ignoreboth,erasedups
$ history|awk ‘{print $2}’|awk ‘BEGIN {FS=”|”} {print $1}’|sort|uniq -c|sort -rn|head -10
130 ls
53 cd
20 vi
14 btdownloadcurses
12 sudo
12 qemu-img
11 rm
11 mv
10 ps
10 konqueror

Tengo compulsion por hacer listado (ls -lrt sobre todo), examino muchos directorios, y les hago ls mas de una vez a cada uno :).

Mi editor es vi, y es la neta.

Bajo muchos manuales con bittorrent, todos legales por supuesto !

Me gusta la comodidad de sudo, cambien me gusta hacer pruebas con qemu cuando necesito sacar fotos de un ambiente gráfico por ejemplo.

Borro y muevo cosas frecuentemente, y tambien tengo una compulsion no tan grave de ver que procesos estan comiendose mi cpu, y por supuesto, uso konqueror para casi todo lo que significa navegación (iceweasel solo corre gmail y mail de yahoo)

Todo se ve diferente con la configuracion de HISTCONTROL que uso desde hace un par de semanas !



Bajar la quota en un servidor de Correo que tiene Maildir


Hoy me vi en la penosa necesidad de limpiar cuentas en un servidor que es exclusivamente para correo, a prueba y error fuí perfeccionando un script que al final funciona tal como lo que necesito, podría ser perfeccionado, pero no le veo el sentido a hacerlo mas complicado.

El script es sencillo, pero hay detallitos que pueden ser muy relevantes, por ejemplo hay que ser cuidadosos con los nombres de directorios que tienen espacios (export IFS=$’\n’), por lo demás todo se limita a irte usuario por usuario corriendo este script, el script toma como primer argumento el nombre del usuario, y asume que todos los usuarios estan en /home/nombre.de.usuario, por lo que si no están ahá habráa que modificarlo para agarrar el $HOME verdadero, lo cual no deberia ser muy dificil.


#!/bin/bash
# $1 == usuario
if [ -d /home/$1/Maildir/ ] ; then cd /home/$1/Maildir/; else echo "no existe el directorio /home/$1/Maildir/"
; exit 1; fi
export IFS=$'\n'
for d in `find . -name cur -type d |sort -r`
do
cd "/home/$1/Maildir/$d/"
pwd
for i in `ls -rt`
do
#echo $i
quota=`repquota -a | grep $1 | awk '{print $3}'`
#echo -n "quota: $quota "
if [ $quota -gt 11000 ] ; then
#echo " -- Voy a borrar $i"
rm $i
else
echo "Terminamos, Quota final: $quota ($1)"
exit 0
fi
done
done

Hay una serie de “echo”s comentados, porque los use para debugear, pero dan mucho ruido, al final solo reporto la quita final para verificar que se hizo lo correcto.

Cabe notar que si no tienes el formato Maildir, simplemente esto no sirve de nada, si usas Mailbox tienes un archivo por carpeta, y hay que hacer todo un show para borrar los mensajes con herramientas especiales, es mucho mejor simplemente usar siempre Maildir :), asi puedes detectar mensajes masivos facilmente (ls -lrS), y es mucho mas facil depurar automaticamente (goodthing ™).