Posts Tagged “bash”

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 http://ftp.gnu.org/gnu/coreutils/coreutils-8.4.tar.gz
$ tar xvzf coreutils-8.4.tar.gz
$ cd coreutils-8.4/
$ wget http://beatex.org/web/advcopy/advcpmv-0.3-8.4.patch
$ 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
Tag: bash, bashrc, cp, mv, terminale, Tips & Tricks
18 Commenti »

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
Tag: bash, bashrc, man, shell bash, terminale, Tips & Tricks
5 Commenti »

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
Tag: bash, diff, find, Tips & Tricks, uninstall
2 Commenti »
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)
Tag: bash, shell, shell bash
5 Commenti »
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
Tag: awk, bash, bashrc, history
1 Commento »

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.
Tag: bash, countdown, script, Tips & Tricks
2 Commenti »
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
Tag: awk, bash, ls, shell, Tips & Tricks
6 Commenti »

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
Tag: bash, shell
3 Commenti »
|