Prise de contact avec Unix

De Wicri Manuel

Ce module a pour objet de familiariser l'utilisateur avec l'utilisation élémentaire d'Unix (appel de commandes et manipulations simples de fichiers). En effet la génération de Serveurs d'exploration s'effectue avec le langage de commande d'Unix.

Objectifs de ce module

La création d'un serveur d'exploration et de sa plateforme associée s'effectue à l'aide de commandes Unix. On trouvera donc sur le réseau de nombreux exemples de suites de commande Unix pour réaliser une opération.

Par exemple, la génération d'un serveur sur la recherche au Kazakhstan (accessible sur Wicri/Europe) se fait à l'aide de tables. Une page est par exemple dédiée à la génération des données (wicri-europe.fr:Wicri:KazakhstanV1/Paramètres, data). Cette page contient des scripts tels que :

sh KazakhstanV1/bin/AreaReset.sh
ExplorAreaInit -d KazakhstanV1
sh KazakhstanV1/bin/AreaCreateData.sh

Ce wiki donne accès à un exemple de Serveur d'exploration sur Rabelais, avec des pages contenant d'autres exemples de shell. Voir notamment :

Plus simplement, dans le domaine de la santé et des sciences de la vie, ile est possible de créer un serveur en une seule commande unix (plus quelques manipulations).

Le but de cette page est d'aider le lecteur à comprendre ce type de directives pour qu'il soit capable de les adapter à ses propres besoins.

Prise de contact avec le shell d'Unix

Le système Unix est piloté par un langage de commande nommé « shell ». Plus exactement, plusieurs langages de commandes sont généralement disponibles sur une installation, par exemple :

  • le shell standard ou « Bourne shell » (sh)
  • le C shell (csh), dont la syntaxe est plus proche du C

Dans ce chapitre, nous resterons à un niveau de généralité compatible avec ces différentes versions.

Une session shell est une suite d'appels de commandes, avec ou sans paramètres. Par exemple, la commande :

date

donne l'heure à l'opérateur.

Pour en savoir plus sur cette commande, on peut appeler la commande man avec comme paramètre date pour en obtenir le mode d'emploi, exemple :

man date

Une autre commande utile est la commande echo qui écrit simplement la zone paramètre sur la sortie standard (écran). Ainsi la commande :

 echo coucou

va écrire coucou, suivi d'un saut de ligne, sur la ligne courante.

Dans l'exemple donné au paragraphe « objectifs », la ligne « sh KazakhstanV1/bin/AreaReset.sh » provoque un effacement de la plateforme avant une nouvelle génération. La commande sh (shell) va lancer le shell contenu dans le fichier KazakhstanV1/bin/AreaReset.sh.

Les paragraphes qui suivant détaillent les mécanises de désignation de fichiers.

La hiérarchie des fichiers Unix

Chemins absolus

L'espace disque d'Unix est organisé en une hiérarchie de répertoires (directories) qui contiennent d'autres répertoires ou des fichiers. Tous ces éléments partent d'une racine unique (root).

Pour désigner un fichier ou un répertoire, on utilisera un chemin (path). Un chemin sera dit absolu s'il part de la racine, un tel chemin commencera toujours par un caractère « barre de fraction (slash) ».

La commande «ls» permet d'obtenir la liste des éléments repérés par un chemin. Par exemple pour obtenir les répertoires les plus proches de la racine, il suffit de faire :

ls /

On obtient ainsi une liste de répertoires avec notamment « bin » qui contient des programmes publics et « user » qui constitue la base de la gestion des usagers. Pour explorer la liste des usagers, on peut continuer à utiliser la commande ls avec un premier niveau de répertoire, par exemple :

ls /users

Répertoires de travail, chemins relatifs

En cours de session, l'utilisateur travaille à partir d'un répertoire privilégié nommé « working directory » ou répertoire courant. Au démarrage d'une session shell, l'utilisateur est en fait positionné sur un répertoire propre à l'usager (home directory). Il peut ensuite se déplacer en utilisant des commandes telles que cd (change directory).

Une commande (pwd) - print working directory) permet de connaître ce répertoire. Par exemple, en début de session, en tapant :

pwd

on obtient l'adresse absolue du « home directory » (par exemple /users/martin

Il est possible de créer de nouveaux répertoires par la commande mkdir (make directory). Dans la suite de ce paragraphe nous allons construire une hiérarchie de répertoires  :

  home directory 
----------------+                 Japon
                | TestDir        +--------
                +--------+      |
                |        | Asie  |
                         +-------+ Inde
                         |       +---------
                                           
                         

Dans un premier temps, on construit un répertoire nommé TestDir. Par précaution, on effectue une commande « cd » qui, sans paramètre, positionne l'espace de travail sur le « home directory ».

cd
mkdir TestDir

Pour créer la fin de l'arborescence on va se placer sur Corpus et créer les derniers répertoires.

cd TestDir
mkdir Asie
mkdir Asie/Japon
mkdir Asie/Inde
cd Asie
ls

Pour effacer un répertoire vide, il faut utiliser la commande rmdir.

Exemple :

cd
ls
mkdir Test1
ls
rmdir Test1
ls

Exercice : effacer la hiérarchie TestDir.

Variables d'environnement

Comme dans la plupart des environnement de programmation le shell permet la manipulation de variables. Elles sont repérées par des symboles précédés du caractère dollar ($). Pour la lisibilité des shells, elles sont souvent constituées de caractères en majuscules, par exemple $A, $B ou $DILIB.

Connaissance des variables d'environnement

Pour connaître les variables d'environnement utilisables, il suffit de faire :

env

Le shell imprime une liste dans laquelle on trouvera par exemple USER et sa valeur.

Affichage et utilisation d'une variable d'environnement

Pour utiliser une variable, dans les cas simples, il suffit de la nommer en préfixant par le caractère dollar, exemple :

echo Bonjour $USER
Création ou affectation d'une variable d'environnement

Cette possibilité ne sera pas utilisée dans les premiers modules de formation. Nous nous limitons ici à un exemple.

AGE=17

permet d'affecter la valeur 30 à la variable $AGE.

On peut ainsi l'utiliser ainsi :

echo on n\'est pas sérieux quand on a $AGE ans

Voir aussi