Projet

Général

Profil

Shell secours » Historique » Version 15

Julien Enselme, 28/08/2014 21:09
Get git commit (including file content) between today and yesterday

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 2 Julien Enselme
{{toc}}
4 2 Julien Enselme
5 1 Julien Enselme
h1. Générer des nombres aléatoires
6 1 Julien Enselme
7 4 Julien Enselme
* @$RANDOM@ (*bash uniquement*) : tire un nombre aléatoirement entre 0 - 32767
8 4 Julien Enselme
* @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.
9 4 Julien Enselme
* @seed=`( echo $$ ; time ps ; w ; date ) | cksum | cut -f1 -d" " `@ : utilise la date où le PID du dernier processus.
10 4 Julien Enselme
* @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.
11 1 Julien Enselme
12 1 Julien Enselme
h1. Prendre les x caractères d’une chaîne
13 1 Julien Enselme
14 1 Julien Enselme
@cut -cN-M@
15 1 Julien Enselme
16 1 Julien Enselme
h1. Revenir dans le répertoire précédent
17 1 Julien Enselme
18 1 Julien Enselme
@cd -@
19 1 Julien Enselme
20 1 Julien Enselme
h1. Vérifier paramètre non passé
21 1 Julien Enselme
22 11 Julien Enselme
@! -z "$2"@ ou @-n "$2"@
23 1 Julien Enselme
24 1 Julien Enselme
h1. Trier
25 1 Julien Enselme
26 1 Julien Enselme
@sort@
27 1 Julien Enselme
28 8 Julien Enselme
h1. Compter
29 1 Julien Enselme
30 3 Julien Enselme
* @wc@ : pour les mots, caractères, nombres de lignes
31 8 Julien Enselme
* @let@ ou @$(( 6+8 )) : pour les opérations mathématiques
32 1 Julien Enselme
33 6 Ismaeil Abouljamal
h1. Savoir si une chaîne est contenue dans une autre
34 3 Julien Enselme
35 3 Julien Enselme
* @[[ reg_exp =~ contenant ]]@ *bash uniquement*
36 7 Geoffroy Desvernay
* @grep -q "reg_exp" chaine@
37 3 Julien Enselme
38 1 Julien Enselme
h1. Renommer les fichiers en fonction d’une expression régulière
39 1 Julien Enselme
40 3 Julien Enselme
<pre>
41 3 Julien Enselme
<code class="bash">
42 3 Julien Enselme
for file in `ls` ; do
43 3 Julien Enselme
  a=`echo $file | sed 's/\(.*\)\.dump\(.*\)\.sql/\2.\1.sql/'`
44 3 Julien Enselme
  mv $file $a
45 3 Julien Enselme
done
46 3 Julien Enselme
</code>
47 3 Julien Enselme
</pre>
48 3 Julien Enselme
49 10 Julien Enselme
On peut également "utiliser Emacs":http://assos.centrale-marseille.fr/jenselme/content/emacs-edition-multiple.
50 5 Julien Enselme
51 5 Julien Enselme
h1. Faire une copie statique d’un site
52 5 Julien Enselme
53 5 Julien Enselme
wget -mkKE assos.centrale-marseille.fr/NOM
54 12 Julien Enselme
55 12 Julien Enselme
h1. Passer des caractères de fin de ligne DOS à UNIX
56 12 Julien Enselme
57 12 Julien Enselme
<pre>
58 12 Julien Enselme
<code class="php">
59 12 Julien Enselme
sed $'s/\r$//' VOTRE_FICHIER > tmp && mv tmp VOTRE_FICHIER
60 12 Julien Enselme
</code>
61 12 Julien Enselme
</pre>
62 13 Julien Enselme
63 13 Julien Enselme
h1. Passer du texte en minuscule
64 13 Julien Enselme
65 13 Julien Enselme
<pre>
66 13 Julien Enselme
a=COUCOU
67 13 Julien Enselme
echo ${a,,}
68 13 Julien Enselme
</pre>
69 14 Julien Enselme
70 14 Julien Enselme
h1. Savoir si un script est lancé dans un shell interactif
71 14 Julien Enselme
72 14 Julien Enselme
La commande @tty -s@ renvoie 0 si le script est lancé dans un terminal interactif et 1 sinon.
73 15 Julien Enselme
74 15 Julien Enselme
h1. Get git commit (including file content) between today and yesterday
75 15 Julien Enselme
76 15 Julien Enselme
<pre>
77 15 Julien Enselme
<code class="php">
78 15 Julien Enselme
git_log=$(git log -p --since="yesterday" --pretty=format:"########## %s ###########")
79 15 Julien Enselme
if [ -n "$git_log" ] ; then
80 15 Julien Enselme
    echo "$git_log" | mail -s "[git] Report" $email_multi_assos
81 15 Julien Enselme
fi
82 15 Julien Enselme
</code>
83 15 Julien Enselme
</pre>