Les commandes de base UNIX ============================ Ce court document présente les commandes de base de l'environnement Unix. Note: Il s'agit d'une adaptation d'un texte présenté sur la page Web d'Emmanuel Chieze, enseignant du cours INF3135 (sous l'onglet Démos, à la rubrique Démo1): http://www.info2.uqam.ca/~chieze/INF3135.html 1.1. Accès au réseau Au laboratoire, il suffit de taper votre nom d'usager et votre mot de passe. Si vous désirez accéder au réseau de l'extérieur, le moyen le plus simple est d'utiliser ssh avec l'adresse rayon1.labunix.uqam.ca ou rayon2.labunix.uqam.ca. Dans ce qui suit, nous allons supposer que l'usager bc891870 se connecte à la machine rayon1. 1.2. La commande ls La commande ls donne la liste des fichiers du répertoire courant. Par exemple: rayon1 $ ls automate_reels_fixes.Spec Desktop Documents On peut aussi utiliser l'option -l pour voir les détails sur chaque fichier: rayon1 $ ls -l total 4 -rw------- 1 bc891870 domain^users 1512 2008-09-24 09:55 automate_reels_fixes.Spec drwxr-xr-x 2 bc891870 domain^users 7 2008-09-19 14:39 Desktop drwxr-xr-x 2 bc891870 domain^users 2 2008-08-25 15:04 Documents drwxr-xr-x 2 bc891870 domain^users 8 2008-09-26 07:53 Tp1 ATTENTION : Unix est sensible à la casse (case-sensitive) -- donc fich et Fich sont deux identificateurs différents. 1.3 La commande pwd Les fichiers et répertoires sont organisés sous la forme d'une arborescence. La commande pwd (print working directory) imprime le nom du répertoire courant. rayon1 $ pwd /home/bc891870 1.4. Les commandes cd et les commandes pushd, popd et dirs La commande cd change le répertoire courant, i.e., se déplace dans l'arborescence. On peut lui donner soit un chemin absolu, soit un chemin relatif au répertoire courant. Par exemple (relatif): rayon1 $ pwd /home/bc891870 rayon1 $ cd Tp1 rayon1 $ pwd /home/bc891870/Tp1 Relatif; répertoire spécial ".." (parent): rayon1 $ pwd /home/bc891870/Tp1 rayon1 $ cd .. rayon1 $ pwd /home/bc891870 Chemin absolu (commence par "/", la racine): rayon1 $ pwd /home/bc891870 rayon1 $ cd /usr/bin rayon1 $ pwd /usr/bin cd utilisé seul; ramène à votre répertoire personnel (HOME): rayon1 $ pwd /usr/bin rayon1 $ cd rayon1 $ pwd /home/bc891870 Un chemin d'accès débutant par "~" spécifie votre répertoire personnel (HOME) rayon1 $ cd ~/Tp1 rayon1 $ pwd /home/bc891870/Tp1 rayon1 $ cd ~ rayon1 $ pwd /home/bc891870 La commande pushd change de répertoire courant, comme cd. Toutefois, le nom du répertoire destination est empilé au sommet d'une pile de répertoires. On peut ensuite utiliser popd pour désempiler le répertoire au sommmet de la pile et retourner dans le nouveau sommet. Le contenu de la pile peut être examiné avec la commande dirs. rayon1 $ pwd /home/bc891870/Tp1 rayon1 $ dirs ~/Tp1 rayon1 $ pushd ~ ~ ~/Tp1 rayon1 $ dirs ~ ~/Tp1 rayon1 $ popd ~/Tp1 rayon1 $ pwd /home/bc891870/Tp1 La commande cd peut être vue comme ayant pour effet de modifier directement le sommet de la pile. 1.5. La commande cp La commande cp copie un fichier. On écrit "cp fichier_source fic_destination". Par exemple: rayon1 $ cp fich1.Spec fich1.Spec.copie 1.6. La commande mv La commande mv (move) déplace (ou renomme) un fichier. On écrit "mv fichier_source fichier_destination". Par exemple: rayon1 $ mv essai3.pl tp1.pl 1.7. La commande rm La commande rm (remove) efface un fichier. Par exemple: rayon1 $ rm essai3.pl 1.8. La commande mkdir La commande mkdir crée un répertoire. Par exemple: rayon1 $ mkdir Exerice1 1.9. La commande rmdir La commande rmdir détruit un répertoire. Par exemple: rayon1 $ rmdir Temporaire 1.10 La commande more La commande more permet d'affichier un fichier (ou la sortie d'une autre commande). Cet affichage se fait écran par écran. Par exemple: rayon1 $ more tp1.pl ... Pour passer à la page suivante, on utilise la barre d'espaceement. Pour quitter, on utilie 'q'. 1.11. La commande man La commande man (manual) Donne le manuel d'instructions pour une commande Unix. Par exemple: rayon1 $ man rm 1.12 La commande cat La commande cat reçoit en argument un ou plusieurs noms de fichiers et écrit leur contenu l'un après l'autre, donc les concatène. rayon1 $ cat fich1 fich2 fich3 ... La commande cat peut aussi être utilisée sans argument, auquel cas le flux d'entrée standard (stdin) est utilisé. Pour indiquer la fin du flux, on utilise alors '^D'. Dans ce qui suit, l'usager a tapé la première occurrence de chacune des lignes, l'autre ayant été émise par cat: rayon1 $ cat Une ligne. Une ligne. Et une autre! Et une autre! rayon1 $ 1.13 La commande grep La commande grep effectue une recherche (avec expressions régulières simplifiées) dans un fichier texte et retourne les lignes trouvées qui "matchent" le motif indiqué. On écrit "grep une_expression un_fichier". Par exemple: rayon1 $ cat f1.txt Une ligne. Une autre ligne. rayon1 $ grep lign f1.txt Une ligne. Une autre ligne. rayon1 $ grep au f1.txt Une autre ligne. On peut utiliser l'option -i pour que grep ne tienne pas compte de la casse: rayon1 $ grep -i u f1.txt Une ligne. Une autre ligne. On peut aussi utiliser l'option -n pour que grep indique les numéros de lignes. 1.14 Redirection des flux d'entrée/sortie La plupart des commandes (et programmes) sous Unix travaillent à partir de deux flux d'entrée/sortie dits standard ("standard input/output streams"): - stdin ("standard input", entrée standard), flux associé par défaut au clavier - stdout ("standard output", sortie standard), flux associé par défaut à l'écran rayon1 $ pwd > resultats-pwd rayon1 $ cat resultats-pwd /home/bc891870/Tp1 rayon1 $ cat >f1.txt Une ligne. Une autre ligne. rayon1 $ more f1.txt Une ligne. Une autre ligne. Inversement, on peut utiliser "<" pour associer le flux d'entrée par défaut à un fichier: rayon1 $ cat Une autre ligne qui suit. > Et une troisieme ligne. L'option -c permet de présenter les différences sous un autre format, qui indique le contexte: rayon1 $ diff -c f1.txt f2.txt *** f1.txt ven. sept. 26 07:53:57 2008 --- f2.txt ven. sept. 26 09:12:04 2008 *************** *** 1,2 **** Une ligne. ! Une autre ligne. --- 1,3 ---- Une ligne. ! Une autre ligne qui suit. ! Et une troisieme ligne. 1.16 Éditeur de texte Les deux éditeurs de texte les plus connus sous Unix sont vi et emacs. Il s'agit dans les deux cas d'éditeur de texte puissants... avec une courbe d'apprentissage assez raide :( Pour les besoins de base simple, on peut aussi utiliser gedit. L'appel se fait de la façon suivante : rayon1 $ gedit & Le caractère à la fin assure que l'éditeur fonctionnera dans une fenêtre indépendante et qu'on pourra ensuite continuer à travailler avec le shell (ligne de commande). 1.17 Fureteur Web Pour lancer l'exécution d'un fureteur Web, il suffit d'exécuter la commande suivante : rayon1 $ firefox & 1.18 Complétion des commandes Lorsqu'on tape un nom de commande ou nom de fichier, il est possible de taper qu'une partie du nom et de faire compléter automatiquement la partie restante par le shell. Notons par le fait de presser le caractère de tabulation. Si on écrit le début du nom de la commande "mo" suivi de , le shell nous affichera alors les complétions possibles: rayon1 $ mo moc moe montage more moyenne+ mozilla-config modutil mogrify montbl moyenne mozilla rayon1 $ mor rayon1 $ more Le même effet peut être obtenu pour des noms de fichier. 1.19 Historique des commandes Les diverses commandes exécutées au niveau du shell sont conservées dans un historique: rayon1 $ history ... 499 cd 500 cat fich1 501 history Il est possible de faire réexécuter une commande exécutée précédemment, soit en indiquant son numéro, soit en indiquant le début de la commande : rayon1 $ !500 cat fich1 total 4 drwxr-xr-x 2 bc891870 domain^users 3 2008-10-01 14:36 D1 -rw-r--r-- 1 bc891870 domain^users 0 2008-10-01 14:42 fich -rw-r--r-- 1 bc891870 domain^users 75 2008-10-01 14:28 resultat-bis -rw-r--r-- 1 bc891870 domain^users 0 2008-10-01 14:17 toto.txt rayon1 $ !l ls ...