OBSD4* : wiki

(Traduction du tutoriel Learn UNIX in 10 minutes)


Comprendre UNIX en 10 minutes

Préface

Le propos est d'avoir une page contenant les commandes de bases pour démarrer l'usage d'un shell UNIX.

Ce document est protégé par les droits d'auteurs, et placé sous les termes de la licence GNU/FDL.

Répertoires

Les chemins de répertoires et fichiers dans Unix utilisent le symbole '/' (slash) pour séparer le nom des répertoires, dans le contexte du chemin.

exemples:

  • / répertoire racine
  • /usr répertoire usr (répertoire enfant de la racine)
  • /usr/STRIM100 STRIM100 est un sous-répertoire de /usr

Circuler dans le système de fichiers

  • pwd voir le nom du répertoire courant
  • cd Se rediriger vers votre répertoire utilisateur personnel
  • cd /usr/STRIM100 Se diriger vers /usr/STRIM100.
  • cd INIT Se diriger vers le répertoire INIT, qui est un sous-répertoire du répertoire courant.
  • cd .. Se diriger vers le répertoire parent du répertoire courant.
  • cd $STRMWORK Se diriger vers le répertoire renfermé dans la variable d'environnement 'STRMWORK'.
  • cd ~bob Se diriger vers le répertoire personnel de bob.

Lister le contenu d'un répertoire

  • ls liste un répertoire
  • ls -l liste un répertoire dans un format détaillé
  • ls -a liste le répertoire courant en affichant les fichiers cachés, ceux-ci commencent par un “.”
  • ls -ld * Liste tous les noms de fichiers et répertoires dans le répertoire courant, utilisant un format détaillé. Sans l'option 'd', la commande 'ls' listera le contenu des sous-répertoire du répertoire courant. Avec, 'ls' listera juste le nom des fichiers.

Pour l'exemple :

$ ls -l 
drwxr-xr-x   4 cliff    user      1024 Jun 18 09:40 WAITRON_EARNINGS
-rw-r--r--    1 cliff    user      767392 Jun 6 14:28 scanlib.tar.gz
^  ^  ^      ^^           ^          ^      ^      ^       ^      
|    |   |        | |             |           |       |        |        |      
|    |   |        | |identifiant |groupe |poids |date  |heure |nom 
|    |   |        | nombre de contenu 
|    |   | permissions pour les autres
|    | permissions pour les membres du groupe
| permission pour le propriétaire du fichier : r = lecture, w = écriture, x = éxecution, - = pas de permission
type de fichier : - = fichier normal, d = répertoire, l = lien symbolique, etc ...

Changer les permissions et attributs de fichiers

  • chmod 755 file Change les permissions du fichiers, en donnant tous les droits au propriétaire du fichier, et les droits de lecture et d'exécution pour le groupe et les autres. (7 = rwx = 111 en binaire ; 5 = r-x = 101 en binaire)
  • chgrp user file Change l'appartenance du groupe sur le fichier.
  • chown cliff file Change le propriétaire du fichier.
  • chown -R cliff dir Change le propriétaire du répertoire, de manière récursive.

Vous devez être le propriétaire des fichiers ou répertoires, ou être en mode administrateur (root) avant de pouvoir interagir ainsi.

Déplacer, renommer, et copier des fichiers

  • cp file1 file2 Copier un fichier
  • mv file1 newname Déplacer ou renommer un fichier
  • mv file1 ~/AAA/ Déplacer un fichier dans le sous-répertoire AAA de votre répertoire utilisateur personnel
  • rm file1 [file2 …] Supprimer un fichier
  • rm -r dir1 [dir2…] Supprimer un répertoire récursivement, et son contenu. FAITES ATTENTION !
  • mkdir dir1 [dir2…] Créer un répertoire
  • mkdir -p dirpath Créer un répertoire, incluant tous les sous-répertoires nommés en suivant
  • rmdir dir1 [dir2…] Supprimer un répertoire vide

Voir le contenu et éditer des fichiers

  • cat filename Afficher le contenu d'un fichier à l'écran, en ascii
  • more filename Afficher le contenu d'un fichier à l'écran de manière progressive. L'appui sur la touche 'Entrée' affiche la ligne suivante ; celui sur la barre d'espace affiche une nouvelle page ; celui sur la touche 'q' permettra la sortie.
  • less filename Un peu comme 'more', mais permet l'usage de la touche “Défilement Haut”, pour remonter les pages. Fonctionne sur certains systèmes.
  • vi filename Éditer le fichier en utilisant l'éditeur 'vi'. Tous les systèmes Unix ont cet éditeur.
  • emacs filename Éditer le fichier en utilisant l'éditeur 'emacs'. Tous les systèmes Unix n'ont pas cet éditeur.
  • head filename Lire les premières lignes d'un fichier.
  • head -n x filename Lire les x premières lignes d'un fichier
  • tail filename Lire les dernières lignes d'un fichier
  • tail -n x filename Lire les x dernières lignes d'un fichier

