Opérations en ligne de commande

Opérations pratiques

Comparer les différences entre deux fichiers en colonnes avec diff

$ diff -ybB --width=80 ficher1 fichier2

Afficher la date sous forme de timestamp UNIX

Le timestamp UNIX est le nombre de secondes écoulées depuis le 1/1/1970 00h00 (date surnommée "Epoch") :

$ date +%s

Afficher un timestamp UNIX dans un format lisible facilement avec date

$ date -d @1209041432

Afficher un timestamp UNIX dans un format lisible facilement avec Perl

$ perl -e 'print(scalar(localtime(1209041432)));'

Encoder/décoder une chaîne en Base 64 avec OpenSSL

$ echo maChaine | openssl base64                # encode
$ echo maChaineEnBase64 | openssl base64 -d     # décode

Extraire le son d'une vidéo avec Mplayer

$ mplayer ma_video.avi -vc dummy -vo null -ao pcm:file=son_video.wav

Transformer le contenu d'un fichier en minuscules/majuscules avec dd

$ dd if=fichier_original of=fichier_modifié conv=ucase  # transforme le contenu en majuscules
$ dd if=fichier_original of=fichier_modifié conv=lcase  # transforme le contenu en minuscules

Télécharger tout le contenu d'un répertoire sur un serveur web avec Wget

$ wget -r -nc -nd -nH --cut-dirs=2 http://www.unsite.com/unrepertoire/lerepertoirequejeveux/

Effacer le contenu d'un fichier (très) rapidement

$ > lefichier.txt

Inverser l'ordre d'un fichier

$ cat lefichier.txt | sed '1!G;h;$!d'

'ls *' plus rapide

$ echo *

Copier un répertoire en conservant les permissions d'origine avec GNU Tar

$ cd /un/repertoire; tar cf - . | tar xf - -C /autre/repertoire

Récupérer le contenu texte (ASCII) d'une page web sans les tags HTML avec Curl et sed

$ curl http://unsiteweb.com/page.html | sed 's/<[^>]*>//g'

Réitérer rapidement une commande avec les droits sudo

$ sudo !!

Afficher les nouvelles lignes ajoutées à un fichier en temps réel avec less

$ less +F /un/fichier

Il est également possible de passer temporairement en mode "temps réel" depuis une session en cours de less avec la combinaison de touches Shift+f.

Supprimer toutes les lignes d'un fichier contenant une certaine chaine de caractères avec sed

$ sed -i '/chaine/d' lefichier.txt

Supprimer toutes les lignes d'un fichier contenues entre deux lignes distinctes

sed -i -e '/<REMOVE>/,/<\/REMOVE>/d lefichier.txt

Le fichier :

ligne1
ligne2
<REMOVE>
Bouh, c'est mal!
Ils faut que ces lignes disparaissent...
</REMOVE>
ligne3

donnera :

ligne1
ligne2
ligne3

Effectuer des conversions de base numérique avec bc

Outre les opérations arithmétiques, bc est capable d'effectuer des conversions de bases numériques à l'aise des opérateurs ibase (input base, base d'entrée) et obase (output base, base de sortie) : il est même possible d'effectuer des opérations arithmétiques dans une certaine base et d'afficher le résultat dans une autre base.

Par défaut bc considère que ibase et obase sont en base 10 (décimale), il n'est donc pas nécessaire de les définir explicitement lors de vos conversions si vous utilisez l'ibase ou l'obase en base 10 :

$ echo 'obase=2; 145' | bc
10010001

$ echo 'ibase=2; 10010001' | bc
145

/!\ Attention, si vous changez les bases d'entrée et de sortie, il faut *impérativement* spécifier obase en premier.

$ echo 'obase=16; ibase=2; 11010' | bc
1A

$ echo 'ibase=2; 101111+10000101' | bc
180

Trouver tous les liens symboliques cassés

$ find -type l | (while read FN ; do test -e "$FN" || ls -ld "$FN"; done)

Trouver tous les fichiers de plus de N Ko

Pour lister tous les fichiers de plus d'1 Go (1 000 000 Ko) à partir du répertoire courant :

$ find ./ -size +1000000k -printf "%kKo\t%p\n"

Afficher des lignes spécifiques d'un fichier ou d'un flux de texte avec sed

Afficher seulement la 42ème ligne du fichier fichier.txt :

sed -n "42p" fichier.txt

Afficher seulement de la ligne 10 à la ligne 15 :

cat fichier.txt | sed -n '10~15p'

docs.soolbox.net: SysadminTips/Cmdline (last edited 2010-06-30 14:37:53 by MarcFalzon)