Introduction au système d'exploitation UNIX/LINUX

De POLR
Révision datée du 21 février 2013 à 16:29 par Caveenj (discussion | contributions) (Page créée avec « = Introduction = UNIX est un système d'exploitation multi-tâches et multi-usagers qui a été créé à la fin des années 1960 par Ken Thompson et Dennis Ritchie des ... »)
(diff) ← Version précédente | Voir la version actuelle (diff) | Version suivante → (diff)
Sauter à la navigation Sauter à la recherche

Introduction

UNIX est un système d'exploitation multi-tâches et multi-usagers qui a été créé à la fin des années 1960 par Ken Thompson et Dennis Ritchie des Laboratoires Bell. Aujourd'hui, UNIX se décline en plusieurs saveurs: LINUX, HPUX, AIX, FreeBSD, Solaris, etc. Toutes ces versions offrent les fonctionnalitées suivantes:

  • Accès simultané de la machine par plusieurs utilisateurs
  • Support pour la création, la modification et la destruction de programmes, processus et fichiers
  • Des systèmes de fichiers composés d'une hiérarchie de répertoires où résident les fichiers et processus
  • Le partage équitable du processeur, de la mémoire et des disques parmis les processus
  • Une méthode permettant aux processus et périphériques de communiquer entre eux, même s'ils sont sur des machines différentes
  • Une multitude de programmes et utilitaires


Nous ne présentons ici que les concepts et commandes de bases nécessaires pour qu'un utilisateur puisse faire ses premiers pas en UNIX. Le lecteur y trouvera, entre autres, de l'informations sur l'interpréteur de commande et les variables d'environnement, les commandes essentielles permettant de manipuler les répertoires et les fichiers ansi que leur contenu, les expressions régulières et l'éditeur vi. Mentionons que pour certaines des commandes présentées, seules les options les plus utilisées sont décrites . Le lecteur est donc invité à consulté la documentation en ligne (manpages) pour connaitre toutes les options disponibles pour chacune des commandes.

L'interpréteur de commandes

L'interpréteur de commande ou shell a pour fonction de traduire les commandes de l'utilisateur et de les acheminer au système d'exploitation pour qu'elles y soient exécutées. Il existe plusieurs interpréteurs de commandes sous UNIX: sh (Bourne shell), csh (C shell), ksh (Korn shell), bash (Bourne Again shell),...

Tous les interpréteurs de commandes peuvent prendre les directives de l'utilisateur à partir du clavier ou à partir de fichiers, nommées scripts, dans lesquels on regroupe un ensemble d'instructions.

L'interpréteur utilisé par la majorité des usagers du LASSO est le Bourne Again shell ou bash.

Les fichiers standard

L'interpréteur de commandes utilise automatiquement trois fichiers dits standard:

Entrée standard

   Fichier à partir duquel les directives sont lues; habituellement le clavier. Unité 0

Sortie standard

   Fichier dans lequel les résultats des commandes sont écrits; habituellement l'écran. Unité 1

Erreur standard

   Fichier dans lequel les erreur sont rapportées; habituellement l'écran. Unité 2


Redirection des fichiers standard

Il est possible de rediriger vers un autre fichier les fichiers standard:

<fichier

   Rediriger l'entrée standard de telle sorte que son contenu provienne de fichier plutôt que du clavier 

>fichier

   Rediriger la sortie standard vers fichier plutôt que vers l'écran. Si fichier existe déjà, son contenu est remplacé.

>> fichier

   Rediriger la sortie standard vers fichier plutôt que vers l'écran. Si fichier existe déjà on ajoute à la suite du contenu déjà present.

2> fichier

   Rediriger l'erreur standard vers fichier plutôt que vers l'écran. Si fichier existe déjà, son contenu est remplacé.

2>> fichier

   Rediriger l'erreur standard vers fichier plutôt que vers l'écran. Si fichier existe déjà, on ajoute à la suite du contenu déjà présent.


Il est possible de rediriger la sortie et l'erreur standard dans le même fichier en utilisant la syntaxe 2>&1 de la façon suivante :

commande > fichier 2>&1 ( et non pas commande 1>&2 > fichier)

Exemples de redirection:


Écrire la liste des fichiers du répertoire courant et les messages d'erreur dans liste_fichiers

    ls -al * > liste_fichiers 2>&1 

Ecrire les résultatst du programme mon_script dans le fichier resultats et les erreurs d'exécution dans le fichier erreurs.log:

     mon_script > reslutats 2> erreurs.log


Enchaînement de commandes ou pipeline

L'enchaînement de commandes ou pipeline est un mécanisme par lequel la sortie standard d'une commande est connectée à l'entrée standard d'une autre commande. Le pipeline se fait au moyen de l'opérateur barre verticale |. Chacun des programmes composant le pipeline agit alors comme un filtre et le résultat final de l'enchaînement de commandes s'affiche sur la sortie standard. Exemples de pipelines:

Afficher une liste du nom de tous les usagers présentement sur le système. La liste est triée et sans doublons:

       who | cut -d' ' -f 1 | sort -u

Afficher la liste de tous les utilisateurs qui ont des processus actifs sur le système. La liste est triée et sans doublons:

       ps -ef | cut -d' ' -f 1 | sort -u

Rechercher la chaîne ERREUR parmis les 500 dernières lignes du fichier journal et afficher les résultat un écran à la fois:

       tail -500 journal | grep ERREUR | more


Substitution de commande

Les caractères accent grave `commande ` ou la syntaxe $(commande) offrent un mécanisme permettant de substituer le résultat d'une commande à la commande elle-même. On peut ainsi provoquer l'exécution d'une commande et faire en sorte que son résultat serve de paramètre à une autre commande. Quelques exemples:

Ajouter la date système à la fin du fichier mon_journal:

     echo `date` >> mon_journal     #(équivalent à date >> mon_journal)

ou encore:

      echo $(date) >> mon_journal    

Editer avec l'éditeur gedit tous les fichiers contenant le chaîne ERREUR:

    gedit `grep -l ERREUR *`

ou

    gedit $(grep -l ERREUR) *`

Variables d'environnement

L'interpréteur de commande utilise plusieurs variables dites d'environnement pour pouvoir fonctionner correctement. Par exemple, lorsque l'utilisateur tape la commande ls, l'interpréteur consulte la variable PATH pour localiser la commande à exécuter. L'utilisateur peut visualiser l'ensemble de ses variables d'environnement au moyen de la commande env.

Pour récupérer la valeur d'une variable d'environnement on précède son nom du signe $ . Il est facile d'ajouter, d'éliminer ou de modifier des variables d'environnement en éditant le fichier .bash_profile qui se trouve de le répertoire HOME de chaque usager. Pour ajouter une nouvelle variable d'environnement, il suffit de la définir dans le fichier .bash_profile puis de l'exporter pour la rendre disponible à l'interpréteur de commandes. On peut par exemple, définir la variable d'environnement MONTEMP qui représente un répertoire servant à contenir des fichiers temporaires de la façon suivante:

  1. Editer le fichier .bash_profile et y ajouter
       MONTEMP=/home/caveenj/temp
       export MONTEMP


On pourra par la suite conserver des fichiers temporaires dans ce répertoire:

Obtenir la date du système et la sauvegarder dans le fichier MONTEMP/date_courante:

    date > $MONTEMP/date_courante


On peut ajouter un nouveau chemin /home/caveenj/bin à la variable PATH de la façon suivante:

Editer le fichier .bash_profile et y modifier la variable PATH

   PATH=$PATH:/home/caveenj/bin


Si on désire que les changements apportés au fichier .bash_profile affectent immédiatement notre environnement, il faut exécuter le fichier .bash_profile à partir de son shell en utilisant l'opérateur point . (point) ou à l'aide de la commande source:

  cd
  . ./.bash_profile

ou:

  cd
  source ./.bash_profile


sinon, les changements ne seront appliqués qu'à la prochaine session de travail de l'usager.