Accueil
Sommaire
Suivant

Le shell Bash
I

 

1) Introduction politique

Le système Linux a révolutionné le monde en créant un système d'exploitation universelle gratuit et dont le programme source est ouvert et libre. Son apparition que nul futurologue n'avait prévue et qui s'accompagne de la naissance de l'Internet, révèle donc une composante ontologique de l'homme jusqu'alors inconnue. Cette nouveauté technique et organisationnelle met en oeuvre un nouveau mode de travail collaboratif basé sur d'autre motivation que le pouvoir financier. Voir l’Éthique hacker et l’esprit de l’ère de l’information

1.1) Du capitalisme

D'un point de vue sociologique, on peut dire que la motivation des agents déterminent la forme générale de leur organisation. Le travail, le marché et la banque, dans le secteur privée hors économie sociale et solidaire, étant motivés par le pouvoir financier, vont tendre à ramener leur choix aux seuls critères financiers, à l'optimisation d'un seul indicateur, l'espérance de gain et le risque, à court, moyen et long terme. Et c'est là, la définition même de la spéculation.

Or pour spéculer, il faut avoir l'information que les autres n'ont pas. Les autres étant les concurrents et aussi ceux que l'on exploite. Vous comprendrez pourquoi une telle organisation du travail, du marché, de la banque est propice à l'instauration du mensonge et à l'abus que l'on peut en tirer. C'est là qu'apparait l'hybris, la démesure du pouvoir qui est utilisé pour s'auto-amplifier, et qui est basé sur le secret et le mensonge. C'est le coté obscur du capitalisme et du libéralisme. C'est, le comment les agents exploitent d'autres agents et concurrencent d'autres agents pour accroitre leur capacité d'exploitation et de domination par la mise en concurrence.

La religion grecque antique ignore la notion de péché tel que le conçoit le christianisme. Il n'en reste pas moins que l’hybris constitue la faute fondamentale dans cette civilisation, une définition du mal avant même celle du diable chrétien. L'intention seul ne peut être considérée comme le mal puisque ne permettant pas de le réaliser. Le pouvoir est nécessaire. Et le pouvoir engendre l'intention d'en abuser pour le renforcer encore. D'où la naissance de l'hybris, la démesure...

L'organisation de la société qui en découle est la mieux énoncée par l'expression « l'Empire du mensonge ». Car à tous les étages d'un tel modèle socio-économique, les cercles supérieurs désinforment les cercles inférieurs pour garder l'avantage de la position d'initié. Et au dessus, le pire du pire ou la crème de la crème, un Etat impérialiste s'y déploie qui impose ses règles au monde, sa monnaie internationale, espionne et fait la guerre partout dans le monde pour garder une position dominante sur celui-ci si ce n'est pour en être le maître.

Voilà comment est perçu l'Occident par "le reste du monde", qui malheureusement le copie que par trop encore, un Occident qui a mis Julian Assange en prison perpetuelle..., parce qu'il a révélé la vérité, le plus grand journaliste de tous les temps jusqu'à présent. Et il est toujours emprisonné en Angleterre près de Londres en attendant une extradition vers les Etats-Unis où il encourt une peine de 170 ans de prison. Le secret des affaires est l'une des armes juridiques en Europe pour imposer ce régime oligarchique ici.

Un autre lanceur d'alerte, Edward Snowden, a réussit à fuir. Et le seul pays qui a osé accepter lui donner le droit d'asile a été la Russie, le seul pays capable de tenir tête militairement face à l'Empire américain.


Richard Stallman - Julian Assange - Edward Snowden

1.2) De la révolution du libre

