Table of contents
diff -ybB --width=80 ficher1 fichier2
date +%s
date -d @1209041432
perl -e 'print(scalar(localtime(1209041432)));'
echo maChaine | openssl base64 # encode echo maChaineEnBase64 | openssl base64 -d # décode
mplayer ma_video.avi -vc dummy -vo null -ao pcm:file=son_video.wav
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
wget -r -nc -nd -nH --cut-dirs=2 http://www.unsite.com/unrepertoire/lerepertoirequejeveux/
> lefichier.txt
cat lefichier.txt | sed '1!G;h;$!d'
echo *
cd /un/repertoire; tar cf - . | tar xf - -C /autre/repertoire
curl http://unsiteweb.com/page.html | sed 's/<[^>]*>//g'
sudo !!
less +F /un/fichierIl 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.
sed -i '/chaine/d' lefichier.txt
sed -i -e '/<REMOVE>/,/<\/REMOVE>/d lefichier.txtLe fichier :
ligne1 ligne2 <REMOVE> Bouh, c'est mal! Ils faut que ces lignes disparaissent... </REMOVE> ligne3donnera :
ligne1 ligne2 ligne3
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
$ echo 'obase=16; ibase=2; 11010' | bc 1A $ echo 'ibase=2; 101111+10000101' | bc 180
find -type l | (while read FN ; do test -e "$FN" || ls -ld "$FN"; done)
find ./ -size +1000000k -printf "%kKo\t%p\n"
fichier.txt, avec sed :
sed -n "42p" fichier.txt
Avec awk :
awk -v l=42 'NR==l{ print }' fichier.txt
Pour afficher seulement de la ligne 10 à la ligne 15 :
awk 'NR>=10 && NR<=15' fichier.txt
-v et initialiser une variable Awk à la valeur de la variable Bash. Exemple utilisant un timestamp UNIX récupéré en Bash :
$ grep eth0 /proc/net/dev | cut -d: -f 2 | awk -v ts=`date +%s` '{print ts":"$1,ts":"$9}'
1311629204:4916897284 1311629204:10797655993
shuf (des GNU Coreutils) permet d'obtenir des nombres aléatoires compris dans un intervalle borné. Par exemple si je veux que le nombre aléatoire soit compris entre 10 et 50 :
shuf -n 1 -i 10-50 40
L'option -n indique la quantité de nombres à produire et afficher (par défaut 40), et -i indique les bornes minimum et maximum.
less comme pager, voici quelques variables d'environnement qui mettront de la couleur dans vos pages de man :
export LESS_TERMCAP_mb=$'\E[01;31m' export LESS_TERMCAP_md=$'\E[01;31m' export LESS_TERMCAP_me=$'\E[0m' export LESS_TERMCAP_se=$'\E[0m' export LESS_TERMCAP_so=$'\E[01;44;33m' export LESS_TERMCAP_ue=$'\E[0m' export LESS_TERMCAP_us=$'\E[01;32m'
head -c 42 README.txt # lit les 42 premiers caractères du fichier README.txt cat /usr/share/doc/sudo/LICENSE | tail -c 99 # lit les 99 derniers caractères du fichier /usr/share/doc/sudo/LICENSE
Si vous avez besoin de sauvegarder de manière sécurisée une arborescence de fichiers assez volumineuse, voici un one-liner qui fera tout le travail pour vous.
L'exemple suivant compresse et découpe en fichiers de 100M qui sont eux-même par la suite chiffrés via GnuPG — chiffrement symétrique avec la passphrase 'blah'.
tar cvz -C /chemin/vers -f - dossier | split -d -b 100M --filter 'gpg --symmetric --passphrase blah --batch --cipher-algo aes256 -o $FILE.gpg' - backup.tgz.
Si tout s'est bien passé, il résultera de cette commande N fichiers (backup.tgz.001.gpg, backup.tgz.002.gpg, backup.tgz.00N.gpg) chiffrés. Pour faire l'opération inverse :
gpg --decrypt-files --batch --passphrase blah backup.tgz.0*gpg && rm -f *gpg && cat backup.tgz* | tar xzf -
seq -fhost%02g.example.net 1 3
Cette commande générera les lignes suivante :
host01.example.net host02.example.net host03.example.net