C++ CIP 2 Année 2016 2017 UNIX : GUIDE D’UTILISATION UNIX est le système d'exploitation le plus répandu sur les stations de travail. Au même titre que Windows, il est aussi disponible sur les PC à travers de nombreuses déclinaisons, dont Linux est la plus répandue. L'objectif de ce guide est de présenter les commandes de base d'UNIX. 1. CONNECTION (LOGIN) UNIX est un système d'exploitation multi-utilisateurs. Il doit donc identifier chaque utilisateur pour pouvoir lui proposer un environnement personnalisé (chemin de son répertoire de travail par exemple). Lorsqu'on veut utiliser une station, il faut donc commencer par fournir son nom d'utilisateur (login name) et son mot de passe. Le nom d'utilisateur est généralement constitué des 8 premières lettres du nom propre de l'utilisateur. Le mot de passe permet de garantir une certaine sécurité en empêchant aux utilisateurs qui connaissent le nom d'un autre utilisateur de se connecter sous ce nom. Pour préserver cette sécurité, il est indispensable d'avoir un mot de passe personnel et confidentiel. D'autre part, il faut aussi penser à se déconnecter lorsque l'on arrête de travailler sur une station. logout : termine une session de travail. Attention : ne jamais éteindre les stations après avoir tapé logout. yppasswd : change le mot de passe d'un utilisateur. whoami : affiche le nom de l'utilisateur connecté à une station. who : affiche le nom de tous les utilisateurs connectés à une station. id : affiche les numéros d'identification associés par UNIX à un utilisateur. Exemple : id utilisateur. rusers : affiche le nom de tous les utilisateurs connectés sur toutes les machines du réseau. su : permet la connection sous un autre nom d'utilisateur. Exemple : su utilisateur. Remarque : il faut taper le mot de passe de cet utilisateur. hostname : affiche le nom de la station. rlogin : permet une connection a distance sur une autre machine. Exemple : rlogin machine. domainname : affiche le nom de domaine (c'est à dire le "nom" du réseau local). 2. COMMANDES Le shell est l'interprète des commandes. Il sert d'interface entre le système UNIX et l'utilisateur en traduisant les commandes entrées par ce dernier en actions réalisables par le système. Généralement, des options permettent de modifier ou préciser l'action d'une commande (elles sont repérées par un tiret suivi d'un ou plusieurs caractère). Une commande peut être entrée en tapant un mot, mais il est possible de les combiner de manière à ce que la sortie d'une commande serve d'entrée pour une autre commande (pipeline). Plusieurs commandes peuvent aussi être regroupées dans un fichier (shell procedures ou shell scripts) pour les exécuter en tapant seulement le nom du fichier. 1/4 man whereis : : whatis history : : alias : | : affiche de l'aide sur une commande. Exemple : man commande. localise l'emplacement des fichiers sources, binaires et d'aide d'un programme. Exemple : whereis programme. affiche la fonction d'une commande. Exemple : whatis commande. affiche la liste des 128 dernières commandes entrées par un utilisateur. Chaque commande est repérée par un numéro. crée un raccourci pour une commande. Exemple : alias rm="rm -i" demande confirmation pour effacer un fichier avec la commande rm. crée un lien entre deux commandes (pipe). Exemple : cat fichier | sort affiche les lignes d'un fichier texte, triées par ordre alphabétique. 3. PROCESSUS Un processus est une commande ou un programme qui peut être exécuté. UNIX donne à chaque processus exécuté un numéro unique (PID). Les processus peuvent être exécutés en premier plan (interaction avec l'utilisateur, par défaut) ou en arrière plan (autonomie du processus). Les démons (daemons) sont des processus exécutés en arrière plan, disponibles à tout moment, et qui fournissent des services de base aux utilisateurs (impression, communication, réseau ...). & at : : ps bg : : fg : kill nice : : exécute un processus en arrière plan. Exemple : processus &. spécifie l'heure de démarrage d'un ou plusieurs processus. Exemple : at midnight <entrée> processus1 <entrée> processus2 ... <^D>. Le caractère ^D est obtenu en tapant simultanément Ctrl et D. affiche la liste des processus d'une machine. Exemple : ps -gv. transforme un processus de premier plan en un processus d'arrière plan. Exemple : bg PID. transforme un processus d'arrière plan en un processus de premier plan. Exemple : fg PID. interrompt un processus. Exemple : kill -9 PID. modifie la priorité d'exécution d'un processus. Exemple : nice ±n processus incrémente ou décrémente la priorité du processus. n doit être compris entre -20 (moins prioritaire) et 19 (plus prioritaire). 4. REDIRECTION Lors de l'exécution d'une commande, trois fichiers sont généralement ouverts : les fichiers d'entrée standard, de sortie standard, et d'erreur standard. Par défaut, ces trois fichiers sont respectivement le clavier (stdin) et l'écran (stdout et stderr). Mais il est possible de redéfinir ces valeurs par défaut vers d'autres fichiers. > : < : >> : clear echo tee : : : redirection de la sortie standard. Exemple : ls > dirlist envoie le résultat de la commande ls dans un fichier dirlist. redirection de l'entrée standard. Exemple : commande < fichier ; la commande utilise le fichier comme entrée. redirection de la sortie standard. A l'inverse de >, l'écriture se fait en ajout dans le fichier de sortie. efface l'écran. affiche un message vers la sortie standard. Exemple : echo message. affiche la sortie d'un programme et la copie dans un fichier. 5. RÉPERTOIRES 2/4 Comme sous MS-DOS, les disques sous UNIX sont organisés en répertoires et sousrépertoires. Ces répertoires permettent de regrouper des fichiers et des sous-répertoires de manière hiérarchique et modulaire. . .. ~ / mkdir rmdir mvdir : : : : : : : cd pwd cp : : : ls : représente le répertoire courant. représente le répertoire juste au dessus du répertoire courant. représente le répertoire de l'utilisateur connecté. représente le répertoire racine. crée un répertoire. Exemple : mkdir répertoire. efface un répertoire. Exemple : rmdir répertoire. renomme ou déplace (avec son contenu) un répertoire. Exemple : mkdir répert1 répert2. change le répertoire courant. Exemple : cd répertoire. affiche le répertoire courant. copie un répertoire (avec son contenu). Exemple : cp répertoire. Remarque : pour copier un répertoire avec tous ses sous-répertoires, il faut utiliser l'option -R. Exemple : cp -R répertoire. affiche le contenu d'un répertoire. Exemple : ls répertoire. Pour afficher tous les fichiers avec leur taille, il faut utiliser les options -la. Exemple : ls -la. L'affichage est alors de la forme : d rwx r-x r-x 2 owner 1024 Jun 16 18:33 name. d indique que name est un répertoire, le premier groupe rwx indique que owner a des droits de lecture, écriture et exécution sur name, les second et troisième groupes r-x que les autres utilisateurs n'ont pas ce droit d'écriture, 2 indique le nombre de sous répertoires de name, 1024 est la taille en octets occupée par name, Jun 16 18:33 est la date et l'heure de dernière modification de name, name est le nom du répertoire ou fichier. 6. FICHIERS Les noms de fichiers sous UNIX peuvent posséder jusqu'à 255 caractères. Les fichiers qui commencent par . sont considérés comme des fichiers cachés ; il faut utiliser l'option -a pour les visualiser avec la commande ls. Habituellement, les fichiers d'un utilisateur peuvent être lus par tous, mais sont protégés en écriture (seul l'utilisateur peut les modifier). * ? rm : : : del : mv : cp cat : : caractère générique qui remplace un groupe de caractères. caractère générique qui remplace un caractère. efface un fichier. Exemple : rm fichier. Attention : aucune confirmation n'est demandée avant l'effacement et il n'existe aucun moyen de récupérer un fichier effacé. efface un fichier après avoir demandé confirmation. Exemple : del fichier. Pour limiter les erreurs, on utilisera del plutôt que rm. Attention : il n'existe aucun moyen de récupérer un fichier effacé. déplace ou renomme un fichier. Exemple : mv chemin/fichier nouveau_chemin/nouveau_fichier. Si nouveau_chemin est différent de chemin, le fichier est déplacé. Si nouveau_fichier est différent de fichier, le fichier est renommé. copie un fichier. Exemple : cp fichier nouveau_fichier. Affiche tout le contenu d'un fichier texte. 3/4 more : wc : nl : head : tail : find : grep : sort : diff : file chown : : chgrp : chmod : Exemple 1 : cat fichier. Affiche le contenu d'un fichier texte en faisant une pause entre les pages. Exemple : more fichier. compte le nombre de mots, lignes et caractères d'un fichier texte. Exemple : wc fichier. affiche en les numérotant les lignes (non vides) d'un fichier texte. Exemple : nl fichier. affiche les 10 premières lignes d'un fichier texte. Si l'option -n est utilisé, les n premières lignes sont affichées. Exemple : head -5 fichier. affiche les 10 dernières lignes d'un fichier texte. Si l'option -n est utilisé, les n dernières lignes sont affichées. Exemple : tail -20 fichier. recherche des fichiers sur un disque. La syntaxe de find est assez compliquée : find chemin -name fichier -print. Exemple 1 : find / -name .profile -print affiche (-print) les fichiers .profile (-name .profile) qui se trouvent dans tous les répertoires et sous-répertoires du disque (recherche à partir de la racine /). Exemple 2 : find . -name '*.o' -exec rm {} \; -print affiche (-print) et efface (-exec rm {} \;) tous les fichiers d'extension .o (-name '*.o') qui se trouvent dans le répertoire courant et ses sous-répertoires (.). recherche une chaîne de caractères dans un fichier texte. Exemple : grep chaîne fichier. trie les lignes d'un fichier par ordre alphabétique. Exemple 1 : sort fichier1 affiche le contenu trié de fichier1. Exemple 2 : sort fichier1 fichier2 affiche les contenus triés de fichier1 et fichier2. Exemple 3 : sort -o fichier fichier trie le contenu de fichier et le sauve dans fichier. compare deux fichiers ou les contenus de deux répertoires. Exemple : diff fichier1.bak fichier1 affiche les différences entre les deux fichiers. Si l'option -w est utilisé, les tabulations et les espaces différents ne sont pas pris en compte. affiche le type d'un fichier. Exemple : file fichier.c affiche 'ascii text'. change le nom de propriétaire d'un fichier. Exemple : chown utilisateur fichier. change le groupe d'appartenance d'un fichier. Exemple : chgrp groupe fichier. change les droits d'utilisateurs d'un fichier. Exemple : chmod u/g/o/a±r/w/x fichier 4/4