L'internet, Linux et l'open-source ont révolutionné l'informatique en le démocratisant. Chaque personne, si elle accède à l'Internet, peut en autodidacte devenir un informaticien jusqu'à un niveau hors-père des logiciels libres, car toutes les données, documentations et logiciels sont accessibles gratuitement sur l'Internet en copyleft et le plus souvent en licence publique générale (GNU). Et les logiciels en question sont open-sources et développés par des communautés de développeurs et d'utilisteurs répartis dans le monde entier. Chaque personne dans le libre qui possède une expertise, trouve intérêt à ce que qu'il y ait d'autres personnes ayant cette même expertise, pour pouvoir délors constituer un groupe, une communauté, qui possède un poid d'influence et une capacité de conception-programmation plus grande.

2) Description

Nous décrivons le langage Bash avec comme grille de lecture, la conception des langages informatiques que nous nous sommes construite précédemment. Et on procède de façon didactique pour rendre le document lisible par un lecteur n'ayant pas de connaissance préalable.

L'intérêt d'étudier le langage Bash tient dans l'intérêt de bien connaitre l'interface système universel (considéré comme universel actuellement), pour pouvoir développer des logiciels en bonne interaction avec le système Linux, et qui peuvent même être ajoutés au shell par la suite. La programmation shell ramène à la philosophie classique des UNIX, c'est à dire, casser des projets complexes en sous-tâches plus simples et assembler des composants et des utilitaires. En cela, le bash révèle la mécanique des processus beaucoup plus directement et avec beaucoup moins d'effort que tout autre langage de programmation.

Bash est un acronyme pour "Bourne-Again shell". Le Bourne shell originel a été conçu initialement par Stephen Bourne en 1977. La première implémentation de Bash pour le compte de la free software foundation a été publiée en 1988.

2.1) Le noyau

Le système d'exploitation Linux possède un noyau développé en langage C, et il utilise la plus part du temps un shell Bash. Le noyau linux constitue le coeur du système Linux c'est à dire ce qui reste lorsqu'on a enlevé du système tous les programmes utilisateurs et accessoires autres (l'interface graphique, les outils, la console, les services, etc.).

2.2) Le shell

Le shell constitue l'interface entre le systéme d'exploitation et l'utilisateur, il permet à l'utilisateur de commander le système. Le terme shell signifie enveloppe ou coque en français, on le traduit par "interface système". A l'inverse du noyau, le shell désigne la couche la plus externe assurant l'interface de commande entre l'extérieur et le noyau.

2.3) La distribution

Une distribution Linux est un ensemble cohérent de logiciels, la plupart étant des logiciels libres, assemblés autour du noyau Linux, et formant un système d'exploitation pleinement opérationnel.

2.4) Bash

On utilise le même nom pour désigner le langage de programmation et l'interpréteur. Mais conventionnellement le nom du langage qui est un nom propre commence par une majuscule tandis que le nom de l'interpéteur qui est un programme commence par une minuscule. Le programme bash est un interpréteur qui permet d'exécuter les programmes écrits en Bash. L'interface système utilisant ce langage de commande s'appelle le shell Bash.

Bash est un langage de script c'est à dire un langage de programmation prévue pour être interprété et qui permet de commander le système. Il est néanmoins possible de compiler dans une certaine mesure un programme écrit en Bash.

2.5) Ruby

Le programme ruby est un interpréteur qui permet d'exécuter les programmes écrits en Ruby. Le langage Ruby est un langage de script qui permet aussi de commander le système, mais il n'est pas natif. Pour procéder à une commande système, Ruby va passer par l'intermédière d'une commande shell Bash. Mais il se peut qu'un future système linux ait un shell Ruby natif.

Ruby est un langage de script moderne, orienté objet, trés prometteur. Pour les personnes voulant simplement découvrir la programmation de script orienté objet, il est plus judicieux d'étudier le Ruby plutôt que le Bash.

2.6) Golang

Le programme go est un compilateur qui permet de compiler les programmes écrits en Go (ou Golang). Le langage Go peut aussi commander le système et il le fait en demandant l'exécution de commande shell Bash.

