Cambiare misure default del terminale

 

 

Il terminale di Gnome di default ha una determinata misura, ma se si volesse più grande o più piccolo non ci sono grandi problemi, basta solo uno step:

 

$ sudo nano /usr/share/vte/termcap/xterm

 

e modificare questa stringa:

 

:co#80:it#8:li#24:\

 

per esempio con questa:

 

:co#100:it#8:li#28:\

 

 

enjoy 😉

Copiare con cp e barra di progresso

 

 

 

 

Advanced Copy è una mod per i tools cp e mv, e si occupa di far apparire nel terminale una barra di progresso che rende visibile il tempo e la % di una copia di un file. Per abilitare questa mod, bisogna seguire pochi semplici passi:

 

 

$ wget https://ftp.gnu.org/gnu/coreutils/coreutils-8.4.tar.gz
$ tar xvzf coreutils-8.4.tar.gz
$ cd coreutils-8.4/
$ wget
$ patch -p1 -i advcpmv-0.3-8.4.patch
$ ./configure
$ make
$ sudo cp src/cp /usr/bin/cp
$ sudo cp src/mv /usr/bin/mv

 

per avere la barra di progresso basta usare le opzioni cp -g e mv -g, senza andare a cambiare il comportamento solito di cp e mv. Per rendere definitivo il cambiamento invece aggiungere a .bashrc  gli alias:

 

alias cp='cp -g'
alias mv='mv -g'

 

Il comando dell' immagine sopra è:

 

$ cp -g debian-squeeze-di-beta1-amd64-netinst.iso /home/edmond/

 

 

enjoy 😉

Bloccare visualizzazione pagina man all'uscita

 

 

Questo è un piccolo trucchetto che secondo me può risultare molto utile quando si consulta da terminale una pagina man. Spesso infatti spulciando il man di un determinato programma, si apprendono nuove informazioni e nuovi comandi, ma una volta premuto il tasto q e si esce dal man, l'informazione o il comando non è più visibile, di conseguenza ci si trova nella situazione di tenere aperte due shell. Per ovviare a questo problema basta modificare .bashrc:

$ echo "export LESS='FiX'" >> ~/.bashrc

enjoy 😉

Uninstall programmi installati da sorgenti

 

 

Dopo vari esperimenti l'altra sera non riuscivo più a compilare, poichè avevo in precedenza installato da sorgenti alcune cose, che alla fin della fiera mi hanno compromesso il sistema (chiedere a toshidex 🙂 ) perdendo il bandolo della matassa. Comunque il problema lo avevo individuato, ma dopo svariati tentativi andati a vuoto, mi sono stancato ed ho preferito reinstallare. Certo se fosse stato un problema dovuto a qualche aggiornamento giornaliero fatto, il problema lo avrei risolto semplicemente in questo modo. Ma in questo caso avendo installato con make-install, senza quindi nemmeno checkinstall,  addio tracce di tutti i file installati. Quindi questa guida serve soprattutto a me, giusto per ricordarmi che quando faccio qualche test è sempre meglio avere una lista di quello che faccio 🙂 Per tenere traccia dei file ci sono due metodi:

Primo metodo:

# make uninstall

ma trovare un tarball che include questo è quasi come vincere al superenalotto 🙂

Secondo metodo:

prendere nota di tutti i file installati:

# find /* > pacchetti.prima

a questo punto eseguire il make-install

quindi prendere nota di tutti i file dopo l'installazione:

# find /* > pacchetti.dopo

ottenere le differenze tra i due file usando diff:

# diff pacchetti.prima pacchetti.dopo > uninstall

iniziare la rimozione:

# for i in $(grep ">" uninstall | awk '{ print $2 }')

do

/bin/rm -fi $i;

done

a questo punto compariranno a video i file da disinstallare, e basta scrivere yes.

 

enjoy 😉

Benchmark bash dash ksh csh zsh

 