Shells

Le comportement d'une interface de ligne de commande diffère étroitement du programme shell dans lequel il est utilisée.

Dépendant du shell utilisé, quelques comportements supplémentaires peuvent être utiles.

Il est possible de savoir sous quel shell vous fonctionnez, en utilisant la commande suivante :

$ echo $SHELL

Bien-sûr, vous pouvez créer un fichier ayant une liste de commandes shell, l'exécuter tel un programme. Ceci est appelé un script shell. C'est le but premier de la plupart des shells.

Variables d'environnement

Les variables d'environnement permettent au shell d'enregistrer des données, pour un usage ultérieur.

Par exemple, pour le shell nommé Bash :

  • export CASROOT=/usr/local/CAS3.0 Définit la variable CASROOT avec la valeur /usr/local/CAS3.0.
  • export LD_LIBRARY_PATH=$CASROOT/Linux/lib Définit la variable LD_LIBRARY_PATH avec la valeur de la variable CASROOT concaténé avec /Linux/lib, ou /usr/local/CAS3.0/Linux/lib

En préfixant la variable du symbole '$', vous pouvez utiliser son contenu dans le contexte de toute commande :

  • cd $CASROOT Se rediriger vers le répertoire contenu dans la variable CASROOT
  • echo $CASROOT Afficher le contenu de la variable CASROOT, soit /usr/local/CAS3.0
  • printenv CASROOT Faire la même chose dans le shell bash ou d'autres environnements.

Historique interactif