Le langage Go est un langage de programmation multi-paradigme, intégrant les paradigmes impératif, parallèle, logique, fonctionnelle, objet. C'est un langage orienté objet, mais sans hierarchie de classe, il utilise à la place des interfaces. Le langage Go a un système de type statique, fortement typé, structurel et sûr, basé sur l'inférence de types avec la possibilité d'utiliser un typage explicite. Il est multi-thread.

Le langage Go est inspiré du C et du Pascal, facile à comprendre et facile à adopter. La compilation du Go est trés rapide. La rapidité d'exécution est aussi visée, égale à celle du C. Il peut être utilisé aussi bien pour écrire des applications, des scripts ou de grands systémes. Sa simplicité est voulue pour assurer la maintenance et l'évolution des programmes sur plusieurs générations de développeurs.

Dans le langage Go, la gestion de la mémoire est laissée à un ramasse-miette.

Ce langage a été conçu initialement par Keith Clark et Francis McCabe sous le nom de Go! en 2003, puis développé en open-source libre par Google en 2009 à partir d'une conception de Robert Griesemer, Rob Pike et Ken Thompson.

Pour les personnes voulant simplement découvrir la programmation rapide et facile utilisant des techniques modernes, il est conseillé d'étudier directement le Golang.

3) La console

La console ou le terminal, est l'interface textuelle du système d'exploitation, qui permet de commander le système à l'aide de commande shell. On pourrait vouloir s'en dispenser au profit d'un interface graphique, mais la console permet d'utiliser plusieurs milliers de commandes différentes et de les combiner entres elles ce qu'une interface graphique aboutie ne peut pas faire sauf à resimuler en son sein le dit terminal. On parlera d'émulateur de terminaux.

C'est aussi un lieu où va se concrétiser la pensée du développeur.

On utilise les consoles matériels TTY1, TTY2, TTY3, TTY4, TTY5, TTY6 accessibles à l'aide des touches :
<Ctl>+<Alt>+<F1>
<Ctl>+<Alt>+<F2>
<Ctl>+<Alt>+<F3>
<Ctl>+<Alt>+<F4>
<Ctl>+<Alt>+<F5>
<Ctl>+<Alt>+<F6>
Chacune de ces consoles, après s'être connectée avec un login et un mot de passe, permet d'écrire des instructions Bash en ligne de commande et de les exécuter. Puis on revient sur la console graphique, si celle-ci est installée, en TTY7, accessible à l'aide des touches : <Ctl>+<Alt>+<F7>

Dans notre notation, la touche Ctrl est notée <Ctl>. Le symbole + indique que la touche initiale doit être maintenue appuyée tandis que l'on appuit la seconde touche, et s'il y a un second symbole +, cela signifie qu'il faut maintenir appuyées les deux touches précédentes tandis que l'on appuit la troisième touche.

Chaque console telle que TTY3 est associée à un périphérique (device en anglais) d'entrée-sortie de nom complet /dev/tty3. La sortie correspond aux flux de caractères qui s'affiche à l'écran. L'entrée correspond aux flux de caractères qui rentre par le clavier lorsque la console à le focus. Et il n'y a toujours qu'une seule console en accès local qui a le focus et qui correspond au périphérique alias d'entrée-sortie /dev/tty.

Il y a un deuxième type de console dont le périphérique associé est de la forme par exemple /dev/pts3. Elles correspondent à une connection ssh ou Telnet. Dès que vous vous connectez à l'ordinateur, que ce soit en ouvrant une session sur votre environnement de bureau ou en vous connectant à distance en ssh, vous ouvrez un tel terminal. Pour voir à quel périphérique TTY est attaché le terminal, exécutez la commande ps qui liste les processus lancés par le terminal.

3.1) Historique de commande et complétion de code

Puis il existe deux outils trés ptratiques que sont l'historique de commande et la complétion de code, tout deux intégrés dans le terminal et rendant les services suivants :

Puis on utilise un éditeur en console. Le plus simple est nano. Pour ouvrir un fichier texte avec l'éditeur nano, saisire l'instruction suivante :

nano nom-du-fichier

