bash and shell tips and tricks

Le but de cet l’article est de partager avec vous des petits “trucs”, que nous rédacteur geekfault utilisons dans nos consoles préférées tous les jours, et souhaitons échanger avec vous petits scarabées.

En faite mon idée est partie de ce petit délire que m’a sorti khemael :


tr -c "[:digit:]" " "

Les astuces sont livrées de façon brute de fonderie.
Noob s'abstenir.

Nota Noob : Ne tappe pas une commande sur ton shell que tu ne comprends pas.

Some of madx's tricks

Redirections


commande 1> fichier : Redirige stdout dans fichier
commande 2> fichier : Redirige stderr dans fichier
commande 2>&1 : Redirige stderr vers stdout
commande &> fichier : Redirige stdout et stderr dans fichier

Fork bomb ! Warning, ne pas utiliser ça sur un serveur non protégé :)


f(){ f|f&};f

Bash and perl regexp


for i in * ; do mv "$i" "`echo $i | perl -pe 's/foo_regex/bar/' `"; done
for i in *.gif ; do convert "$i" "`echo $i | perl -pe 's/gif$/png/' `"; done

scp resume


rsync --partial --progress -e ssh file user@host:/dir

Remote backup


tar -cv / | ssh user@host -T -e none "cat > backup.tar"
ssh root@host "tar -c /" | cat > backup.tar

burning


mkisofs -v -R -r -V "dvd title" -o dvd.iso file1 file2 ...
cdrecord -v -dao -fs=500m -dev=/dev/sg1 -data dvd.iso
cdrecord -dev=/dev/sg1 blank=fast

perl regex sur un fichier


perl -pi -e 's/^(#)?TIMEZONE=.*$/TIMEZONE="Europe\\/Paris"/' /etc/conf.d/clock

encode to theora/ogg


ffmpeg -i whatever.avi -f ogg -vcodec libtheora -vb 2000k -acodec libvorbis -ab 128k -y whatever.ogg

Some of bragon's tricks

Perfect rsync + remote


#!/bin/sh
time /usr/bin/rsync \\
--rsh="ssh -2 -l root" \\
--verbose \\
--archive \\
--hard-links \\
--numeric-ids \\
--progress \\
--stats \\
--delete \\
--exclude "/proc/*" \\
--exclude "/sys/*" \\
--exclude "/vservers/*/proc/*" \\
--exclude "/vservers/*/dev/*" \\
--exclude "/vservers/*/sys/*" \\
--exclude "/data/*" \\
/vservers/sam/ gerontius:/vservers/sam/

config backup


cp /etc/httpd/conf/httpd.conf{,.bak}


for file in * ; do cp $file $file.bak; done

Afficher un calendrier rapidement


cal -3

La date d'aujourd'hui


date +%d-%b-%Y
16-May-2010

today=$(date +%d-%b-%Y)

echo $today
16-May-2010

repeting an argument


mkdir /path/to/exampledir
cd !$

Majuscule are useless


bragon@shaytan ~ $ shopt -s cdspell
bragon@shaytan ~ $ cd Downloads/
bragon@shaytan ~/Downloads $ cd
bragon@shaytan ~ $ cd downloads
Downloads
bragon@shaytan ~/Downloads $

Socket information sur ta workstation


ss -ari
ss -arn

Change user shell


chsh -s /bin/bash utilisateur # lui definir bash en tant que shell
chsh -s /bin/false utilisateur # pas de shell
chsh -s /bin/zsh utilisateur # zsh

iptables line del


iptables -L -n --line-numbers
iptables -D INPUT 34 # vires la ligne 34

history clean / dmesg clean


history -c
dmesg -c

petit script de screenshot


#!/bin/bash
export DISPLAY=":1"
/usr/bin/firefox --display :1 "$1" > /dev/null 2> /dev/null &
/bin/sleep 10
/usr/bin/import -window root -display :1 "$2"
killall firefox-bin

Se déconnecter d'un ssh quand on a timeout pour récupérer sa console


~.

Some of khemael's tricks

Relancer la commande en root


su -c !!

nice output of mount


mount | column -t

Query wikipedia à travers le DNS


dig +short txt .wp.dg.cx

afficher les 10 processus les plus gourmant en RAM


ps aux | sort -nk +4 | tail

"BEEP" when the IP comes online


ping -a IP_address

Extract a tarball without local saving.


wget -qO - "http://www.tarball.com/tarball.gz" | tar zxvf -

My cool terminal clock :)


watch -t -n1 "date +%T|figlet"

Binary clock


watch -n 1 'echo "obase=2;`date +%s`" | bc'

Quick share of a file through a port


nc -w 5 -v -l -p 80

Stream youtube url directly to mplayer (no cclive needed)


mplayer -fs $(echo "http://youtube.com/get_video.php?$(curl -s $youtube_url | sed -n "/watch_fullscreen/s;.*\\(video_id.\\+\\)&title.*;\\1;p")")

Vus : 449
Publié par Geekfault : 45