Une fonctionnalité des shells bash, tcsh (et certainement d'autres) est de pouvoir utiliser l'accès aux commandes précédentes par l'appui de la touche “Flèche Haut”, de les éditer, et/ou de les exécuter à nouveau.

Certains shells proposent l'usage de la commande 'history', qui affichera l'ensemble des commandes utilisées. Pour les réutiliser, si besoin, il suffit de précéder le numéro de la commande du symbole '!'.

Complétion de nom de fichier

Une fonctionnalité des shells bash, tcsh (et certainement d'autres) est de pouvoir utiliser la touche de Tabulation pour compléter un nom de fichier partiellement tapé. Par exemple, si vous avez un fichier nommé 'constantine-monks-and-willy-wonka.txt' dans votre répertoire et que vous désirez l'éditer, vous pouvez écrire 'vi const', appuyez sur la touche Tab, et le shell remplira le reste du nom de fichier.

Bash est le shell le plus cool

Bash est même capable de compléter le nom des commandes et des variables d'environnement. S'il y a plusieurs complétions possibles, l'appui plusieurs fois sur la touche Tab vous affichera les différentes possibilités.

Bash est le shell par défaut pour les systèmes Linux.

Redirection

  • grep string filename > newfile Redirige la sortie de la commande grep vers un nouveau fichier
  • grep string filename » existfile Ajoute la sortie de la commande grep à la fin du fichier 'existfile'.

Les directives de redirection '>' et '»' peuvent être utilisées pour diriger la sortie de la plupart des commandes vers un fichier.

Pipes

Le symbole '|' (la barre vertical sous le chiffre 6 ; appuyer simultanément sur les touches 'Alt Gr' et '6') est utilisé pour diriger la sortie d'une commande vers l'entrée d'une autre commande.

Par exemple :

  • ls -l | more Cette commande prend la sortie de la commande 'ls' dans son format détaillé et l'affiche au-travers de la commande 'more'. Cela permet dans le cas d'une très longue liste d'être affichée page par page.
  • du -sc * | sort -n | tail La commande 'du -sc' liste les tailles des fichiers et répertoires, dans le répertoire de travail courant, puis trie le résultat de la plus petite à la plus grosse grâce à la commande 'sort -n'. Finalement, seront affichés les quelques derniers résultats, les plus gros fichiers, par le biais de la commande 'tail'.

Substitution de commande

Vous pouvez utiliser la sortie d'une commande comme entrée d'une autre commande d'une autre manière, appelée “Substitution de commande”. Elle est invoqué par l'usage du symbole '`' (appui simultané des touches 'AltGr' et '7'), tel que, pour l'exemple :

$ cat `find . -name aaa.txt`

Ce qui affichera à l'écran tous les fichiers nommés 'aaa.txt' dans le répertoire courant, et de ses sous-répertoires.

Actuellement, il est recommandé de l'écrire ainsi :

$ cat "$(find . -name aaa.txt)"

grep : Recherche de chaînes de caractères dans un fichier

  • grep string filename affiche toutes les lignes contenant la chaine 'string' dans tel nom de fichier.

find : Recherche de fichiers

find search_path -name filename

  • find . -name aaa.txt Cherche tous les fichiers nommés 'aaa.txt' dans le répertoire courant et ses sous-répertoires.
  • find / -name vimrc Cherche tous les fichiers nommés 'vimrc' partout dans le système de fichiers.
  • find /usr/local/games -name “*xpilot*” Cherche tous les fichiers containant la chaîne 'xpilot' dans leurs noms, qui existent dans le répertoire '/usr/local/games'.

tar : Lire, écrire des sauvegardes et autres archives

La commande 'tar' signifie “tape archive”. C'est la manière “standard” de lire et d'écrire des archives (des collections de fichiers, dans un répertoire donné).

Vous trouverez souvent des archives avec des noms tels que 'stuff.tar', ou 'stuff.tar.gz'. En substance, cela signifie que le répertoire 'stuff' a été archivé dans une archive tar, et pour le second cas, que cette archive a été compressée par le moyen du programme de compression 'gzip'.

Il y a de fortes probabilités que si quelqu'un vous donne une sauvegarde, faite sur un système Unix, que cette sauvegarde soit faite dans le format tar … et, dans ce cas, vous devrez utiliser tar, et votre lecteur de bande, pour la lire.

De même, si vous voulez écrire une bande de sauvegarde pour quelqu'un d'autre, vous devriez utiliser probablement tar, aussi.

Exemples :

  • tar xv Extrait les fichiers depuis la sauvegarde, en affichant le nom des fichiers à l'écran. (v = verbeux)
  • tar tv Liste les fichiers depuis la sauvegarde sans les extraire.
  • tar cv file1 file2 Écrit les fichiers 'file1' et 'file2' dans la sauvegarde.
  • tar cvf archive.tar file1 [file2…] Créer une archive tar, nommée 'archive.tar', contenant les fichiers 'file1', 'file2', etc… Ne pas utilisez les symboles '[', ']' : c'est juste une convention d'écriture pour signifier l'option …
  • tar xvf archive.tar Extrait les fichiers de l'archive 'archive.tar'
  • tar cvfz archive.tar.gz dname Créer une archive compressée par gzip, contenant tout le contenu du répertoire 'dname'. Ne fonctionne pas avec toutes les versions de tar.
  • tar xvfz archive.tar.gz Extrait une archive compressée avec gzip. Ne fonctionne pas avec toutes les versions de tar.
  • tar cvfI archive.tar.bz2 dname Créer une archive tar compressée avec le programme de compression bzip2. Ne fonctionne pas avec toutes les versions de tar.

Compression de fichiers

compress

Les commandes de compression Unix, par défaut, sont 'compress' et 'uncompress'. Les fichiers compressés ont le suffixe '.Z' ajouté à leur nom.

Pour l'exemple :

  • compress part.igs Créer un fichier compressé part.igs.Z
  • uncompress part.igs Décompresser le contenu du fichier part.igs.Z

Note que l'usage de '.Z' n'est pas requis.

gzip

Un autre utilitaire de compression commun est 'gzip' (et 'gunzip'). Ce sont des outils GNU de compression et décompression. gzip utilise un meilleur format de compression que le standard compress, mais n'est pas installé sur tous les systèmes. Le suffixe pour les fichiers compressés par gzip est '.gz'

  • gzip part.igs Créer un fichier compressé part.igs.gz
  • gunzip part.igs Extrait le contenu de l'archive part.igs.gz

bzip2

L'utilitaire bzip2 a (en général) un meilleur taux de compression que gzip, mais prend plus de temps pour compresser ou décompresser des fichiers. Ce n'est pas un utilitaire commun comme gzip, mais il devient de plus en plus disponible. (À ce jour de la traduction, c'est devenu un outil commun !)

  • bzip2 part.igs Créer un fichier compressé part.igs.bz2
  • bunzip2 part.igs.bz2 Décompresse le contenu du fichier part.igs.bz2

man, apropos : Rechercher de l'aide dans le système

La plupart des commandes ont une page de manuel qui décrit comment l'utiliser, de manière plus ou moins détaillée. Ces pages de manuels sont appelés des 'man pages' parce qu'elles sont faites pour être lues par des humains.

Exemple :

  • man ls Lire le manuel de la commande 'ls'.

Vous pouvez trouver les man pages en utilisant la commande 'apropos'.

Exemple :

  • apropos build Afficher tous les man pages dont la description contient le mot 'build'.

Pour l'exemple, exécuter donc un 'man apropos' pour obtenir l'aide détaillé de la commande 'apropos'.

Bases de l'éditeur 'vi'

Ouvrir un fichier

  • vi nom_fichier

Créer du texte

Les modes d'édition : l'appui sur les touches ci-dessous permettent d'entrer en mode édition, puis d'écrire le contenu de votre document.

  • i Insérer des caractères avant la position du curseur.
  • I Insérer des caractères au début de la ligne courante.
  • a Ajouter après la position du curseur.
  • A Ajouter à la fin de la ligne courante.
  • r Remplacer un caractère.
  • R Mode remplacement
  • <ESC> Sort des modes insertion.

Suppression de texte

  • x Supprime un caractère
  • dd Supprime la ligne courante et la met en mémoire-tampon
  • ndd Supprime n lignes (n étant un nombre) et les mets dans la mémoire-tampon.
  • J Attache une nouvelle ligne à la fin de la ligne courante (et supprime les caractères de retour-à-la ligne)

Oups : Erreur de saisie

  • u Annule la dernière commande

Copier, Coller

  • yy Copie la ligne courante dans la mémoire-tampon
  • nyy Copie n lignes dans la mémoire-tamon
  • p Colle le contenu de la mémoire-tampon après la ligne courante
  • P Colle le contenu de la mémoire-tampon avant la ligne courante

Positionner le curseur

Le symbole '^' signifie l'appui simultanée sur la touche 'Ctrl' puis la touche signalée !

  • ^d Descend d'une page
  • ^u Remonte d'une page
  • :n Positionne le curseur à la ligne n
  • :$ Positionne le curseur à la fin de la ligne courante
  • ^g Affiche le numéro de la ligne courante
  • h,j,k,l Respectivement, à gauche, en bas, au-dessus, et à droite du curseur. Vous pouvez aussi utiliser les touches fléchées si cela fonctionne avec votre clavier.

Remplacement de caractères

:n1,n2:s/string1/string2/[g] Remplace la chaine de caractères 1 par la chaine de caractères 2 sur les lignes n1 et n2. Quand 'g' est inclus (pour global), toutes les instances de la chaines de caractère 1 sur chacunes des lignes sont remplacées. Si 'g' n'est pas inclus, seule la première instance par ligne correspondante est remplacée.

  • ^ correspond au début de ligne.
  • . signifie tout caractère
  • $ correspond à la fin de ligne.

Ces caractères, ainsi que d'autres “caractères spéciaux” (tels que l'anti-slash) peuvent être échappés par l'usage du symbole '\', tel que “\/usr\/STRIM100\/SOFT” signifiant littéralement la chaîne de caractère “/usr/STRIM100/SOFT”

Exemples :

  • :1,$:s/dog/cat/g Remplacer chaque instance 'dog' par 'cat', dans tout le fichier. L'usage de ':1,$' signifie du début à la fin du fichier.
  • :23,25:/frog/bird/ Sur les lignes 23 à 25, remplacer la première instance de 'frog' par 'bird', dans chacune de ces lignes.

Sauver, quitter et autres commandes 'ex'

Ces commandes sont toutes préfixées par l'usage du symbole ':', et affichées en bas, à gauche de l'écran. Ce sont les commandes 'ex', parce qu'elles font partie de l'éditeur de texte 'ex', le précurseur de l'éditeur de texte 'vi'. Vous ne pouvez pas taper une commande 'ex' quand vous êtes dans un des modes insertion. (la saisie de texte à l'écran). Pour pouvoir le faire, il faut appuyer sur la touche <ESC>, qui vous fera sortir de ce mode d'insertion.

  • :w Sauvegarde le fichier courant
  • :w new.file Sauvegarde le fichier courant, dans un nouveau fichier
  • :w! existing.file Sauvegarde un fichier existant avec le contenu du fichier courant.
  • :wq Sauvergarde le fichier et sors de l'éditeur
  • :q Ferme l'éditeur
  • :q! Ferme l'éditeur sans faire de changement
  • :e filename Ouvre le fichier 'filename' pour édition
  • :set number Affiche le numéro de ligne
  • :set nonumber Éteint le numéro de ligne

FAQ

Le contenu des Foire-aux-Questions Usenet devraient être le premier endroit à lire pour vos questions. Vous pouvez y trouver beaucoup de manuel RTFM (Read the F*** Manuals ; Lis ce Fichu Manuel).

Le contenu de ce répertoire inclut les FAQs vi, bash, et comp.unix.questions.

Rechercher dans les archives Usenet est souvent très utile, aussi. Google.com a sa propre archive Usenet (formellement Deja.com), voire les règles “Advanced Group Search”.


Mention originale (traduite)

Ce document (comprendre l'original ; ce n'est pas le cas de la traduction) a été converti depuis un fichier texte, en utilisant Vim. Vim est la meilleure version du seul vrai éditeur de texte : vi.

Copyright © 2000-2006 - cliff@freeenginer.org

Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.1 or any later version published by the Free Software Foundation; with Invariant Section: Preface, with Front-Cover Texts, and with no Back-Cover Texts. A copy of the license can be found on the GNU web site here.