Puis par confort, on utilise la console graphique, et on utilise un éditeur de texte ainsi qu'un terminal. Ces deux logiciels diffèrent selon l'interface graphique utilisé. Pour la distribution Lubuntu, ce sont les applications qterminal et featherpad. Sous un interface graphique Gnome l'éditeur de texte sera gedit. Sous l'interface graphique Xfce le terminal sera xfce4-terminal. Etc.. En fonction de l'interface graphique installé, vous trouverez facilement sur Internet le nom des terminaux et des éditeurs de texte graphiques les plus pratiques. S'ils ne sont pas déjà installés, ils pourront être installés simplement à l'aide du gestionnaire de paquet ou directement à l'aide de la commande apt install nom-du-programme en étant logué root.

4) Le réseau local (LAN)

Une Livebox va raccorder votre réseau local à l'Internet. Le réseau local s'appelle un LAN (Local Area Network) tandis que le réseau Internet s'appelle le WAN (World Area Network). Dans votre réseau local, plusieurs ordinateurs peuvent être raccordés par un câble Ethernet à votre Livebox où il existe généralement 4 ports. Et plusieurs ordinateurs portables peuvent être connectés en Wifi à votre Livebox. L'ensemble de ces ordinateurs et de ces portables ainsi que votre Livebox constituent votre LAN.

Généralement par simplicité on utilise le protocole IPv4, un adressage IP sur 4 octets. L'adresse IP locale de la Livebox est généralement 192.168.1.1 et le masque réseau est 255.255.255.0 ce qui signifie que seul le dernier octet est utilisé dans le LAN pour identifier les hôtes, les 3 premiers octets définissant le nom du réseau local.

Pour connaitre l'adresse IP d'un ordinateur ainsi que le nom de l'interface réseau :

ip addr

Vous verrez alors apparaître un nom d'interface du genre enp3s0 et l'adresse IP 192.168.1.15/24 où le 24 désigne la taille du masque réseau en nombre de bits.

5) Serveur ssh

Pour pouvoir se connecter à distance sur un ordinateur mais toujours dans le réseau local, il faut que celui-ci est installé un serveur ssh. On le fait simplement au moment de l'installation du système linux en cochant "Serveur SSH" ou simplement par : apt install ssh. Et afin d'autoriser le login root à se connecter à distance, on modifit en étant logué root, le fichier de configuration du serveur ssh dont le nom complet est /etc/ssh/sshd_config en remplaçant la ligne contenant #PermitRootLogin par :

PermitRootLogin Yes

Puis on redémarre le service ssh comme suit : service ssh restart

Coté client, on se connecte à l'ordinateur distant d'adresse IP 192.168.1.15 à l'aide d'une des commandes suivantes, et le mot de passe vous sera demandé :

 ssh dmabboux@192.168.1.15   (connection avec le login d'un utilisateur dmabboux)
 ssh root@192.168.1.15   (connection avec le login root)
 ssh 192.168.1.15   (connection avec le même login initial)

Et via un gestionnaire de fichier, tel que par exemple pcmanfm-qt, on peut se connecter en saississant dans la barre d'adresse :

sftp://root@192.168.1.15

Cela permet de naviguer dans l'arborescence des fichiers distants en étant root.

Il existe deux outils putty et winscp qui s'exécutent sur Microsoft Windows, et qui permettent d'ouvrir un terminal ou un gestionnaire de fichier sur un ordinateur distant ayant ce serveur ssh d'installé.

La sécurité est assurée vis-à-vis du WAN par le fait que votre Livebox n'a pas ouvert le ports n°22 qui est le ports utilisé par le protocole ssh, et que ainsi, de l'extérieur du LAN, personne ne peut se connecter en ssh sur un ordinateur de votre réseau local.

6) Le shebang

