Scripting

Le scripting c'est l'exécution de fichiers textes pour résoudre un problème spécifique. Un langage de script est un langage interprété. Cela peut-être :

Le fonctionnement est divinement simple. Lors de 'exécution du fichier, le noyau vérifie s'il commence par #!, appelé shebang.

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

Si vous n'avez pas besoin des spécificités de bash on a l'usage d'utiliser les commandes fondamentales des shell de type sh. Nous allons voir ci-après les commandes bash, car elles permettent de faire parfois des choses plus poussées.

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