Projet

Général

Profil

Shell secours » Historique » Version 14

Julien Enselme, 27/07/2014 15:52
Savoir si un script est lancé dans un shell interactif

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