Un script est un programme écrit dans un fichier texte et qui est prévu pour être interprété. Mais deux conditions sont nécessaires. Le fichier doit être exécutable en droit et il doit contenir en entête le shebang représenté par #! suivi de l'interpéteur qui doit l'exécuter. Le shebang peut être omis si le script consiste seulement en un ensemble de commandes systèmes génériques, sans utiliser de directives shell interne. Les scripts Bash sont des fichiers dont le nom se termine conventionellement par .sh mais ce n'est pas obligatoire. Considérons l'exemple suivant :

script.sh
#!/bin/bash
date >>a.txt
echo "Date ajoutée"

Pour rendre exécutable en droit le script script.sh exécutez la commande chmod +x script.sh. Pour savoir où se trouve le programme bash qui est l'interpréteur, exécutez la commande type -a bash. La commande retourne le chemin complet du programme qui est souvent /bin/bash et qui doit être mentionné dans le shebang.

Ce script ajoute à la fin du fichier a.txt qui se trouve dans le répertoire courant, une ligne contenant la date et l'heure, et si le fichier a.txt n'existe pas alors il le crée préalablement. Puis il affiche dans le terminal Date ajoutée avec un saut de ligne à la fin. Le programme date est une commande système qui retourne la date et l'heure. La redirection >> permet de diriger la sortie du programme date vers un fichier et en mode "ajout à la fin". Comme il n'y a que des commandes système génériques, le shebang n'est pas nécessaire. Le nom du fichier texte se termine par .txt pour indiquer qu'il sagit d'un fichier texte, mais ce n'est absolument pas obligatoire et il existe d'autres conventions pour préciser quel genre de texte il s'agit. Le fichier aurait pu s'appeler a.log car l'extension .log indique conventionellement qu'il s'agit d'un fichier journal. Puis il peut ne pas avoir d'extension du tout.

Le shebang, qui doit être placé sur la première ligne du fichier, joue un rôle plus général. Il désigne un programme, par un chemin complet absolu ou relatif, éventuellement suivi d'un seul argument (une opérande ou un groupe d'options), qui devra s'exécuter en prenant comme canal d'entrée standart le fichier en question.

7) Principes généraux

On commence par présenter succintement ce qu'est un programme, un processus, une entrée d'appel, un tube, un fichier et un caractère.

7.1) Programme

Dans la philosophie Linux, un programme exécutable est soit un fichier binaire de codes machines qui sera directement exécuté par le CPU, ou soit un script exécutable c'est à dire un fichier texte écrit dans un langage évolué qui sera exécuté par l'intermédiaire de l'interpréteur désigné dans le shebang. Dans les deux cas le programme désigné par son chemin d'accès absolu ou relatif ou désigné par son nom si celui-ci est dans un répertoire listé par le PATH, correspond à une commande shell qui respecte une même syntaxe d'appel et de redirection entre autre.

7.2) Processus

Un processus est un programme entrain de s'exécuter. Et un même programme peut s'exécuter plusieurs fois créant ainsi plusieurs processus. Le processus est comparable à la notion abstraite de machine. Il possède un canal d'entrée et un canal de sortie. Il peut même en posséder plusieurs.

7.3) Entrée ligne

Le processus possède une entrée plus particulière qui est la chaine de caractères correspondant à son appel, qui tient sur une ligne et qui comprend la désignation du programme et ses arguments.

7.4) Tube

Les tubes sont des flux de caractères ou d'octet aussi appelés canaux, pipeline ou pipes.

7.5) Fichier

Les fichiers se comportent comme des chaines de caractères ou d'octets en mémoire vive ou en mémoire périphérique, mais possède en plus des métadonnées regroupées dans une inode (type, propriétaire, groupe, permissions, date de dernière accès et de dernère modification, nombre de liens arrivants, taille, adresse de début).

7.6) Caractère

Les caractères ont une taille variable pouvant comprendre 1, 2, 3 ou 4 octets, contenant l'unicode sous sa forme utf-8. L'unicode est une norme qui codifie tous les caractères et symboles de toutes les langues du monde.

8) L' arborescence des fichiers (cd, pwd)

