En vrac (5)

Publié le 20 août 2007 par Peck
Cet article est maintenant sur http://linux-attitude.fr/post/En-vrac-5

Niveau :
Résumé : moreutils

Exécuter une commande inline sur un fichier à travers un pipe
$ grep "crève pourriture communiste" fichier | sponge fichier
Car vous savez que la commande suivante ne marche pas (le fichier serait ouvert en écriture et vidé avant de pouvoir être lu par grep)
$ grep "un pull over ca moule" fichier > fichier

Rediriger une commande dans un fichier ET dans la sortie standard (utile pour débugger une suite de pipe). Utilisez l'option -a pour ajouter à la fin du fichier de logs plutôt que le remplacer :
$ echo "mazout ne pas se jeter dedans" | tee -a /var/log/peur

Envoyer une commande sur 2 autres (ici utilisé comme équivalent de tee)
$ echo "- un serial killer - un quoi ?" | pee "cat" "cat >> /var/log/peur"

Debugger une chaine de commande en pipe (un editeur s'ouvre ($EDITOR) et vous permet d'éditer tout le contenu du pipe)
$ echo -e "plic plocnplic plocnmiaou" | vipe | grep -v miaou

Je vous ai parlé de la commande comm, voici la même chose en mieux car plus simple à comprendre :
$ combine ./dansons xor ./carioca
# opérations disponibles : and, or, not (en réalité and not) et xor

Surveiller la progression d'une commande (commande du paquet pv), vous avez une bare de progression universelle ici :
$ tar c ~/tapette_geante | pv -ptr | gzip > commissaire.tgz
Si vous connaissez la taille des données, vous pouvez avoir une barre de progression plus précise
$ tar c ~/tapette_geante | pv -ptre -s `du -sb ~/tapette_geante` | gzip > commissaire.tgz
Mieux, pv permet de limiter le débit de ce qui passe à travers un pipe
$ echo 'Barrez-vous cons de mime !' | pv -q -L 5