From 6b6bd64e8999e8cec9f7398eb5dd5605e5e4796c Mon Sep 17 00:00:00 2001 From: Florian Mathieu Date: Tue, 26 Apr 2022 00:03:35 +0200 Subject: [PATCH] maj cours BASH --- architecture/os/BASH.md | 113 +++++++++++++++++++++++++++++++++++++++- 1 file changed, 112 insertions(+), 1 deletion(-) diff --git a/architecture/os/BASH.md b/architecture/os/BASH.md index 2d49249..3b51a69 100644 --- a/architecture/os/BASH.md +++ b/architecture/os/BASH.md @@ -10,11 +10,17 @@ Sous windows, macOS ou GNU/Linux, chaque système propose son propre interpreteu - BASH (Bourne Again Shell) - principalement sous linux et macOS , mais disponible sous windows. + - SHELL - Le premier interpreteur, qui date de [1971](https://fr.wikipedia.org/wiki/Shell_Unix) - il a évidemment été amélioré au fur et à mesure des versions. + - Chaque version utilise son propre langage pour utiliser les commandes systèmes, mais en général, vous pouvez vous y retrouver d'un OS à un autre, avec les bonnes bases. + ------------ + + + ### Commandes de bases | Commande | Description | @@ -27,4 +33,109 @@ Sous windows, macOS ou GNU/Linux, chaque système propose son propre interpreteu | cat | Affiche le contenu d'un fichier. | | touch | Crée un fichier vide. | | mkdir | Crée un dossier vide | -| rmdir | Supprime un dossier. | \ No newline at end of file +| rmdir | Supprime un dossier. | + + + +--------------- + +### Introduction au script. + +### Pourquoi le bash ? + +Il existe autant de langage de programmation qu’il existe de besoins. Aucun d’entre eux n’est meilleur qu’un autre, il n'y a que des langages plus efficaces que d’autres selon les situations. + +Dans notre cas, afin d’être capable d’opérer une administration des systèmes efficace, le langage **Shell** est un must have. + + La syntaxe de **Shell**, à la fois simple et efficace, permet à n’importe qui de pouvoir « *programmer* » de cette manière. La plupart des fonctions et opérations propres au **Shell** sont faciles à retenir, de plus, les scripts fonctionneront souvent du premier coup si vous maitrisez un tant soit peu le langage. + +### Définition + + + +> Le **Shell** est un interpréteur de commandes, ainsi qu’un langage de programmation puissant. + +Un programme **Shell**, que l’on peut appeler également un **script**, est un outil facile à prendre en main afin de construire des applications en « regroupant » des appels système, outils, utilitaires et binaires compilés. + +Un **script Shell** permet, en théorie, d’accéder à l’entièreté des commandes **UNIX**, des utilitaires et des outils systèmes. + +Le Shell est particulièrement efficace lorsque l’on effectue de l’administration système mais aussi pour d’autres routines répétitives ne nécessitant pas des utilisations aussi poussées qu’avec un langage de programmation plus complet. + +------------------- + + + +### Comment ? + +Dans le cas le plus simple, un **script** n'est rien de plus qu'une liste de commandes système enregistrées dans un fichier, ligne par ligne. Cela évite l'effort de retaper cette séquence particulière de commandes à chaque fois qu'elle doit être appelée. + +Par exemple, pour se déplacer dans un répertoire puis créer un dossier, on utilise le **bash** (ou un autre interpréteur de commande **UNIX**) : + +``` +cd Documents/ +mkdir test +``` + +Eh bien si l’on souhaite faire la même chose avec un **script**, il suffira d’écrire ces deux lignes à la suite dans un fichier, c’est tout simple. + +Evidemment, placer ces commandes dans un fichier **script** n’a pas uniquement comme intérêt de ne pas avoir à les recopier chaque fois que l’on en a besoin. Le **script** est un outil de travail et peut facilement être modifié ou personnalisé pour une application particulière. + +En réalité, il manque juste une chose afin de pouvoir utiliser ces lignes dans un **script**. + +Votre fichier script doit comporter **un sha-bang (#!).** + +**Le *sha-bang* (#!)** doit se placer en tête du script afin d’indiquer à votre système que ce fichier est un ensemble de commandes à interpréter. + +Les caractères **#!** correspondent en fait à un ***nombre magique***, un marqueur spécial qui désigne un type de fichier, ou dans ce cas, **un script Shell** exécutable. + +Ensuite, après le **sha-bang,** se trouve un *chemin*, qui mène au programme sensé interpréter les commandes de votre fichier script, selon le langage que vous utilisez. + +Enfin, cet interpréteur de commande exécute les commandes de votre **script**, en commençant après le sha-bang, et en ignorant les commentaires. + +Vu qu’ici, nous utilisons l’interpréteur bash, voici la ligne correspondante : + +``` +#!/bin/bash +``` + +------------- + + + +### Appeler son script + +### + +Après la création de votre premier script, vous souhaiterez l’exécuter (on parle ici d’un appel ) afin de vous assurer de son bon fonctionnement. + +> Un code de retour zéro du script indique un succès au **Shell**. + + + +Dans cette optique, plusieurs solutions s’offrent à vous : + +- Dans un terminal, la commande **sh** + +- Dans un terminal, la commande **bash** + +- Rendre d’abord exécutable ce fichier + + + +- **chmod 555** (donne les droits de lecture/exécution à tout le monde) + +- **chmod +rx** (donne les droits de lecture et d'exécution à tout le monde) + +- **chmod u+rx** (donne les droits de lecture et d'exécution seulement à son propriétaire) + + + +​ B) Puis l’exécuter : + + + +``` +./nomdufichier +``` + +*Note : si vous placez votre script fonctionnel dans le répertoire /usr/local/bin alors vous serez en mesure de l’appeler simplement en tapant son nom puis entrée dans un terminal.* \ No newline at end of file