Les répertoires et fichiers forment une arborescence. Chaque processus possède un répertoire courant, qui est initialement le répertoire courant au moment de son appel. La commande système cd sous-répertoire permet de déplacer le répertoire courant en allant sur sous-répertoire. Et il y a deux sous-répertoire particulier, "." et ".." qui désigne respectivement le répertoire courant et le répertoire parent. Ainsi la commande cd .. va déplaçer le curseur vers le répertoire parent.

Le chemin absolu d'un fichier est le chemin partant de la racine de l'arborescence et allant jusqu'au fichier. Le chemin relatif d'un fichier est le chemin partant du répertoire courant (ou parent) et allant jusqu'au fichier. Le nom du fichier est le mot sans symbole "/" qui le désigne dans son répertoire. La commande pwd retourne le chemin complet du répertoire courant. Les programmes sont des fichiers. On lance un programme exécutable par son chemin suivi des arguments d'appel. Ainsi, on peut lancer un programme p se trouvant dans le répertoire courant à l'aide de son chemin relatif :

./p

et on peut aussi utiliser le chemin absolu du programme tel que par exemple :

/home/martin/bidule/p

Ainsi le chemin d'un programme fait partie des commandes shell génériques qui va lancer l'exécution du programme avec les arguments d'appel transmis sur la même ligne. Par contre les arguments peuvent eux désigner des fichiers soit par leur chemin, soit juste par leur nom s'ils sont dans le répertoire courant.

On lance une commande shell générique par son nom suivi des arguments d'appel. Les commandes shell sont des programmes qui peuvent être lancer directement par leur nom. Le mécanisme qui met en oeuvre cette possibilité est l'utilisation de la variable système PATH qui indique au système où chercher les programmes qui peuvent ainsi être lancer directement par leur nom.

echo $PATH   renvoie /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin

9) Les processus en arrière plan

Le système répartit son temps CPU sur plusieurs processus en cours, simulant de faite un parallélisme d'exécution. Dans une console, l'ouverture d'une session lance un shell Bash. Ce processsus au premier plan assure entre autre l'interactivité de la console. Les processus suivants lancés par l'utilisateur au cours de la session peuvent être mis en arrière plan et sont appelés des jobs (tâches) en adjoignant à la fin de la commande après un espace le caractère "&".

./p &   Lance le programme p en arrière plan.
<Ctl>+z   Stop le processus en cours et le met en attente en arrière plan.
jobs   Liste les jobs, que sont les processus créés en arrière plan.
bg %3   Débloque le job n° 3.
fg %3   Remet au premier plan le job n°3.
wait %3  Attend la fin du job n°3.
wait   Attend la fin des jobs.
kill %3   Tue le job n° 3.

10) Convention POSIX

Une des philosophies UNIX consiste à écrire des programmes qui font une seul chose mais qui le font bien et qui peuvent être considérés comme des outils, puis à assembler tous ces outils et composantes éventuellement par un script shell. C'est pourquoi le programme pouvant servir d'outils dans le shell apparaît sous une forme bien précise : un nom court suivi par une foule d'options possibles, comme un couteau suisse, des options qui peuvent être paramètriques c'est à dire suivi d'un paramètre, puis le tout suivi par les opérandes.

Chaque option de l'outils répond à une demande précise d'utilisation spéficifique de l'outils. Le standart POSIX réunit de nombreuses conventions allant dans ce sens et auxquelles se conforment les programmes normalisés. C'est une forme d'héritage d'UNIX qui est reprise quasiment tel quel et qui précise ici une syntaxe du shell qui doit être prise en compte le programme. Mais la norme évolue, et d'autre développement peuvent innover d'autres règles qui s'inspire de celle-ci afin de garder une compatibilité avec le shell qui les utilise.

Convention POSIX sur les outils et leurs options :

1- Un programme qui a vocation à être intégré comme une commande du shell ne doit pas compter moins de 2 caractères et pas plus de 9 caractères.

