Introduction aux commandes de base sous UNIX <author>-- <date>Atelier DNS AfTLD Yaoundé 2004 <p> - Exemple d'un session (se logger, exécuter des commandes, se délogger) - Les commandes de base <sect>Une session avec un "shell" sous UNIX <p> Une session sous UNIX est composé de trois parties: <itemize> <item>Se logger (<tt>login: / password:</tt>) <item>Exécuter des commandes (interaction avec l'interpréteur de commandes) <item>Se délogger (<tt>logout / exit</tt>) </itemize> <p> <sect1>Exemple d'invite typique <p> <verb> MonOS (machine.reseau.local) ttyp0 login: robert Password: Last login: Tue Oct 14 06:03:14 on ttyp0 /utilisateurs/robert$ _ </verb> <descrip> <tag/<em/login:// L'invite de login demande à l'utilisateur de taper son identificateur <tag/<em/Password:// Après l'identificateur, l'utilisateur doit taper son mot de passe. Le mot de passe n'apparait pas quand on le tape. </descrip> Une fois loggé, utiliser les commandes pour interagir avec l'interpréteur ("shell"). <p> <sect1>Exemple de commande simple <p> Une commande utile: la commande <tt/date/ pour connaître... la date et l'heure: <verb> /utilisateurs/robert$ date Tue Oct 14 14:07:06 PST 1997 /utilisateurs/robert$ _ </verb> Une fois le travail terminé, se délogger. <p> <sect1>Fin de session <p> La commande <tt/exit/ ou <tt/logout/ met fin à la session en cours, et l'invite réapparait, en attente d'une nouvelle session: <verb> /utilisateurs/robert$ exit MonOS (machine.reseau.local) ttyp0 login: </verb> <sect>Les commandes de base <p> Les commandes suivantes constituent un minimum nécessaire à la navigation dans le système de fichiers (l'arborescence) UNIX. <itemize> <item>cd / pwd: changer de répertoire / afficher le répertoire courant <item>ls: afficher la liste des fichiers et sous-répertoires d'un répertoire donné ou du répertoire courant par défaut <item>cp: faire une <em/copie/ d'un fichier vers un nouvel endroit <item>mv: <em/déplacer/ un ou plusieurs fichiers d'un endroit à un autre <item>rm: effacer un ou plusieurs fichiers <item>mkdir / rmdir: créer un nouveau répertoire ou en supprimer un existant </itemize> <p> <sect>Droits et permissions <p> Notions d'<em/utilisateurs/ et de <em/groupes/: UNIX distingue trois classes d'utilisateurs: le propriétaire du fichier (<em/owner/), le groupe d'utilisateurs auquel appartient le fichier (<em/group/), et le reste du monde (<em/others/). Rappel: un fichier ne peut appartenir à plus d'un utilisateur et d'un groupe à la fois. Les commandes pour manipuler les droits: <itemize> <item><tt/chmod/ <it/les droits/ <tt/le_fichier/ <item><tt/chown/ <it/nouveau_propriétaire/ <tt/le_fichier/ -- ne peut être utilisé que par le super-utilisateur <item><tt/chgrp/ <it/groupe_cible/ <tt/le_fichier/ -- on doit appartenir au groupe cible. </itemize> <em/Exercices:/ 1. Examiner les droits du fichier .profile dans votre répertoire -- en profiter pour le rendre accessible en écriture pour le groupe auquel appartient ce fichier. Ensuite, essayer de changer le propriétaire de ce fichier. 2. Exécuter les commandes suivantes: <itemize> <item>créer un répertoire <tt/dossier/ <item>passer super-utilisateur et changer les droits de ce répertoire pour qu'il appartienne à l'utilisateur <tt/root/ et au groupe <tt/bin/ <item>toujours en tant que super-utilisateur, créer dans ce répertoire un fichier nommé <tt/test/. Changez le propriétaire du fichier afin qu'il vous appartienne (votre compte). <item>quitter la session super-utilisateur (<tt/exit/) et tenter de supprimer ce fichier </itemize> 3. Dans un répertoire quelconque, exécuter la commande: <p> <verb> touch un_nom_de_fichier </verb> Afficher les permissions de ce fichier avec la commande: <p> <verb> ls -l un_nom_de_fichier </verb> <sect>Enchaînement et redirections <p> La commande <tt/wc/ permet de compter le nombre de lignes, mots et caractères que contient un fichier texte. Utiliser la commande <tt/ls -l/, le pipe (|) et <tt/wc/ pour connaître le nombre de fichier dans le répertoire <tt/etc/. Rediriger la <it/sortie standard/ de la commande ci-dessus vers un fichier de votre choix. Ajouter la date du jour <em/à la fin de ce fichier/ en utilisant la commande <tt/date/. <sect>Le système de fichier UNIX -- arborescence, montage et liens <p> Le système de fichiers sous UNIX a une racine unique (<tt>/</tt>). Des partitions peuvent être montées à la place de répertoires. Des liens peuvent pointer sur des fichiers ou répertoires présents ailleurs dans l'arborescence. 1. Utiliser la commande <tt/mount/ pour examiner les partitions montées sur le système de fichier. 2. Déterminer la nature du répertoire <tt>/home</tt> 3. Examiner les répertoires /var/tmp et /usr/tmp. Remarquer dans quel répertoire on se trouve si l'on fait: <verb> cd /usr/tmp cd .. pwd </verb> 4. Créer dans le répertoire <tt>/tmp</tt>, un lien symbolique pointant sur lui-même. Utiliser la commande <tt/ln/ -- voir le <tt/man/ correspondant. Observer ce qui se passe lorsque l'on essaye de faire <tt/cd le_lien_symbolique/. <sect>Un éditeur de texte: <tt/vi/ <p> <tt/vi/ est un éditeur dit modal: il existe deux modes d'exécution: <itemize> <item>le mode <em/entrée/: on peut taper du texte comme on le ferait sur un éditeur quelconque. <item>le mode <em/commande/: permet d'exécuter des commandes de manipulation du texte, de déplacement, de recherche et de sauvegarde / chargement du texte. </itemize> <sect1>Commandes de base <p> Pour passer du mode <em/entrée/ au mode <em/commande/ -- touche <tt/[ESC]/ Pour passer du mode <em/commande/ au mode <em/entrée/ -- plusieurs touches: <itemize> <item><tt/i/: insérer du texte à l'endroit du curseur (INSERT) <item><tt/a/: insérer du texte <it/après/ le curseur (AFTER) <item><tt/I/: insérer du texte en <it/début/ de ligne <item><tt/A/: insérer du texte en <it/fin/ de ligne <item><tt/o/: commencer une nouvelle ligne <it/après/ la ligne courante <item><tt/O/: commencer une nouvelle ligne <it/avant/ la ligne courante </itemize> <sect1>Se déplacer dans <tt/vi/: <p> On peut utiliser les touches flêchées pour se déplacer. De plus, on peut utiliser certaines commandes pour aller plus vite. <itemize> <item><tt/w/: un mot vers l'avant (WORD) <item><tt/b/: un mot vers l'arrière </itemize> La plupart des commandes peuvent prendre un argument numérique avant leur exécution. Par exemple, pour avancer de 10 mots, taper: <tt>10w</tt>. <sect1>Copier/couper/coller du texte: <p> <itemize> <item><tt/yy/: copier la ligne courante dans le tampon (ex: <tt/5yy/ -> copier 5 lignes dans le tampon) <item><tt/p/: coller le contenu du tampon <it/après/ la ligne courante. <item><tt/P/: coller le contenu du tampon <it/avant/ la ligne courante. <item><tt/D/: détruire le reste de la ligne depuis le curseur (et coupe dans le tampon) <item><tt/dd/: détruit entièrement la ligne courante (et coupe dans le tampon) <item><tt/dw/: effacer le mot à droite du curseur <item><tt/db/: effacer le mot à gauche du curseur </itemize> <sect1>Charger / sauver <p> <itemize> <item><tt/:r fichier_à_insérer/ -- insère le fichier indiqué à l'endroit du curseur <item><tt/:e fichier_à_éditer/ -- charge un nouveau fichier afin de l'éditer <item><tt/:w/ -- sauve le fichier sous le nom courant, ou sous un autre nom si il est précisé <item><tt/:q/ -- quite <tt/vi/, à la condition que le texte n'a pas été modifié depuis son chargement <item><tt/ZZ/ -- sauver ET quitter <tt/vi/. </itemize> Pour les commandes précédentes, il est possible de forcer certaines commandes (ex: <tt/:q!/ pour quitter en abandonnant les changements), ou de les combiner (ex: <tt/:wq/, qui est équivalent à <tt/ZZ/). 1. S'entraîner à manipuler des fichiers textes avec <tt/vi/ (couper / copier des lignes et des mots, insérer un autre texte au milieu du texte courant, sauver sous le même nom, un autre nom, etc...) <sect>Détail des commandes de base <p> <descrip> <tag><tt>cd / pwd </tt></tag> Syntaxe: <tt/cd/ <it/nouveau_répertoire/ <p> Changer de répertoire courant. Par exemple, pour se positionner dans le répertoire <tt>/usr/local/bin</tt>, il suffit de taper: <tt>cd /usr/local/bin</tt> <p> Syntaxe: <tt/pwd/ <p> Afficher le répertoire courant. Exemple: <verb> $ pwd /utilisateurs/norbert </verb> <tag/ls/ Syntaxe: <tt/ls/ <it/[répertoire | fichier]/ <p> Afficher la liste des fichiers et des sous-répertoires d'un répertoire donné, ou du répertoire courant si aucun argument n'est précisé. Exemple: <verb> ls /etc/ ls /etc/passwd </verb> <tag/<tt/cp// Syntaxe: <tt/cp/ <it>source [source2] destination</it> <p> Copier un ou plusieurs fichiers vers un autre répertoire, ou copier un fichier vers un autre nom. Exemple: <verb> cp lettre.txt lettre_2.txt cp lettre.txt /utilisateurs/robert/ cp lettre_1.txt lettre_2.txt lettre_3.txt /utilisateurs/public/ </verb> <tag/<em/mv// Syntaxe: <tt/mv/ <it/fichier1 [fichier2] ... destination/ <p> Déplacer un, ou plusieurs, fichiers, vers un répertoire cible. Exemple: <verb> mv lettre.txt /tmp/ mv lettre_1.txt lettre_2.txt /tmp/ </verb> <tag/<em/rm// Syntaxe: <tt/rm/ <it/fichier1 [fichier2] .../ <p> Effacer un ou plusieurs fichiers sur le disque. Exemple: <verb> rm lettre.txt rm /tmp/lettre_1.txt rm lettre_2.txt lettre_3.txt </verb> <tag><em>mkdir / rmdir</em></tag> Syntaxe: <tt/mkdir/ <it/nom_du_répertoire/ <p> Crée un répertoire du nom précisé. Exemple: <verb> mkdir Lettres mkdir /utilisateurs/robert/Travail </verb> Syntaxe: <tt/rmdir/ <it/nom_du_répertoire/ <p> Efface le répertoire du nom précisé. <tt/rmdir/ n'efface pas les répertoires qui contiennent des fichiers. Exemple: <verb> rmdir Lettres rmdir /utilisateurs/robert/Travail </verb> </descrip> <p> </article>