Scripting

TBD getopts.

Le scripting c'est l'exécution de fichiers textes pour résoudre un problème spécifique.

TBD si fichier exécutable et pas shebang alors on l'exécute avec /bin/sh (faire un exemple)

Un langage de script est un langage interprété. Cela peut-être :

Shebang

Le fonctionnement est divinement simple. Lors de 'exécution du fichier, le noyau vérifie s'il commence par #!, appelé shebang ("hash-bang" raccourci).

Si oui la fin de la ligne correspond au chemin absolu d'un programme auquel on passe en 1er paramètre le fichier à exécuter.

Par exemple si on a le fichier exécutable suivant, nommé bonjour :

#! /usr/bin/python

print("Coucou monde !")

Les deux commandes suivantes sont équivalente (si on est dans le dossier contenant le fichier) :

C'est la raison fondamentale pour laquelle les commentaires dans un langage de script est toujours le #, la première ligne contenant le shebang n'est pas interprétée lors de l'exécution du script.

Il y a deux moyens classique d'utiliser le shebang :

La différence est que pour le deuxième appel, c'est le bash du PATH qui est pris et pas celui dans /bin. Ces deux programmes pouvant être différent. bash peut être dans /bin, dans /usr/bin, dans /usr/local/bin ou encore ailleurs selon le système et la méthode d'installation, pour python il est courant d'avoir plusieurs versions d'installées. En revanche, tous les systèmes ont /usr/bin/env.

Shell scripting

Un script shell n'est pas un programme compliqué, c'est fait pour automatiser des choses simples executer des commandes qui elles font le travail. Enfin, un script shell doit pouvoir être utilisé sur toute machine unix.

Si vous devez faire des choses plus compliquée, préférer utiliser un langage de programmation comme python

Plusieurs sortes de shell (sh : shell historique, bash : shell par défaut dans Linux, zsh : shell par défaut macos, ...)

perso : mon shell c'est zsh mais les script je les écris en (ba)sh. Si vous êtes administrateur système et que vous voulez que vos scripts fonctionnent partout, il existe des machines sans bash, utilisez juste sh.

Interpréteurs de script

Tout programme qui peut exécuter un fichier texte passé en paramètre fonctionne. Le plus classique étant bien sur le shell mais, comme on vient de le voir on peut le faire en python.

python

python stdin

sed/awk

Une autre alternative courante est d'utiliser des commandes permettant de traiter des données comme sed ou encore awk :

Bibliographie

Créez un fichier nommé bonjour contenant :

#! /usr/bin/env python
print("bonjour !")

Placez le dans votre dossier $HOME/.local/bin et faites en sorte de pouvoir l'exécuter de partout en modifiant le path.

solution

  • créer le fichier au bon endroit
  • modifier les droits pour le rendre exécutable
  • dans le fichier .profile, modifier le $PATH pour qu'il accepte le chemin export PATH=${PATH}:${HOME}/.local/bin