2- Un nom de programme doit commencer par une minuscule et ne doit inclure que des lettres minuscules, des chiffres, des points, des tirets ou des tirets bas.

3- Le nom d'une option est une lettre unique ou un chiffre unique.

4- Toutes les options doivent commencer par un tiret.

5- Les options qui n'attendent pas de paramètre, excepté la dernière option, doivent pouvoir être regroupées derrière le même tiret.

6- Dans le cas d'une option attendant un paramètre, le paramètre doit être séparé de l'option par un espace, ou bien être accolé à l'option.

7- Une option qui attend un paramètre peut ne pas avoir de paramètre.

8- Le paramètre d'une option peut correspondre à une liste de paramètres, et dans ce cas c'est une chaine délimité en plusieurs paramètres séparés par des espaces, ou bien c'est une liste de paramètres séparés par des virgules sans espace.

9- Toutes les options doivent précéder les opérandes sur la ligne de commande.

10- L'argument spécial -- (deux titets consécutifs), s'il est présent, marque la fin de la série d'options (dans le sens de la lecture). Les arguments suivants jusqu'à la fin de la ligne de commande doivent être des opérandes et sont considérés comme tels même s'ils commencent par un tiret.

11- Les options peuvent être placées dans un ordre quelconque à moins qu'elles soient exclusives, et dans ce cas toute option annule les options précédentes qui lui sont exclusives. Si une même option apparait plusieurs fois avec des paramètres différents cela correspond à la même option avec comme paramètre la liste concaténée des paramètres distincts dans l'ordre de leur apparition.

12- Au niveau des opérandes, l'ordre peut être significatif. Parcontre au niveau des options non-exclusives, l'ordre ne doit pas avoir d'importance.

13- Si un argument peut être identifié selon les directives 3 à 10 comme une option ou comme un groupe d'options alors il doit être traité comme tel puis s'il peut être identifié comme un paramètre d'option alors il doit être traité comme tel.

On a remplacé la règle n°13, car on renonce à la règle sur l'entrée/sortie par défaut désignée par un tiret, (il existe déjà des descripteur pour cela) et on préfère rappeler la priorité d'interprétation des options et groupes d'options, puis celle des paramètres, puis en dernier celle des opérandes.

Convention GNU sur les options longues :

1- Un programme normalisé doit prévoir une option longue pour chacune des options courtes. Les options longues commence par deux tirets consécutifs.

2- Il est conseillé de prévoir des options courtes équivalentes pour les options longues supplémentaires.

3- Les options longues peuvent être abrégés lors de leur évocation jusqu'à la limite d'unicité. Exemple, à partir des options --verbose et --verbatim, vous pouvez saisir --verbo et --verba.

4- Dans le cas d'une option longue attendant un paramètre, le paramètre doit être séparé de l'option longue soit par un espace ou soit par le signe égal sans espace.

5- Les options longues peuvent être placées avant ou entre des opérandes ou après.

6- Une option longue qui attend un paramètre peut ne pas avoir de paramètre.

7- Le programmeur peut décider de faire commencer les options longues par un seul tiret. L'option longue se distingue alors de l'option courte par la saisie d'au moins 2 caractères en plus du tiret.

11) ChatGPT comme professeur particulier pour apprendre le BASH

L'intelligence artificielle ChatGPT ne sait pas faire les calculs rigoureux mais se débrouille trés bien pour dispenser ses connaissances de façon adaptées. Et il connait le langage Bash ainsi que de nombreux autres langages. L'apprentissage peut ainsi s'exercer sur les parties choisies par l'apprenti et qui intéressent l'apprenti. L'attrait de l'élève pour le sujet étudié étant déterminant pour la réussite d'une aquisition intélligente (l'intéligence de la passion, une intélligence émotive...), ce procédé révolutionne l'enseignement des langages informatiques. Voir un exemple : Dialog1 et un début d'abrégé Shell-Bash-1-1.htm

 

Accueil
Sommaire
Suivant

 


Dominique Mabboux-Stromberg