Description
Retrouvez ci-dessous la traduction EN → FR de l’article “Learn UNIX in 10 minutes”, écrit sur le site disparu ‘Freeengineer.org’.
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 -
/usrrépertoire usr (répertoire enfant de la racine) -
/usr/STRIM100STRIM100 est un sous-répertoire de /usr
Circuler dans le système de fichiers
-
pwdvoir le nom du répertoire courant -
cdSe rediriger vers votre répertoire utilisateur personnel -
cd /usr/STRIM100Se diriger vers /usr/STRIM100. -
cd INITSe 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 $STRMWORKSe diriger vers le répertoire renfermé dans la variable d’environnement ‘STRMWORK’. -
cd ~bobSe diriger vers le répertoire personnel de bob.
Lister le contenu d’un répertoire
-
lsliste un répertoire -
ls -lliste un répertoire dans un format détaillé -
ls -aliste le répertoire courant en affichant les fichiers cachés, ceux-ci commencent par un “.” -
ls -ldListe 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
^^ ^ ^ ^ ^ ^ ^ ^ ^ ^
|| | | | | | | | | |
|| | | | |id |group |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 fileChange 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 fileChange l’appartenance du groupe sur le fichier. -
chown cliff fileChange le propriétaire du fichier. -
chown -R cliff dirChange 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 file2Copier un fichier -
mv file1 newnameDé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 dirpathCré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 filenameAfficher le contenu d’un fichier à l’écran, en ascii -
more filenameAfficher 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 filenameUn 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 filenameLire les premières lignes d’un fichier. -
head -n x filenameLire les x premières lignes d’un fichier -
tail filenameLire les dernières lignes d’un fichier -
tail -n x filenameLire 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.0Définit la variable CASROOT avec la valeur /usr/local/CAS3.0. -
export LD_LIBRARY_PATH=$CASROOT/Linux/libDéfinit la variableLD_LIBRARY_PATHavec la valeur de la variable$CASROOTconcaté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 $CASROOTSe rediriger vers le répertoire contenu dans la variableCASROOT -
echo $CASROOTAfficher le contenu de la variable CASROOT, soit/usr/local/CAS3.0 -
printenv CASROOTFaire 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 > newfileRedirige la sortie de la commande grep vers un nouveau fichier -
grep string filename >> existfileAjoute la sortie de la commande grep à la fin du fichierexistfile.
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 | moreCette commande prend la sortie de la commandelsdans 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 | tailLa commandedu -scliste 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 commandesort -n. Finalement, seront affichés les quelques derniers résultats, les plus gros fichiers, par le biais de la commandetail.
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ée par l’usage du symbole ` (appui simultané des touches Alt Gr 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 filenameaffiche toutes les lignes contenant la chainestringdans tel nom de fichier.
find : Recherche de fichiers
find search_path -name filename
-
find . -name aaa.txtCherche tous les fichiers nommésaaa.txtdans le répertoire courant et ses sous-répertoires. -
find / -name vimrcCherche tous les fichiers nommésvimrcpartout dans le système de fichiers. -
find /usr/local/games -name "*xpilot*"Cherche tous les fichiers containant la chaînexpilotdans 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 (qui sont 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 xvExtrait les fichiers depuis la sauvegarde, en affichant le nom des fichiers à l’écran. (v= verbeux) -
tar tvListe les fichiers depuis la sauvegarde sans les extraire. -
tar cv file1 file2Écrit les fichiersfile1etfile2dans la sauvegarde. -
tar cvf archive.tar file1 [file2…]Créer une archive tar, nomméearchive.tar, contenant les fichiersfile1,file2, etc… Ne pas utilisez les symboles[,]: c’est juste une convention d’écriture pour signifier l’option… -
tar xvf archive.tarExtrait les fichiers de l’archivearchive.tar -
tar cvfz archive.tar.gz dnameCréer une archive compressée par gzip, contenant tout le contenu du répertoiredname. Ne fonctionne pas avec toutes les versions de tar. -
tar xvfz archive.tar.gzExtrait une archive compressée avec gzip. Ne fonctionne pas avec toutes les versions de tar. -
tar cvfI archive.tar.bz2 dnameCré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.igsCréer un fichier compressé part.igs.Z -
uncompress part.igsDé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.igsCréer un fichier compressé part.igs.gz -
gunzip part.igsExtrait 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.igsCréer un fichier compressé part.igs.bz2 -
bunzip2 part.igs.bz2Dé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 lsLire le manuel de la commandels.
Vous pouvez trouver les man pages en utilisant la commande apropos.
Exemple :
apropos buildAfficher tous les man pages dont la description contient le motbuild.
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.
-
iInsérer des caractères avant la position du curseur. -
IInsérer des caractères au début de la ligne courante. -
aAjouter après la position du curseur. -
AAjouter à la fin de la ligne courante. -
rRemplacer un caractère. -
RMode remplacement -
<ESC>Sort des modes insertion.
Suppression de texte
-
xSupprime un caractère -
ddSupprime la ligne courante et la met en mémoire-tampon -
nddSupprime n lignes (n étant un nombre) et les mets dans la mémoire-tampon. -
JAttache une nouvelle ligne à la fin de la ligne courante (et supprime les caractères de retour-à-la ligne)
Oups : Erreur de saisie
uAnnule la dernière commande
Copier, Coller
-
yyCopie la ligne courante dans la mémoire-tampon -
nyyCopie n lignes dans la mémoire-tamon -
pColle le contenu de la mémoire-tampon après la ligne courante -
PColle 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 !
-
^dDescend d’une page -
^uRemonte d’une page -
:nPositionne le curseur à la ligne n -
:$Positionne le curseur à la fin de la ligne courante -
^gAffiche le numéro de la ligne courante -
h,j,k,lRespectivement, à 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 chaîne 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 chaînes 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/gRemplacer chaque instancedogparcat, 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 defrogparbird, 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.
-
:wSauvegarde le fichier courant -
:w new.fileSauvegarde le fichier courant, dans un nouveau fichier -
:w! existing.fileSauvegarde un fichier existant avec le contenu du fichier courant. -
:wqSauvergarde le fichier et sors de l’éditeur -
:qFerme l’éditeur -
:q!Ferme l’éditeur sans faire de changement -
:e filenameOuvre le fichier ‘filename’ pour édition -
:set numberAffiche 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 (c) 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.
Historique
J’ai écrit historiquement cette traduction sur le wiki de la communauté “OpenBSD Pour Tous”.