Mémento UNIX
Transcription
Mémento UNIX
Environnement UNIX Vous disposez d'un PC relié à un réseau... : , mettre son nom d’utilisateur, puis son mot de passe (ce dernier n’apparaît pas sur l’écran). Lorsque l’ordinateur sera prêt, il s’affichera un écran avec des icônes. Utilisez la souris pour déplacer le curseur sur l'écran. Ce curseur (une flèche) passe d'une zone de l'écran à l'autre (ici, ce déplacement s'accompagne d'un changement de forme lorsqu’une icône est activée : flèche → main). Vous aller travailler sur ibm1. Cependant vos répertoires seront accessibles également à partir du PC (ils sont physiquement sur un disque unique accessible à partir du réseau) : L’icône HOME correspond au PC sous windows. Vous pouvez y télécharger ce texte à partir du site web http//:www.lct.jussieu.fr/cicrp (format pdf). L’icône LINUX correspond au PC sous linux. Le prompt est « nomdupc.cicrp.jussieu.fr » /home/p6chil/userid L’icône NETSCAPE correspond au réseau. L’icône MAIL correspond au courrier. Le nom de la machine IBM1 est ibm1.cicrp.jussieu.fr L'adresse de la machine IBM1 est 134.157.15.1 Cliquez sur l’icône ibm1. Entrer votre userid, puis votre mot de passe. Lorsque l’ordinateur sera prêt, vous aurez une fenêtre avec un signal prompt : ibm1:/home/p6chil/userid : Si tout se passe bien : Sélectionner QUITTER l’ENVIRONNEMENT dans le menu déroulant (touche de droite de la souris) puis QUITTER KDE. Si la sortie de session vous est refusée (vous voyez apparaître le message : there are running jobs): Il y a des exécutions en cours (Ce sont souvent des opérations qui sont le résultat de fausses manoeuvres mais qui existent toujours pour l'ordinateur), il faut alors "tuer" ces processus actifs (cela est également nécessaire pour remplacer un exécutable si un processus l’utilisant tourne encore) : 1) taper ps pour connaître les numéros des opérations en cours. Ces opérations apparaissent avec des numéros. En plus de kshell qui définit votre environnement et de ps que vous venez de demander, vous voyez les opérations qui sont encore considérées comme actives pour l'ordinateur. 2) vous devez les supprimer en tapant kill -9 n°de l'opération 3) après réponse de l'ordinateur, refaire le processus de sortie . Vous disposez d'une souris, de fenêtres et de menus déroulants activés par les touches de la souris et par des zones de l'écran (coin supérieur gauche de la fenêtre). Pour activer une fenêtre, il faut placer le curseur dans la fenêtre. On peut agrandir une fenêtre en cliquant sur le coin supérieur droit (agrandissement maximal, il n'apparaît qu'une seule fenêtre, cliquer de nouveau fait revenir à la taille initiale), en 1 saisissant le coin inférieur droit et en le déplaçant ou à partir du menu déroulant activé par le coin supérieur gauche. On peut déplacer cette fenêtre; on peut la réduire; la réduction au minimum donne une icône. Si le curseur est placé hors de la fenêtre, le menu déroulant de la souris active certains ordres (ouverture d'une seconde fenêtre, quitter...); Le clavier n'est pas activé. Si le curseur est dans une fenêtre, le menu déroulant de la souris active d'autres fonctions (copier : la saisie est faite par la touche de gauche; coller : touche du milieu). Le clavier est activé. La fenêtre ibm1. Il y a un signal le signal "prompt" qui est spécifique du langage que vous manipulez. Ce prompt peut être défini dans un fichier .profile qui définit des conditions particulières de votre environnement c:\> pour DOS $ pour UNIX (cas général) /home/p6chil/userid sur l'ordinateur ibm1 (le prompt vous indique le répertoire où vous êtes) Ce signal indique que l'ordinateur attend une commande. ? indique que l'ordinateur attend une précision que vous ne lui avez pas donné, vous avez fait une commande incomplète. Si vous ne savez pas, frappez CNTRL-Z. Cela suspend le processus en cours. Dans ce cas, il y a lieu d'arrêter ce processus avant de quitter la session (kill -9 n°u processus). Le Clavier. Il y a des chiffres et des lettres comme un clavier ordinaire. On peut effacer une touche que l'on vient de frapper en utilisant le backspace (←). La touche shift ⌂ appuyée pendant que l'on frappe une lettre permet de passer des minuscules aux majuscules. Frapper simultanément plusieurs touches modifient la signification des touches: la touche shift ⌂ (qui donne ce qui est écrit en haut des touches), la touche contrôle, la touche ALT et la touche ALT-GRAPH (qui donne ce qui est écrit en couleur sur les touches). Quatre flèches permettent de déplacer le curseur sur l'écran. Les commandes Une action sur l'ordinateur est déclenchée par une commande. Une commande peut être obtenue en frappant son nom, puis en tapant sur la touche retour ’| qui envoie l'exécution. Frapper ls, vous verrez apparaître la liste des fichiers qui sont déjà installés dans votre répertoire s'il y en a. Les fichiers contiennent des écritures. Ils peuvent contenir du texte à consulter dans un langage quelconque (fichier dans lequel on peut lire ou écrire), des listes de commandes, un module objet ou exécutable (dans ces 2 derniers cas le fichier n'est ni lisible ni imprimable. Ne jamais lancer l'impression d'un module exécutable!). La plupart des commandes sont accompagnées de paramètres (obligatoires ou optionnels) et d'arguments. Par exemple ls -ail vous donne plus d'informations: un 2 numéro (ou inode) associé à chaque fichier, des renseignements sur les gens autorisés à lire, écrire ou utiliser vos fichiers... Les paramètres a (all* ) i (inode) et l (long) sont abrégés en ail et placés derrière un tiret. Les arguments concernent les objets sur lesquels agissent les commandes, par exemple un nom de fichier ou de répertoire. cat .profile ou more .profile vous montre le contenu du fichier profile. Ce fichier contient des commandes qui sont actionnées des que vous vous branchez. Vous pouvez le modifier si vous souhaitez un environnement particulier. Si un fichier est long, il est préférable de l'afficher page par page. pour cela faire more -l fic1 On passe alors de page en page en actionnant la barre d'espace (ou en arrière grâce à CNTRL-B). On peut rechercher une expression avec more: /mot va rechercher l'expression mot vers la suite du texte et ?mot vers le début du texte. On peut enchaîner deux commandes (en les séparant par des points virgules s'il y a confusion possible entre nouvelle commande et argument de la précédente). La seconde prend en entrée le résultat de la première | ls -l more la commande ls -l fait défiler trop d'informations sur l'écran; more | enchaîné va permettre de faire défiler ces informations page par page. | le signe "pipe" est obtenu en tapant: CNTRL+ALT+F6 | Des informations peuvent être consultées pour chaque commande par man cmd1 (man renvoie aux pages d'un manuel dans une bibliothèque de l'ordinateur) ou sos cmd1. Une commande peut être obtenue en frappant une touche préréglée du clavier; ce sont les clefs de commandes. Les clefs sont des touches qui exécutent directement une action sur l'ordinateur. Pour voir les commandes prédéfinies faire stty -a par exemple CNRTL-Z est défini et son action suspend une commande Vous pouvez définir vos choix, par exemple stty erase CNTRL-H Ces choix peuvent être mis dans votre fichier .profile. Les commandes pour les répertoires. Nous venons de voir qu'il existe des fichiers et des répertoires. Votre environnement vous situe dans un répertoire que vous pouvez afficher par pwd. Le nom du répertoire est un nom composé : /home/p6lchi/p6lchiXX/ Les différents membres du nom sont séparés par des slash /. C'est une séquence hiérarchisée chaque nom est un sous-répertoire du nom qui le précède. Vous pouvez créer un sous-répertoire par mkdir rep1 le détruire par rmdir rep1 (catalogue vide) ou bien par rm -r rep1 (catalogue ayant un contenu) changer son nom par mv rep1 rep2 le copier par cp -r rep1 rep2 cp -r rep0/rep1 rep2 * les fichiers dont le nom commence par un point (.profile) n'apparaissent qu'avec le paramètre all 3 un point à la place de rep2 signifie que l'on garde le nom rep1 et que l'on recopie rep1 dans le répertoire dans lequel on est situé. trouver dans une hiérarchie de fichiers ceux dont les nom se terminent par ".f": find /rep/sousrep -name *.f * signifie tous les mots et ? toutes les lettres entrer dans le répertoire dir1: cd dir1 Revenir dans le répertoire initial: cd .. Aller dans un sous-répertoire "souscat" en passant dans le répertoire initial: cd ../souscat Mise en commun de fichiers pour plusieurs répertoires : Il est possible d'utiliser un fichier fic sans le dupliquer dans plusieurs répertoires. Il suffit de définir un nouveau fichier sousrep/fic dans votre sousrépertoire. Ce fichier sousrep/fic ne contiendra que l'adresse du premier et non pas son contenu: Le sousrep/fic ne contiendra qu'une seule ligne: ../fic Il faudra que sousrep/fic ait les mêmes déclarations que fic (qu'il soit déclarer exécutable si c'est un module exécutable; pour changer les déclarations, utiliser la commande chmod u+x fic). Les commandes pour les fichiers. Vous pouvez lister le contenu d'un fichier par cat fic1 ou more fic1 le détruire par rm fic1 (sans confirmation) par del fic1 (avec confirmation) changer son nom par mv fic1 fic2 le copier par cp fic1 fic2 imprimer un fichier lpr -Pibm7 fic1 (si vous travaillez sur ibm7, il y a également une imprimante laser (vous n'avez droit qu'à un nombre limité d'impressions). Les imprimantes sont regroupées dans une salle au bout du couloir transversal) compter les lignes d'un fichier par wc -l fic1 (paramètre -lcw pour lignes, caractères et mots) wc -lcw fic1 comparer 2 fichiers (et afficher la différence) diff fic1 fic2 donne toutes les lignes qui diffèrent cmp fic1 fic2 donne la première occurrence trouver la chaîne de caractères MOT dans un fichier fic1 grep MOT fic1 modifier les autorisations d'utilisation chmod g+x fic1 (voir les autorisations avec ls -ail fic1) u,g,o,a réfèrent à l'utilisateur, au groupe, aux autres (others) ou à tous (all). +,- ajoute ou ôte une autorisation r,w,x concerne la lecture (read), 4 l'écriture (write) ou l'exécution. modifier le propriétaire d'un fichier chown user fic1 Si une commande est incomplète, il peut y avoir affichage de ? au lieu du prompt. Cela vous indique que l'ordinateur attend un paramètre. Pour créer un fichier nouveau il suffit d'utiliser un éditeur en nommant un fichier nouveau. Ce fichier sera crée s'il n'existe pas, ouvert s'il existe déjà. Faire par exemple ex fic1 ou mieux vi fic1. Pour une première fois, nous allons faire différemment en utilisant la commande cat. Ce sera exceptionnel; par la suite vous utiliserez directement vi fic1. La commande cat affiche à l'écran un fichier : cat fic1 La flèche permet de réorienter la sortie: au lieu de l'écran cat >fic1 crée le fichier fic1. Tout ce qui est entré au clavier est placé dans le fichier fic1. Pour sortir de l'édition du fichier, il faut faire CNTRL-D. (ou par CNTRL-Z si l'on a fait une fausse manoeuvre et si l'on veut annuler ce qui vient d'être édité). Le processus cat >fic1 remplace le fichier fic1 antérieur qui porte ce nom si un fichier existe déjà avec ce nom. Si l'on veut conserver le fic1 et écrire à sa suite, faire cat >>fic1. La commande cat <fic1 >fic2 prend le contenu de fic1 et le place dans fic2 en remplaçant fic2. La commande cat <fic1 >>fic2 prend le contenu de fic1 et le place dans fic2 à la suite de son contenu. Les commandes pour les processus. Lorsqu'une commande est lancée, lorsqu'un travail est soumis, un processus apparaît. ps donne les informations sur les processus en cours kill provoque l'arrêt d'un processus spécifié kill -9 23896 Le numéro d'identification (dans l'exemple 23896) est dans PID ps u (travaux de l'utilisateur) ps aux (travaux de tous les utilisateurs) Un module exécutable est mis en oeuvre par son nom de fichier (voir plus loin). Il normalement exécuté en interactif (foreground) ce qui implique d'attendre que le processus soit terminé pour retrouver la main. Un processus interactif peut être suspendu par CNTRL-Z Un processus peut être exécuté en arrière plan (background) ce qui vous laisse la possibilité de continuer à travailler. Cela se fait en accompagnant la commande du symbole &. Les commandes bg et fg font passer de foreground à background et réciproquement. 5 Edition, mise à jour de fichiers. Cat et more ne permettent que d'afficher le contenu d'un fichier. Pour le modifier, il faut utiliser un éditeur. Il existe plusieurs éditeurs: ed, ex, vi... La commande cat >fic1 permet de remplir un fichier, mais pas de le corriger. éditeur ex (éditeur de l'Université de Berkeley): C'est un éditeur en mode ligne Entrer dans l'éditeur ex fic1 si fic1 n'existe pas déjà, ce fichier est créé. le prompt de l'éditeur est : (deux points). Lecture de fichiers Pour afficher la ligne n1 :n1 Pour afficher toutes les lignes 1,$ ou bien %p Le numéro de dernière ligne s'appelle $, le numéro de la ligne courante peut être remplacé par un point. Pour faire défiler de n1 à n2 :n1,n2 Pour les afficher avec une numérotation :n1,n2# Pour arrêter le défilement CNTRL s pour repartir, appuyer n'importe où. voir la ligne précédente :la ligne suivante : (entrée) avancer de n lignes :+n reculer de n lignes :-n (ou --------------- n fois) Recherche d'une chaîne de caractères :/chaîne/ ème (le 2 / est facultatif si la chaîne ne comporte pas de blanc) / ou ? relancent la recherche vers la fin (/) ou vers le début (?). N.B le format de lecture de ex comprime les blancs en les remplaçant par divers symboles, ce qui peut être gênant. On peut lire un fichier en format réel grâce à la commande $more nomfich Dans ce cas il y a affichage page par page. Pour obtenir la page suivante, appuyer sur la barre d'espacement. Inconvénient : on ne peut pas sauter de lignes ni revenir en arrière. Substitution d'une chaîne de caractères :s/ancien/nouveau/ si des caractères spéciaux interviennent (*,/) ils doivent être précédés d'un antislash). :3,5s/ancien/nouveau/ substitution du mot « ancien » par « nouveau » dans les lignes 3 à 5 (le premier mot rencontré dans chaque ligne) la première fois où le mot « ancien » est rencontré. :3,5s/ancien/nouveau/g substitution du mot « ancien » par « nouveau » dans les lignes 3 à 5 (tous les mots rencontrés dans chaque ligne); g signifie global; la substitution se fera à chaque occurrence. 6 :1,$s/ancien/nouveau/g substitue « ancien » par « nouveau » dans tout le texte. Destruction de lignes Détruire la ligne courante Détruire de n1 à n2 :d :n1,n2 d Fusion de fichiers Copier le fichier nomfich après la ligne n :n r nomfich n peut toujours être remplacé par . si n est la ligne courante. Déplacement d'un bloc :n1,n2 après la ligne n :n1,n2 m n Copie d'un bloc appartenant au même fichier après la ligne n Pour répéter la ligne courante :. t . Enregistrer les modifications En sortant de l'éditeur ou Ne pas enregistrer les modifications Sortir de l'éditeur :w :wq :x :q! :q 7 :n1,n2 t n éditeur vi (éditeur VIsuel): C'est un éditeur pleine page. Vous pouvez vous déplacer dans l'écran avec les touches de direction (ou les touches h,j,k,l). Entrée dans l'éditeur vi fic1 Attention l'éditeur vi distingue les majuscules et les minuscules. Les respecter! Ne pas utiliser le clavier numérique à droite de votre clavier. La touche CR (entrée) valide les commandes La touche ECHAP (ESCape) annule la commande en cours DEL interrompt l'éditeur / (slash) permet une recherche d'une chaîne de caractère de la position courante vers la fin du fichier. Il faut préciser la première fois la chaîne; celle-ci sera reprise par défaut par la suite. ? permet une recherche d'une chaîne de caractère de la position courante vers le début du fichier Toutes les commandes de ex sont disponibles en tapant : (deux points) :1,$s/motif1/motif2/ substitution remplace motif1 par motif2 (la première occurence trouvée) :4,9s/motif1/motif2/g remplace motif1 par motif2 (chaque occurence entre les lignes 5 et 9) :w et (:w!) sauvegarde (avec insistance) :q! quite sans modification :e fichier échange le fichier édité sous vi :setwn-1 définit votre fichier comme fait de 80 colonnes (utile pour le fortran) :set all donne les caractéristiques d'un fichier Différents caractères de contrôle sont prédéfinis: le déplacement des flèches est donné par j vers le bas k vers le haut l vers la droite h vers la gauche x destruction d'un caractère dw effacement du mot suivant db effacement du mot précédent shift-d efface la fin de ligne après le curseur d$ effacement des mots suivants jusqu'à la fin de la ligne dd détruit une ligne u annule la dernière commande (ses effets sur une ligne) space ou l avance d'un caractère sur la droite backspace ou h recul d'un caractère vers la gauche r fic1 remplace le caractère courant (où est le curseur) par le contenu du fichier fic1 r remplace le caractère courant (où est le curseur) par le caractère frappé ensuite s substitue le caractère courant (où est le curseur) par le texte frappé ensuite (sortie par échap) . (point) répète la dernière commande 8 yy saisi la ligne courante est placé et la met en mémoire P insère ce qui est placé en mémoire après la ligne courante Pour copier une ligne, la saisir par yy; se déplacer puis faire p. CNTRL-C sortie CNTRL-F page suivante CNTRL-D demi-page suivante CNTRL-B page précédente CNTRL-U demi-page précédente SHIFT-Z-Z sortie de l'éditeur avec sauvegarde du fichier n répète les commandes ex ou ed Passage en mode d'insertion i insère du texte avant la position courante (taper CR pour aller à la ligne suivante; le backspace revient en arrière sur la même ligne) (sortie par échap) a insère du texte après la position courante (sortie par échap) o (o minuscule ou O majuscule) met en insertion en créant une ligne (après ou avant) la position du curseur. En mode d'insertion vous pouvez utiliser la souris pour des copier-coller, y compris à partir de copies sur une autre fenêtre. Avec la souris, copier : la saisie est faite par la touche de gauche; coller : touche du milieu. sortie du mode d'insertion par ECHAP (ou ESC). Mode Historique Il est possible d'avoir la liste des commandes antérieures: h donne la liste des commandes qui ont été faites pendant la session. Le fichier .sh_history contient l'historique de vos opérations. Il est possible de rappeler les commandes antérieures pour les valider ou les modifier avant de les valider. C'est entrer dans le "mode historique". Cela se fait par la touche escape; on en sort par CNRTL-C ou par validation d'une commande (ou en revenant à la toute dernière commande avec des + jusqu'à la fin) - ou k affichage de la commande précédente + ou j affichage de la commande suivante Pour modifier les commandes, les caractères de contrôle de vi sont valables. 9 Compilation et Exécution. Les fichiers sources fortran doivent avoir un nom se terminant par .f La source fortran doit être traduite par un compilateur pour créer un module objet. Le module objet est ensuite relié à d'autres modules objet par l'éditeur de liens pour engendrer le module exécutable. Il y a donc trois versions d'un même programme: les fichiers .f .o et le module exécutable. Seul le fichier .f est lisible. La commande xlf fic1.f fait les deux étapes. Nous conseillons de faire les deux étapes de façon indépendante: La commande xlf -c fic1.f fait la première étape seulement. Si tout se passe bien, il apparaît dans votre catalogue un fichier fic.o (faire ls). La commande xlf -o exe1 fic1.o fait la seconde étape seulement. En l'absence de nom le fichier exécutable va s'appeler a.out Si l'on doit réunir plusieurs modules objet faire xlf -o exe1 fic1.o fic2.o fic3.o Si l'on doit réunir tous les modules objet faire xlf -o exe1 *.o attention, il ne faut pas avoir alors plusieurs sousprogrammes avec le même nom. Il est recommandé de travailler dans un sousrépertoire dans lequel vous réunissez tous les fichiers dont vous avez besoin. L'exécution est lancée par exe1 Lors de l'exécution les ordres "read "et "write" ne précisant pas de fichier spécifique [ read(*, read(5, write(*, write(6, ] renvoient au clavier et à l'écran. Si l'on veut que l'exécution utilise des fichiers entrée et sortie à la place du clavier et de l'écran, la commande unix devient : exe1 <data >result & Dans ce cas, les étoiles ou les labels 5 et 6 correspondant aux ordres [ read(*, read(5, write(*, write(6, ] renvoient sur les fichiers définis par <data et >result. Les flèches correspondent au sens de saisie des informations : à partir de : < ou vers : >. La double flèche permet d'écrire à la suite d'un fichier existant : exe1 <data >>result & Le signe & vous permet de lancer un processus (l'exécution) en vous laissant la main. Sans ce signe, il faut attendre que l'exécution soit achevée pour que vous puissiez continuer à travailler. (Voir commandes de processus) Exécution en différé: at 20 exe1 <data >result & CNTRL-D L'exécution exe1 ne se fera qu'à 20 heures. 10 COPIE D'ECRAN Il faut la prévoir. Vous mettez en mémoire ce qui apparaît à l'écran dans un fichier, puis vous en sortez et vous pouvez traiter ce fichier comme un fichier banal (l'éditer, le modifier ou l'imprimer). Ouverture du fichier script -a fic1 Sortie exit si l'on ne donne pas de nom (commande script seule) le fichier contenant les images parvenant à l'écran s'appelle typescript. Courrier électronique Pour envoyer un courrier faire mail nom-du-destinataire mail userid éventuellement suivi de son adresse (userid@adresse). pour sortir taper un point, puis un autre sur le prompt Cc: Pour sortir de l'environnement mail faire quit Pour recevoir un courrier enter dans l'environnement mail en tapant mail; les courriers reçus ont de numéros. Ils sont sauvegardés dans mbox une fois lus. Gestion de l'espace disponible Vous pouvez réduire l'espace de vos fichiers avec la commande compress fic1. Le nom de fic1 devient alors fic1.Z. La commande uncompress permet de retrouver les fichiers dans leur forme utilisable. La taille de vos fichiers apparaît avec ls -l. du donne l'espace occupé par les fichiers de l'utilisateur au niveau ou il est et df donne les renseignements complets sur les disponibilités de l'ordinateur entier. 11 Modification de votre .profile Vous pouvez mettre dans votre fichier .profile des commandes à exécuter lors de l'ouverture d'une session, par exemple faire en sorte que les commandes vi soient accessibles: EDITOR=/user/vi export EDITOR ou définir le terminal: TERM=cdcpc export TERM En dehors de l'édition du .profile, Pour voir ce que contient TERM faire ECHO $TERM Pour voir le chemin jusqu'à vi faire ECHO $PATH vi Pour modifier votre environnement faire $ env puis par exemple TERM= Aide de l'environnement du CICRP : SOS Vous pouvez avoir des informations en tapant sos. Il apparaît alors un menu. En choisissant, par exemple, le numéro 31, on a des détails sur les impressions. L'instruction man vous renvoie au contenu du manuel explicitant les commandes : man lpr vous explique comment utiliser la commande lpr. xman doit donner accès au manuel de façon interactive. Connexions Vous pouvez vous brancher sur le CICRP par PPP, telnet.... Regarder les codes d'accès en cherchant connexion sur le site du CICRP. 12