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