PoisonBit per lavori che sta facendo a voluto fare dei test per decidere quale shell usare, a questo proposito ha fatto un test per verificarne le performance. Io ho modificato questo script aggiungendo ulteriori shell. Lo script è il seguente:

 

#!/bin/bash

testdir=$HOME/test
mkdir -p "$testdir"
printf '#!/bin/dash --\n\n' > "$testdir/dash"
printf '#!/bin/bash --\n\n' > "$testdir/bash"
printf '#!/bin/ksh --\n\n'  > "$testdir/ksh"
printf '#!/bin/csh --\n\n'  > "$testdir/csh"
printf '#!/bin/zsh --\n\n'  > "$testdir/zsh"
chmod +x "$testdir"/*

for i in 1 10 100 1000 10000
do
    for shell in 'bash' 'dash' 'ksh' 'csh' 'zsh'
    do
        result=''
        printf "$shell\t$i\t"
        result="$(
            (time for ((x=0; x < $i; x++));
             do
                 "$testdir/$shell";
             done) 2>&1 | awk -F\  '/real/{print $2}'
        )"
        printf "$result\n"
    done
    printf -- '-------------------------\n'
done

 

salviamo come test-shell.sh

$ chmod a+x test-shell.sh

 

lo lanciamo con:

$ ./test-shell.sh

 

come si può vedere dai risultati il più performante è dash, ma questo era prevedibile, quello che è interessante sono proprio le differenze in termini numerici tra di loro.

 

edmond@debianbox:~$ ./testshell.sh
bash    1    0m0.002s
dash    1    0m0.001s
ksh    1    0m0.002s
csh    1    0m0.004s
zsh    1    0m0.003s
————————-
bash    10    0m0.021s
dash    10    0m0.009s
ksh    10    0m0.019s
csh    10    0m0.039s
zsh    10    0m0.032s
————————-
bash    100    0m0.202s
dash    100    0m0.088s
ksh    100    0m0.181s
csh    100    0m0.380s
zsh    100    0m0.294s
————————-
bash    1000    0m1.900s
dash    1000    0m0.867s
ksh    1000    0m1.793s
csh    1000    0m3.759s
zsh    1000    0m3.078s
————————-
bash    10000    0m19.689s
dash    10000    0m8.577s
ksh    10000    0m17.453s
csh    10000    0m36.365s
zsh    10000    0m29.948s

il vincitore è  Debian Almquist Shell (dash)

Conoscere quante volte si è usato un comando

Per conoscere quali sono i comandi usati più frequentemente ed in quale numero, bisogna andare a spulciare in bash_history, ma se vogliamo velocizzare il tutto basta questo comando:

$ history | awk '{a[$2]++ } END{for(i in a){print a[i] " " i}}'|sort -rn|head

nel mio caso il risultato è questo:

edmond@debianbox:~$ history | awk '{a[$2]++ } END{for(i in a){print a[i] " " i}}'|sort -rn|head
58 mencoder
56 ffmpeg
49 cd
43 swfc
43 sudo
41 su
30 swfextract
26 cat
24 ls
10 phoronix-test-suite
 

in bash_history si trovano numerose  informazioni su quello che si è fatto, e per chi volesse disabilitare lo storico per una maggiore sicurezza:

$ rm -f ~/.bash_history

$ nano ~/.bashrc

ed inserire in fondo queste righe:

export HISTFILESIZE=4
unset HISTFILE
export HISTSIZE=2
export HISTCONTROL=ignoredups

Countdown bash script

 

 

Countdown bash script:

#!/bin/bash
 
if [ "$#" -lt "2" ] ; then
    echo "Incorrect usage ! Example:"
    echo './countdown.sh -d  "Jun 10 2011 16:06"'
    echo 'or'
    echo './countdown.sh -m  90'
    exit 1
fi
 
now=`date +%s`
 
if [ "$1" = "-d" ] ; then
    until=`date -d "$2" +%s`
    sec_rem=`expr $until - $now`
    echo "-d"
    if [ $sec_rem -lt 1 ]; then
        echo "$2 is already history !"
    fi
fi
 
if [ "$1" = "-m" ] ; then
    until=`expr 60 \* $2`
    until=`expr $until + $now`
    sec_rem=`expr $until - $now`
    echo "-m"
    if [ $sec_rem -lt 1 ]; then
        echo "$2 is already history !"
    fi
fi
 
 
while [ $sec_rem -gt 0 ]; do
    clear
    date
    let sec_rem=$sec_rem-1
    interval=$sec_rem
    seconds=`expr $interval % 60`
    interval=`expr $interval - $seconds`
    minutes=`expr $interval % 3600 / 60`
    interval=`expr $interval - $minutes`
    hours=`expr $interval % 86400 / 3600`
    interval=`expr $interval - $hours`
    days=`expr $interval % 604800 / 86400`
    interval=`expr $interval - $hours`
    weeks=`expr $interval / 604800`
    echo "----------------------------"
    echo "Seconds: " $seconds
    echo "Minutes: " $minutes
    echo "Hours:   " $hours
    echo "Days:    " $days
    echo "Weeks:   " $weeks
    sleep 1
done

salviamo il file come bash-countdown.sh:

$ chmod +x bash-countdown.sh

adesso siamo pronti per il conto alla rovescia:

countdown per le ferie:

$ ./bash-countdown.sh -d "AUG 07 2010"

sab 12 giu 2010, 16.49.59, CEST
—————————-
Seconds:  0
Minutes:  10
Hours:    7
Days:     6
Weeks:    7

countdown di 90 minuti:

$ ./bash-countdown.sh -m 90

countdown per Inghilterra-Stati Uniti stasera:

$ ./bash-countdown.sh -d 20:30:00

 

Questo lo script, per chi ha bisogno di un applet, esiste timer-applet.

Recuperare data di nascita di un OS Gnu/Linux

Questo è un semplice comando che serve a determinare la data d'installazione del nostro O.S. Gnu/Linux, a partire dal piu vecchio file di configurazione presente nel nostro sistema.

$ ls -lct /etc | tail -1 | awk '{print $6, $7, $8}'


edmond@debianbox:~$ ls -lct /etc | tail -1 | awk '{print $6, $7, $8}'
10 mar 21.18

Rimuovere i pacchetti del giorno

 

 

A volte ci si spaventa accorgendosi di avere fatto una cazzata, facendo un aggiornamento di cui non si è sicuri, oppure molto semplicemente dopo aver installato un po di pacchetti, per prova o esperimenti vari, si vorrebbe tornare indietro ripulendo il tutto. Ma se i pacchetti installati sono tanti è difficile ricordarsi di tutti. A questo proposito viene in aiuto questo comando che legge i pacchetti del giorno e li rimuove.

grep -e `date +%Y-%m-%d` /var/log/dpkg.log | awk '/install / {print $4}' | uniq | xargs apt-get -y remove

Ma quanto spazio mi occupi

 

Per sapere quali sono i programmi che occupano molto spazio nel nostro sistema, esiste un comando, un pò lunghetto per la verità, ma che ci aiuta a capire chi sono i mostri che occupano così tanto spazio. Io ne ho uno, e si chiama imageshack-uploader, che comunque terrò poichè lo ritengo molto comodo.

56.078 MB linux-source-2.6.30
58.781 MB inkscape
64.422 MB evolution-common
66.570 MB linux-image-2.6.30-1-686
66.574 MB linux-image-2.6.30-2-686
82.582 MB sun-java6-bin
83.547 MB virtualbox-3.0
86.574 MB foomatic-db-gutenprint
106.246 MB openoffice.org-core
570.491 MB imageshack-uploader

Il comando è il seguente:

dpkg-query --show --showformat='${Package;-50}\t${Installed-Size}\n' | sort -k 2 -n | grep -v deinstall | awk '{printf "%.3f MB \t %s\n", $2/(1024), $1}' | tail -n 10

Per modificare il numero di programmi da visualizzare, cambiare il numero successivo a tail -n.