Projet

Général

Profil

Petit precis de shell » Historique » Version 4

Julien Enselme, 31/07/2013 21:36

1 3 Julien Enselme
{{toc}}
2 2 Julien Enselme
3 2 Julien Enselme
Le shell est un langage assez particulier qu'on ne connait pas forcément en arrivant à centrale et qu'on a pas forcément l'occasion de beaucoup pratiquer. Le but de ce document est de rappeler les quelques bases du langage et de fournir quelques solutions standard à des problèmes courants afin que le nouveau membre du club drupal ne soit pas désemparé et puisse comprendre les scripts. Il ne se veut en aucun cas un cours/tuto complet et exaustif.
4 1 Julien Enselme
5 3 Julien Enselme
h1. Quelques rappels d'Unix
6 3 Julien Enselme
7 3 Julien Enselme
Le langage shell est le langage de script qui vient par défaut avec _tous_ les Unix. En effet, même si désormais d'autres interpréteurs plus modernes sont désormais répandus (bash, csh, zsh, etc.), ils ont tous conservé la compatibilité avec le shell.
8 3 Julien Enselme
9 3 Julien Enselme
Comme pour la plupart des langages de script, il existe deux façons d'exécuter des instructions shell :
10 3 Julien Enselme
11 3 Julien Enselme
* directement dans l'interpréteur
12 3 Julien Enselme
* dans un script shell
13 3 Julien Enselme
14 3 Julien Enselme
Pour lancer un interpréteur shell, rien de plus simple : lancer un terminal (graphique ou tty). Et oui, le shell comprend toutes les commandes Unix que vous avez vues en début d'année (pwd, cd, cp). Vous pouvez donc les réutiliser _telles quelles_ dans vos scripts et utiliser son bon terminal pour faire des boucles, des conditions et j'en passe.
15 3 Julien Enselme
16 1 Julien Enselme
h1. Les bases du shell
17 3 Julien Enselme
18 4 Julien Enselme
Il est très important de comprendre et de garder à l'esprit qu'en shell tout est :
19 4 Julien Enselme
20 4 Julien Enselme
* chaîne de caractères (y compris les nombres) ! Entrez @echo 1 + 1@ dans le terminal pour vous en convaincre.
21 4 Julien Enselme
* commande et que donc elles peuvent prendre des arguments (cela s'éclaircira plus tard)
22 4 Julien Enselme
23 4 Julien Enselme
h2. Syntaxe de base
24 4 Julien Enselme
25 4 Julien Enselme
Les commandes s'écrivent soit :
26 4 Julien Enselme
27 4 Julien Enselme
* les unes à la suite des autres séparées par ; (peu reocmmandé)
28 4 Julien Enselme
* séparées les unes des autres par un saut de ligne
29 4 Julien Enselme
30 4 Julien Enselme
Chaque commande peut prendre des arguments de deux types :
31 4 Julien Enselme
32 4 Julien Enselme
* les arguments courts (l, r, h pour @ls@ par exemple) qui sont passés comme suit : @CMD -ARG@
33 4 Julien Enselme
* les arguments longs (recursive pour @rsync@ par exemple) qui se passent comme ceci : @CMD --ARGUMENT@
34 4 Julien Enselme
35 4 Julien Enselme
Il est évidement possible de passer plusieurs arguments à une même commande.
36 4 Julien Enselme
37 4 Julien Enselme
{{tip(Certains arguments existent sous une forme courte et une forme longue. Consulter le manuel de la commande pour plus de détails. Le manuel conteint également la liste complète des arguments supportés par une commande.)}}
38 4 Julien Enselme
39 4 Julien Enselme
{{note(Certains commandes ne respectent pas la convention énoncée ce-dessus. Leurs arguments long se passent avec un seul - (find en est un exemple))}}
40 4 Julien Enselme
41 4 Julien Enselme
h2. Conditions et itérations