Ça fait quelque temps que j'ai le site http://www.commandlinefu.com/ dans mes flux RSS. C'est un site où chacun-e peut proposer une commande Bash d'une ligne. On peut voter pour son utilité et proposer d'autres solutions. C'est donc trop cool pour apprendre la ligne de command et découvrir plein d'obscures commandes linux !

Voici une première sélection d'une 20e de "one-liners".

1 Renommer tous les fichiers .jpeg et .JPG en .jpg

$ rename 's/\.jpe?g$/.jpg/i' *

2 Ne pas sauvegarder les commandes dans l'historique pour cette session

$ unset HISTFILE

3 Sauvegarder les commandes dans l'historique en temps réel

$ shopt -s histappend ; PROMPT_COMMAND="history -a;$PROMPT_COMMAND"

4 Ne pas enregistrer la commande dans l'historique bash

$ history -d $((HISTCMD-1)) && command_to_run

5 Demander confirmation à l'utilisateur

$ Confirm() { read -sn 1 -p "$1 [Y/N]? "; [[ $REPLY = [Yy] ]]; }

6 Supprimer récursivement tous les fichiesr .html

$ find . -type f -name '*.htm' -delete

7 Split a string into an array

read -a ARR <<<'world domination now!'; echo ${ARR[2]};

8 Empêcher Flash de tracker tout ce qu'on fait

$ for i in ~/.adobe ~/.macromedia ; do ( rm $i/ -rf ; ln -s /dev/null $i ) ; done

9 Matrix du pauvre

$ while (true) ; do pwgen 1 ; done

(il faut apt-get install pwgen et ça ne rend pas très bien en vrai).

10 Protéger un répertoire de rm -rf

$ cd directory; touch ./-i

11 Affichier le nom et la version de sa distro linux

$ cat /etc/issue

12 Quel est mon modèle d'ordi ?

$ sudo dmidecode | grep Product

13 Comparer des répertoires avec diff

$ diff -rq dirA dirB

14 Partager sa session de terminal en temps réel

$ mkfifo foo; script -f foo

et une autre personne peut superviser ce qu'il se pase avec cat foo.

15 Bouger tous les fichiers des sous-répertoires dans le dossier courant

$ find ./ -type f -exec mv {} . \;

16 Bypasser les alias ou fonctions de la commande

$ \foo

C'est un raccourci de la commande bash command.

17 Transformer un fichier word en pdf

$ oowriter -pt pdf your_word_file.doc

18 Conversion de document LibreOffice

$ soffice --headless -convert-to odt:"writer8" somefile.docx

19 Convertir un texte en majuscules

$ upper() { echo ${@^^}; }

L'inverse avec lower.

20 Redimensionner une image (en gardant le ratio)

$ convert -resize '1024x600^' image.jpg small-image.jpg

convert est une commande qui vient du paquet imagemagick.

21 Synchroniser deux répertoires en filtrant des extensions

$ rsync -rv --include '*/' --include '*.txt' --exclude '*' srcDir/ desDir/

22 Barre de progression et temps restant

On utilise pv. L'example suivant crée une archive gzip.

$ pv file | gzip > file.gz

23 Créer un serveur de fichiers

$ while true; do nc -l 7000 | tar -xvf -; done

il écoute sur le port 7000.

Et du côté client:

tar c myfile | nc localhost 7000

24 Entendre la prononciation anglaise d'une phrase

$ say() { mplayer "http://translate.google.com/translate_tts?q=$1"; }

Par exemple:

say "hello world"

C'est tout pour maintenant !