Les perles de @climagic (et co)

Ça commence à faire un ~~petit~~ bon moment (juste 3 ou 4 mois) que je n'ai rien publié sur ce blog. Un retour tout en douceur s'impose donc, et pour cela, je vais faire d'une pierre deux coups, puisque je vais également vider mes favoris Twitter :-)

En effet, depuis pas mal de temps, je follow le compte @climagic, qui publie plusieurs fois par jour des commandes bash un peu "tunées" qui permettent de réaliser des actions souvent utiles, parfois drôles,et de temps en temps totalement inutiles (et de fait, Oh combien nécessaires dans les alias de tout bon admin système :D ). Et comme je trouve souvent ces commandes plutôt cools, je les mets dans mes favoris Twitter pour m'en rappeler et les rajouter dans mes alias par la suite. Sauf que, comme tout bon g33k qui se respecte, je n'avais encore jamais fait de tri là dedans et je me retrouve avec une liste de favoris énorme (CTB, oui, je sais... :P ).

J'ai donc testé tout ce que j'avais, pour ne garder que la crème de la crème , autant pour vous que pour moi (comme ça, j'en garde une trace!). ~~Et vu que je suis sympa, je vais vous filer un petit script à la fin qui rajoutera tout ces alias à votre .bashrc :-).~~ EDIT : finalement, j'avais trop de commandes, la flemme de faire un script ce soir, je verrais plus tard.. :P

Disclaimer : Les commandes présentées ici sont toutes, sauf mention contraire, l'oeuvre de @climagic et tous les droits lui reviennent

Disclaimer 2 : Certaines des commandes présentées ici sont très simples et connues de beaucoup de barbus, cependant, elles pourraient être utiles à des gens qui débutent sous Unix-GNU/Linux et qui ne connaissent pas tous les rouages de la chose :)

  • $ mkdir -p maildir/{tmp,cur,new} : Utilisation des accolades "{", qui permettent d'appeler la commande successivement avec toutes les valeurs entre les accolades, séparées par des virgules. En réalité, la commande équivaut à mkdir -p maildir/tmp maildir/cur maildir/new ;
  • $ sed '/\\^$/d' prog.c > proc-condensed.c : Récupère toutes les lignes non vides (excodession régulière '\\^$/d') du fichier prog.c et place le résultat dans prog_condensed.c ;*
  • find . -ls | sort -n -k 7 | tail -5 : Affiche les 5 plus gros fichiers présents dans l'arborescence ;
  • $ EXTIP=$(curl -s "whatismyip.org") : Défini une variable globale qui contiendra votre adresse IP publique ;
  • $ rev \\<\\<\\< "sentence to reverse" : Inverse le sens des lettres de la phrase ;
  • $ exiv2 -k -F rename *.jpg : Renomme tous les fichiers .jpg du répertoire courant en leur donnant un nom de la forme "YYYYMMDD_HHmmSS.jpg", en récupérant les informations de date/heure dans les données EXIF de la photo ;
  • $ jp2a ubuntu_logo.jpg -b --color : Converti une image JPEG en ascii art dans votre terminal. L'option '--color' active la couleur, le '-b' dessine une bordure autour de l'image. Exemple dans l'image plus bas :P(nécessite d'avoir activé les dépôts universe (pour Ubuntu et dérivés en tout cas...)) ;
  • $ dd if=/dev/VG0/var | gzip -c - > /backups/var-image.gz : Crée un backup du répertoire /dev/VG0/var ;
  • $ acronym(){ elinks -no-numbering -dump "acronymfinder.com/$1.html" |sed -r '/(*{4,}|This definition)/!d'; } : Fonction utile qui recherche sur le Web la définition d'un acronyme. Exemple : $ acronym HTTP
  • $ sshfs user@remotehost:/remotedir mydir : Monte un répertoire distant comme un répertoire local un utilisant FUSE et SSH ;
  • $ lsusb -v | egrep "(\\^Bus|bcdUSB)" : Liste les périphériques USB connectés ainsi que la version utilisée (USB2, USB3, ...) ;
  • $ openssl s_client -crlf -quiet -connect \\:\\ : Démarre une connexion SSL avec la machine donnée sur le port défini, par exemple pour tester des protocoles sécurisés comme HTTPS (équivalent à un nc mais en sécurisé ;) ) ;
  • $ gnutls-cli -s --crlf \\ -p \\ : Idem que la précédente ;
  • $ pdftohtml -stdout my.pdf > my.pdf.html : Exporte un document PDF vers une page HTML ;
  • $ mcd() { [[ -n "$1" ]] && mkdir -p "$1" && cd "$1"; } : Fonction qui crée un répertoire ( mkdir ) puis se déplace ( cd ) dans celui-ci ;
  • $ mcd() { mkdir -p "${@}" && cd "${1}"; } : Comme la précédente, à la différence que l'on peut créer plusieurs répertoires d'un coup, puis se déplacer dans le codemier d'entre eux ;
  • $ netstat -nape --inet : Affiche la liste des connexions actives ;
  • $ netstat -lepunt: Affiche la liste des ports TCP et UDP qui sont en mode LISTEN et le processus/user associé ;
  • $ quvi --exec 'mplayer %u' '\\' : Lit une vidéo YouTube dans mplayer sans passer par Flash. By @gordontesos ;
  • $ getent services \\ : Cherche dans la table locale des services celui qui est associé au port donné en paramètre ;
  • $ \\ ;xmessage -nearmouse "DONE" : Après l’exécution de la commande, affiche une boîte de dialogue contenant le texte "DONE" près de la souris ;
  • $ \\ ;zenity --info --text="DONE" : La même que précédemment, mais en utilisant le programme zenity (fenêtre GTK+) ;
  • $ for m in {0..200}; do date -d "2012-07-13 + $m months";done|grep -i \\^Ven : affiche la liste des prochains vendredis 13 dans les 200 prochains mois (dédicace aux superstitieux comme moi ;) ). Si votre système est en anglais, remplacer le "Ven" par "Fri" (pour "Friday") ;
  • $ montage -geometry 1280x1024+4+4 ubuntu.jpg netbsd.jpg debian.jpg backtrack.jpg -tile x2 distros.jpg : Réalise un montage avec 4 images, de 1280px par 1024px, en réalisant 2 lignes de 2 colonnes. (Exemple plus bas) ;
  • $ sox song.wav -t wav - pitch 1200 | play - : Joue la piste audio "song.wav", avec un pitch de 1200, soit 12 demi-tons au dessus, ou 1 octave plus haut que le morceau original. (Paquet "sox" dans les dépôts Universe, installer aussi "libsox-fmt-all" pour lire des mp3 ou des ogg) ;
  • $ pwd -P : Affiche le répertoire courant, en remplaçant les liens symboliques par le chemin (P)hysique ;
  • $ awk '$9 == "404" {print $7}' access.log |sort|uniq -c|sort -rn| head -n 50 : Affiche la liste des 500 urls menant à des erreurs 404 les plus renvoyées par le serveur local Apache (généralement, répertoire '/var/log/apache2'). Via @warzauwynn
  • $ ps -e -orss=,pid=,args= | sort -b -k1n | pr -TW$COLUMNS : Trie les processus les plus gourmands en mémoire. Via @Albahtaar ;
  • $ touch -r origfile newcopy : Donne à newcopy le timestamp de origfile ;
  • $ aplay /bin/bash : L'alarme du pauvre. Lit un fichier quelconque comme s'il était un média audio (conseil : baissez le son de votre machine avant de lancer la commande ;-) ) ;
  • $ trickle -d 50 wget \\ : Utilise trickle pour limiter la bande passante descendante d'une commande à 50 kB/s ;
  • $ >file : Crée, ou supprime son contenu s'il existe déjà, le fichier 'file' ;
  • $ scrot* : Utilitaire permettant de faire des captures d'écrans directement depuis un terminal ;
  • $ rename 's/ /_/g' * : Renomme tous les fichiers du répertoire courant en remplacant les espaces par des underscores '_' ;
  • Sur un "serveur" : $ nc -l 8765 \\< video.avi, et sur un "client" : $ nc server 8765 > mplayer -cache 1000 - : Service de streaming perso. Un serveur streame la vidéo, le client récupère le flux et le fait lire par mplayer ;
  • $ awk -F: {'print $1 ":" $2'} messages |uniq -c : Affiche le nombre de messages syslog par minutes ;
  • $ declare -f func_name : Affiche la définition d'une fonction définie par l'utilisateur ;
  • $ for d in {1..5}; do printf ${RANDOM: -1:1}; done; echo : Génère un code secret "aléatoire" à 5 chiffres ;
  • $ find . -empty -type d : Liste les sous-répertoires vides. Via @mariosangiorgio ;
  • $ ps aux | awk '{if ($8=="Z") { print $2 $11}} : Affiche les PID et nom des processus qui sont dans l'état 'ZOMBIE' ;
  • $ debtree coreutils > coreutils.dot && dot -T png -o coreutils.png coreutils.dot : Crée une image contenant le graphe des dépendances du paquet 'coreutils'. Via @fern4lvarez ;
  • $ ping -i0.2 \\|awk -F[= ] '/time=/{t=$(NF-1);f=3000-14\\*log(t\\^27);c="play -qn synth pl " f " fade 0.1s 1 &";print $0;system(c)}' : Joue des sons en fonction du temps nécessaire pris par les paquets ping pour revenir à votre machine ;
  • $ lsof /dev/video0 : Liste les processus qui utilisent la webcam ;
  • $ ls -1d \\~/.* | grep -v '\\~$' | wc -l : Compte le nombre de 'dot files' dans votre Home Directory. Via @bortzmeyer
  • $ last | grep -A1 -m1 "\\^$(whoami) " : Affiche la dernière personne à s'être connectée avant vous sur votre machine ;
  • $ sort -nt . -k 1,1 -k 2,2 -k 3,3 -k 4,4 IPAddresses.txt : Trie une liste d'adresses IPv4 ;
  • $ exif *.JPG | grep "F-Number" | cut -d| -f2 | sort | uniq --count | sort -n : Affiche la liste des focales les plus utilisées à partir des données EXIF de vos photos. Via [@b_doin][] pour @gchampeau ;

Et voilà, je pense avoir fait le tour de la plupart des commandes que j'avais en stock, si j'en trouve, je mettrais à jour l'article et diffusant la MAJ sur Twitter ;-)

$ montage -geometry ...


$ jp2a
Vus : 334
Publié par Quack1 : 122