Projet

Général

Profil

Shell secours » Historique » Version 16

Julien Enselme, 28/03/2015 12:03

1 9 Julien Enselme
Liste de commandes pour des actions spécifiques. Pas/peu de détails/explications, [[Petit precis de shell|prérequis de shell]] supposés connus. Si une commande est donnée pour bash uniquement, cela signifie qu'elle n'est pas compatible avec le shell POSIX ou d'autres implémentations basiques mais est vraisemblablement disponible dans les autres implémentations évoluées telles que zsh.
2 1 Julien Enselme
3 16 Julien Enselme
Jenselme en propose une "version plus complète sur son blog":http://www.jujens.eu/posts/2014/Sep/07/diverses-astuces-shell/
4
5 2 Julien Enselme
{{toc}}
6
7 1 Julien Enselme
h1. Générer des nombres aléatoires
8
9 4 Julien Enselme
* @$RANDOM@ (*bash uniquement*) : tire un nombre aléatoirement entre 0 - 32767
10
* @fortune | cksum | cut -f1 -d" "@ : si RANDOM n'est pas disponible, la commande @fortune@ qui tire aléatoirement un proverbe l'est peut être. On en prend la somme pour obtenir un nombre.
11
* @seed=`( echo $$ ; time ps ; w ; date ) | cksum | cut -f1 -d" " `@ : utilise la date où le PID du dernier processus.
12
* @dd if=/dev/urandom count=1 2> /dev/null | cksum | cut -f1 -d" "@ : utilise l'entrée d'entropie du noyau. C'est la meilleur méthode, la plus robuste pour générer de l'aléatoire.
13 1 Julien Enselme
14
h1. Prendre les x caractères d’une chaîne
15
16
@cut -cN-M@
17
18
h1. Revenir dans le répertoire précédent
19
20
@cd -@
21
22
h1. Vérifier paramètre non passé
23
24 11 Julien Enselme
@! -z "$2"@ ou @-n "$2"@
25 1 Julien Enselme
26
h1. Trier
27
28
@sort@
29
30 8 Julien Enselme
h1. Compter
31 1 Julien Enselme
32 3 Julien Enselme
* @wc@ : pour les mots, caractères, nombres de lignes
33 8 Julien Enselme
* @let@ ou @$(( 6+8 )) : pour les opérations mathématiques
34 1 Julien Enselme
35 6 Ismaeil Abouljamal
h1. Savoir si une chaîne est contenue dans une autre
36 3 Julien Enselme
37
* @[[ reg_exp =~ contenant ]]@ *bash uniquement*
38 7 Geoffroy Desvernay
* @grep -q "reg_exp" chaine@
39 3 Julien Enselme
40 1 Julien Enselme
h1. Renommer les fichiers en fonction d’une expression régulière
41
42 3 Julien Enselme
<pre>
43
<code class="bash">
44
for file in `ls` ; do
45
  a=`echo $file | sed 's/\(.*\)\.dump\(.*\)\.sql/\2.\1.sql/'`
46
  mv $file $a
47
done
48
</code>
49
</pre>
50
51 10 Julien Enselme
On peut également "utiliser Emacs":http://assos.centrale-marseille.fr/jenselme/content/emacs-edition-multiple.
52 5 Julien Enselme
53
h1. Faire une copie statique d’un site
54
55
wget -mkKE assos.centrale-marseille.fr/NOM
56 12 Julien Enselme
57
h1. Passer des caractères de fin de ligne DOS à UNIX
58
59
<pre>
60
<code class="php">
61
sed $'s/\r$//' VOTRE_FICHIER > tmp && mv tmp VOTRE_FICHIER
62
</code>
63
</pre>
64 13 Julien Enselme
65
h1. Passer du texte en minuscule
66
67
<pre>
68
a=COUCOU
69
echo ${a,,}
70
</pre>
71 14 Julien Enselme
72
h1. Savoir si un script est lancé dans un shell interactif
73
74
La commande @tty -s@ renvoie 0 si le script est lancé dans un terminal interactif et 1 sinon.
75 15 Julien Enselme
76
h1. Get git commit (including file content) between today and yesterday
77
78
<pre>
79
<code class="php">
80
git_log=$(git log -p --since="yesterday" --pretty=format:"########## %s ###########")
81
if [ -n "$git_log" ] ; then
82
    echo "$git_log" | mail -s "[git] Report" $email_multi_assos
83
fi
84
</code>
85
</pre>