Salut collègues, je vous présente là l'ensemble des commandes fondamentales pour linux... allons y alors !!!
- Se déplacer dans l'arborescence de répertoires (cd)
Lorsque vous avez passé le login et le password de linux, vous vous retrouvez devant le prompt shell qui est le plus souvent celui de bash (sinon vous serez devant celui de csh). Il ressemble le plus souvent à ceci :
[root@mistra /root]$
Le mot root signifie que vous vous êtes "logué" sur le compte de l'administrateur système. Vous êtes donc en pleine possession de la machine, vous pouvez faire absolument n'importe quoi, jusqu'à supprimer tous les fichiers ... faites donc très attention ... En théorie il ne faut utiliser la machine sous ce compte qu'afin de l'administrer. Des comptes dits « d'utilisateurs » permettent sinon de travailler en temps normal. Nous verrons ci-après comment créer un compte utilisateur.
Le mot "mistra"représentera, dans ce document, le nom de votre ordinateur (pour le connaître invoquer la commande "hostname")
Actuellement vous vous trouvez sous le compte de l'administrateur système, c'est-à-dire que vous êtes dans le répertoire /root (sous Unix, les composants des noms de répertoires sont séparés par des "slash" "/" et non pas comme sous MS-DOS par des "anti-slash" "\").
Déplaçons-nous dans la "racine" du système :
[root@mistra /root]$ cd ..
Faites bien attention de séparer par un espace "cd" et "..", UNIX exige une grande précision dans la syntaxe des commandes. Soumettez la commande au système grâce à la touche « Entrée », évidemment !
Vous êtes maintenant dans le répertoire racine :
[root@mistra /]#
Que contient-il ? Tapez la commande ls, et voyez le résultat, vous devez obtenir quelque chose comme :
bin boot cdrom etc usr var vmlinux Si certains fichiers ou répertoires manquent ce n'est pas important.
Déplaçons-nous dans le répertoire qui contient une grande partie des programmes (souvent simplement appelés « binaires ») de linux : /usr/bin : cd usr/bin. Vous pouvez là aussi obtenir le contenu du répertoire en utilisant la commande ls.
Maintenant allons voir ce que contient le répertoire /etc (aperçu lorsque nous avons listé le répertoire racine /). Nous avons deux possibilités pour nous y rendre : soit nous revenons dans le répertoire racine et nous nous rendons ensuite dans le répertoire etc; soit nous nous rendons immédiatement dans le répertoire /etc :
- Méthode no 1 :
cd / (pour se rendre à la racine)
puis
cd etc
Cette méthode est fastidieuse car elle nécessite de taper deux commandes successives. Nous pouvons utiliser la deuxième méthode pour nous rendre directement dans le répertoire /etc en écrivant le chemin complet dans la commande cd :
- Méthode no 2 :
cd /etc
et nous sommes directement dans le répertoire /etc. Dans cette commande nous avons indiqué que pour se rendre dans le répertoire etc, il fallait d'abord se rendre dans le répertoire racine. Pour se faire nous avons placé un / devant etc.
Lorsque l'on ajoute un ~ au lieu d'un chemin à la commande cd, celle-ci nous replace automatiquement dans notre répertoire utilisateur. Si vous êtes en administrateur système la commande par cd ~ vous placera dans le répertoire /root. Dans le cas où je suis (je suis loggé en tant qu'utilisateur delcros) je vais automatiquement me retrouver dans le répertoire de l'utilisateur delcros qui se trouve dans /home/delcros. Les répertoires des utilisateurs sont tous sous /home.
[delcros@mistra bin]$cd ~
- Ceci est la méthode orthodoxe, sinon vous pouvez faire simplement :
[delcros@mistra bin]$cd
et vous reviendrez ainsi dans votre répertoire personnel.
sommaire
Dans quel répertoire suis-je actuellement ? (pwd)
Lorsque l'on se déplace dans les répertoires, par défaut bash n'affiche que le « nom court » du répertoire où l'on se trouve. Le nom court ne comprend pas le chemin complet. Or il peut arriver qu'un même nom court corresponde à plusieurs répertoires bien distincts, donc que seuls les chemins qui y mènent permettent de les distinguer. C'est par exemple le cas du nom court bin, que l'on trouve en /bin et en /usr/local/bin. Il existe beaucoup d'autres exemples. La solution pour connaître le chemin du répertoire où l'on se trouve est d'utiliser la commande pwd :
[delcros@mistra bin]$ pwd
/usr/bin
[delcros@mistra bin]$
sommaire
Lister les fichiers d'un répertoire (ls)
La commande ls et ses très nombreuses options vous permettront d'obtenir beaucoup d'informations sur les fichiers présents dans un répertoire : déplaçons nous par exemple dans le répertoire "/bin" et listons le contenu de ce répertoire :
[delcros@mistra bin]$ cd /bin
[delcros@mistra /bin]$ ls
arch dd gzip nisdomainname su
ash df hostname ping sync
awk dmesg kill ps tar
cp fgrep mount sh ypdomainname
cpio gawk mt sleep zcat
csh grep mv sort zsh
date gunzip netstat stty ls
Ceci est un listing "brut" du répertoire /bin qui contient les utilitaires de base de linux. On reconnaît par exemple la commande ls ...
De la même manière que sous MS-DOS (avec la commande dir), nous pouvons demander à Linux de lister seulement les fichiers dont les noms contiennent des caractères donnés. Demandons par exemple uniquement les noms des fichiers commençant par la lettre "l" :
[delcros@mistra /bin]$ ls l*
ln login ls
[delcros@mistra /bin]$
Voici quelques options intéressantes de la commande ls (les options sous UNIX suivent la commande et sont le plus souvent précédées d'un tiret) :
L'option ls -l permet de lister les attributs des fichiers (les droits de lecture, d'écriture et d'exécution, le propriétaire, le groupe, la taille en octets, sa date de création ou de modification) :
[delcros@mistra /bin]$ ls -l
total 3615
-rwxr-xr-x 1 root root 2716 Apr 23 02:09 arch
-rwxr-xr-x 1 root root 56380 Dec 23 1996 ash
lrwxrwxrwx 1 root root 4 May 10 20:01 awk -> gawk
-rwxr-xr-x 1 root root 18768 Mar 8 19:17 basename
-rwxr-xr-x 1 root root 300668 Sep 4 1996 bash
lrwxrwxrwx 1 root root 3 May 10 19:59 bsh -> ash
-rwxr-xr-x 1 root root 16584 Dec 16 1996 cat
-rwxr-xr-x 1 root root 17408 Nov 26 1996 chgrp
Notes : Ici, tous les fichiers appartiennent à l'administrateur système (root) et à son groupe (root), comme les sections consacrées à chmod et à chown l'exposerons). Nous traiterons du sens de la fin de chaque ligne, qui contient parfois une flèche visible ici sur la ligne awk -> gawk, dans la section consacrée aux liens ln.
ls -a liste tous les fichiers du répertoire, y compris les fichiers cachés. Cette option est très utile lorsque l'on se trouve dans son répertoire personnel car il contient les fichiers de configuration de l'utilisateur dont les noms commencent généralement par un point et seule l'option -a permet de détecter leur existence.
Exemple avec le répertoire de l'administrateur système :
voici une partie des fichiers listés avec la commande ls sans option :
[root@mistra /root]# ls
bookmarks.sgml mc.hint scrsh2 2494.html
Desktop ftape.o mc.hlp scrsh3
FAQ.services.html kbanner.kssrc mc.lib xdm-config
Et voici une partie du résultat avec la commande ls -a.
[root@mistra /root]# ls -a
. .kvtrc .xquadkey
.. .letter .xquadkey~
.BitchX .mc.ext 2494.html
.Xmodmap~ .peruser-newsrc-working
.amaya .peruser_config Desktop
.applications .peruser_spool FAQ.services.html
...
On peut maintenant connaître tout (option 'a' : penser au mot "all") le contenu du répertoire.
D'autres options de ls sont utiles :
ls -m :
Affiche les fichiers en les séparant par une virgule au lieu de les présenter en colonnes.
ls -t :
Affiche les fichiers par date, c'est-à-dire en les classant du récent au plus ancien.
ls -lu :
Affiche les fichiers par date de dernier accès et indique cette date.
ls -F :
Affiche les fichiers par type. Ainsi un fichier suivi d'un slash (/) est un répertoire, un fichier suivi d'une étoile est un fichier exécutable et un fichier suivi d'un "@" est un lien (nous reviendrons sur les liens dans la section consacrée à ln).
ls -S :
Affiche les fichiers triés par ordre de taille décroissante.
ls -X :
Affiche les fichiers par type d'extension.
ls -r :
Affiche les fichier en ordre alphabétique inverse.
Cette option à la particularité d'inverser l'effet de tous les tris requis. Par exemple, la commande ls -tr affichera les fichiers par date en commençant par les plus anciens pour finir par les plus récents.
sommaire
Voir un fichier (cat et more)
La commande cat permet de lire des fichiers. Nous avons vu tout à l'heure que le répertoire /root contenait des fichiers de configuration. Ces fichiers sont simplement des fichiers textes avec un agencement et une syntaxe particulière. Regardons le contenu du fichier .bashrc qui permet de configurer à souhait son shell :
[root@mistra /root]# cat .bashrc
# .bashrc
# User specific aliases and functions
# Source global definitions
if [ -f /etc/bashrc ]; then
. /etc/bashrc
fi
source .sd.sh
[root@mistra /root]#
Une option utile de cat est -n qui permet de numéroter les lignes (ne pas oublier que cat permet de lire et non de modifier un fichier. Ainsi la numérotation de ligne apparaît à l'écran mais le fichier .bashrc n'en est pas pour autant modifié).
[root@mistra /root]# cat -n .bashrc
1 # .bashrc
2
3 # User specific aliases and functions
4
5 # Source global definitions
6 if [ -f /etc/bashrc ]; then
7 . /etc/bashrc
8 fi
9 source .sd.sh
[root@mistra /root]#
Si vous souhaitez connaître les autres options de cat, tapez au prompt "cat --help".
Vous pouvez utiliser la commande more pour visualiser un fichier. La commande more a l'avantage d'afficher le fichier page par page. Pour passer d'une page à l'autre, tapez sur la touche ESPACE.
sommaire
- Éditer un fichier (vi, emacs, joe)
vi (l'éditeur le plus ancien)
vi date des années 70 .... autant dire que cet éditeur a du métier et n'est toujours pas démodé. Ce n'est pas celui que j'utilise mais beaucoup en sont adeptes malgré son apparence fruste. Ceci s'explique par une grande puissance ... Si je m'attarde quelque peu sur vi, c'est que dans les moments critiques où rien ne fonctionne, où tout va mal, c'est l'éditeur qu'on ne peut éviter.
Lançons Vi :
[root@mistra /root]# vi
Après le lancement de la commande vous allez vous trouver directement dans l'éditeur ... Pendant ce court apprentissage de vi, nous allons créer un fichier, le modifier, l'enregistrer, ... et quelques autres petites manoeuvres de survie :
Passer du mode commande aux mode texte, taper du mode texte, enregistrer.
vi comprend deux modes : un mode "commande" et un mode "insertion", après le lancement de vi nous sommes en mode commande : appuyez sur la touche "Echap" puis sur "a" ("a", comme "append", permet d'ajouter du texte après le curseur). Vous voyez en bas de l'écran apparaître la ligne "-- INSERT --". Nous pouvons commencer notre texte :
linux est gratuit puissant en perpetuelle evolution.
Linux est stabble. Linux existe depuis 1991 seulement
et pourtant quel chemin parcouru !
N'oubliez pas de placer retour chariot au bout de chaque ligne.
Sauvons le fichier : nous sortons d'abord du mode texte en appuyant à nouveau sur la touche "Echap". La mention "-- INSERT --" disparaît, nous sommes en mode commande. Tapez maintenant " :w linux-test" et sur la touche retour chariot (afin d'écrire ("write") le fichier). Vous devez obtenir en bas de l'écran ceci :
"linux-test" [New File] 3 lines, 142 characters written
Supprimer du texte et quitter vi
Nous voyons qu'à la deuxième ligne, j'ai fait une grosse fôte d'aurtograffe. Nous allons supprimer le "b" qui est en trop dans stabble : déplacez le curseur sur un des "b" en trop, passez en mode commande ("--INSERT --" ne doit pas apparaître à l'écran), appuyez sur "x", le b a disparu.
Quittons vi, mais auparavant, nous devons sauver les modifications effectuées : Passez en mode commande et tapez " :wq" (write et quit). Vous êtes sorti de vi et votre fichier a été sauvegardé sous linux-test. Pour revenir à vi en ouvrant le fichier linux-test au démarrage tapez :
[root@mistra /root]# vi linux-test
Si vous souhaitez quitter sans enregistrez les dernières modifications, il vous faudra passer en mode commande et taper " : q!".
Ceci est une présentation très très courte de vi, mais qui vous permettra malgré tout de survivre au cas où vous devriez absolument l'utilisez. Voyons tout de même un rapide descriptif d'autres commandes vi :
D'autres commandes vi.
A permet d'ajouter du texte à la fin de la ligne.
i permet d'ajouter du texte avant le curseur.
o permet d'ajouter une ligne en dessous du curseur.
O permet d'ajouter une ligne au dessus du curseur.
le retour chariot permet d'aller à la ligne suivante.
dd permet de supprimer la ligne courante.
X permet de supprimer le caractère avant le curseur.
u permet d'annuler la dernière commande effectuée.
Emacs ... la puissance !
Emacs date de la fin des années 70 et ne cesse d'évoluer depuis, ce qui fait de lui, sans aucun doute possible, l'éditeur le plus puissant au monde. Bien plus qu'un éditeur, emacs est un environnement de travail : édition, programmation, mail, news, shell ... bref on peut rester sous emacs sans avoir besoin de quoi que ce soit d'autre.
Ses adeptes sont très nombreux.
Et surtout ne leur dites pas qu'emacs est lourd ...vous vous tromperiez lourdement (je sais de quoi je parle ... j'ai fait l'erreur et en ce moment je suis sous emacs ... ;-))
Lançons emacs :
[root@mistra root]$ emacs
Ouvrons maintenant le fichier linux-test que nous avons créé précédemment sous vi :
Pour cela utilisez la séquence de touches suivante : Ctrl-x Ctrl-f
Vous voyez apparaître en bas de l'écran :
Find File : ~/
tapez le nom du fichier et faites un retour chariot.
Nous retrouvons notre charmant petit texte.
Vous le comprenez, la touche Ctrl permet de passer des commandes et de passer du mode texte au mode commande. Vous pouvez le modifier à souhait. Les touches Backspace et Suppr fonctionnent comme sous n'importe quel éditeur.
Pour sauver le fichier, tapez la séquence de touches suivante :
Ctrl-x Ctrl-s
Si vous êtes bloqués dans la ligne de commande d'emacs après avoir effectué de mauvaises manipulations et que vous souhaitez retrouver le mode texte, tapez la séquence suivante :
Ctrl-g
Si vous avez fait des erreurs dans le texte, la séquence suivante permet de supprimer les dernières modifications :
Ctrl-x u
Si vos touches de direction ne fonctionnent pas, voici plusieurs séquences de touches qui vous permettent de vous déplacer dans votre document :
Ctrl-p : monter d'une ligne.
Ctrl-n : descendre d'une ligne.
Ctrl-f : avancer d'un caractère.
Ctrl-b : reculer d'un caractère.
Ctrl-v : avancer d'un écran (ou d'une page si vous préférez).
Alt-v : reculer d'un écran.
Ctrl-d : supprimer le caractère sur lequel le curseur se trouve.
Une commande utile est :
Ctrl-s qui permet de faire une recherche "dynamique" ("incrémentale") sur une suite de caractères dans le texte.
Meta-% permet de lancer un "Rechercher et remplacer" . La touche Meta est en général confondue avec la touche Alt Pour quitter emacs, utiliser la combinaison de touches suivante :
Ctrl-x Ctrl-c
Avec cette rapide présentation vous pourrez déjà "barboter" un peu sous emacs. Il m'est impossible de décrire dans ce document les milliers de fonctions disponibles .... si vous souhaitez en savoir plus, cette séquence vous permettra de rentrer dans l'aide d'emacs :
Ctrl-h
Ou bien lancez le "tutorial" :
Ctrl-h t
Si vous devenez un mordu d'emacs (ce qui est tout a fait normal : -) vous pourrez trouver quelques ouvrages sur emacs dans toutes les bonnes bibliothèques.
joe : la simplicité.
joe est l'éditeur que j'utilise pour faire des petites modifications dans mes fichiers de configuration par exemple, il est très leger, il ne possède pas la puissance d'emacs mais rend lui aussi service :
Pour appeler joe :
[root@mistra /root]# joe
joe est très intuitif (à la Wordstar), pas besoin de s'étendre sur les fonctionnalités textes. Trois opérations fondamentales à connaître :
Ctrl-k e permet d'ouvrir un fichier
Ctrl-k d permet de sauvegarder le fichier
Ctrl-k x permet de sauvegarder le fichier et de quitter joe
Ctrl-c permet de quitter joe sans sauvegarder les modifications.
joe possède de nombreuses fonctions possibles qui sont décrites dans le man (nous verrons comment y accéder dans la section consacrée à man).
sommaire
Copier un fichier (ou un répertoire) : cp.
La syntaxe de la commande cp est la suivante :
cp [option] fichier-origine fichier-destination
ou
cp [option] fichier répertoire
par exemple pour faire une copie de notre fichier linux-test en un fichier linux-test2, il suffit de faire :
[root@mistra /root]# cp linux-test linux-test2
Nous possédons maintenant deux exemplaires de notre fichier dans /root.
ATTENTION ! : si vous effectuez une copie d'un fichier sur un fichier qui existe dejà, celui-ci sera effacé et remplacé par le nouveau fichier.
Si vous souhaitez copier le fichier linux-test dans un répertoire (par exemple /home) en gardant le nom du fichier, utilisez la commande suivante :
[root@mistra /root]# cp linux-test /home
Pour lui donner un autre nom :
[root@mistra /root]# cp linux-test /home/linux-test2
Nous venons de voir que l'utilisation de cp est dangereuse et l'on risque parfois d'effacer des fichiers importants. Les options de cp peuvent vous éviter des situations fâcheuses.
cp -i avertit l'utilisateur de l'existence d'un fichier du même nom et lui demande s'il peut ou non remplacer son contenu. Recopions à nouveau le fichier linux-test sur linux-test2 avec l'option -i :
[root@mistra /root]# cp -i linux-test linux-test2
cp : overwrite `linux-test2'?
cp vous demande s'il peut écraser linux-test2 : répondre par "y" (yes) ou "n".
Quelques options importantes de cp :
cp -b permet comme l'option -i de s'assurer que la copie n'écrase pas un fichier existant : le fichier écrasé est sauvegardé, seul le nom du fichier d'origine est modifié et cp ajoute un tilde (~) à la fin du nom du fichier.
cp -l permet de faire un lien "dur" entre le fichier source et sa copie. Ceci signifie que le fichier copié et sa copie partageront physiquement le même espace. Cela permet des gains de place non négligeables. Plus exactement, sur le disque dur le fichier et sa copie seront le même fichier alors qu'avec une copie classique, le disque dur contiendra deux exemplaires du fichier.
cp -s permet de faire un lien "symbolique" entre le fichier source et sa copie. Le lien symbolique est un pointeur. Ainsi si nous copions le fichier linux-test avec l'option -s, lorsque par exemple nous voudrons éditer le fichier copié, linux éditera en réalité le fichier original (voir la section consacrée à ln pour un descriptif plus complet des liens).
cp -p permet lors de la copie de préserver toutes les informations concernant le fichier comme le propriétaire, le groupe, la date de création (voir les sections consacrées à chmod et chown pour plus d'informations).
cp -r permet de copier de manière récursive l'ensemble d'un répertoire et de ses sous-répertoires.
Exemple :
Je possède dans mon répertoire /home/delcros/personnel un répertoire intitulé "mygale" et qui contient 3 sous répertoires ("echecs", "linux", xcaissa) :
/home/delcros/personnel/
/home/delcros/personnel/mygale/
/home/delcros/personnel/mygale/echecs/
/home/delcros/personnel/mygale/linux/
/home/delcros/personnel/mygale/xcaissa/
Je souhaite copier le répertoire mygale ainsi que ses sous-répertoires dans mon répertoire /home/delcros/" : j'utilise la commande (en supposant que je me suis au préalable déplacé dans le répertoire /home/delcros/personnel/ :
[delcros@mistra personnel]$ cp -r mygale /home/delcros
cp -v permet d'afficher le nom des fichiers copiés. Utile si par exemple vous copiez plusieurs fichiers (à l'aide des occurences "*" et/ou "?") et que vous souhaitez voir le bon déroulement de la "multicopie". J'aurais pu par exemple utiliser cette option lors de ma copie récursive du répertoire "mygale".
J'aurais ainsi vu ceci en associant l'option -v et -r :
[delcros@mistra personnel]$ cp -rv mygale /home/delcros
mygale -> /home/delcros/mygale
mygale/index.html -> /home/delcros/mygale/index.html
mygale/logo.gif -> /home/delcros/mygale/logo.gif
mygale/linux -> /home/delcros/mygale/linux
mygale/linux/linux.html -> /home/delcros/mygale/linux/linux.html
.....
(c'est une partie du résultat).
sommaire
Supprimer un fichier "rm".
PREAMBULE :
Nous entrons maintenant dans une zone à risque, mieux vaut donc se loguer en tant qu'utilisateur de la machine et non pas en tant qu'administrateur système (root), car nous risquerions par une mauvaise manipulation de supprimer des fichiers fondamentaux nécessaires au bon fonctionnement de linux. Nous allons donc créer un compte utilisateur, lui attribuer un mot de passe et nous loguer sur ce compte. Exécutez les commandes suivantes, une explication détaillée interviendra ensuite dans la partie consacrée à l'administration système :
[root@mistra /root]#adduser le_nom_de_choix (votre prénom par exemple, mais sans accent et si possible long de moins de 8 caractères)
[root@mistra /root]#passwd le_nom_de_votre_choix (saisir deux fois le même mot de passe, la seconde sert à confirmer)
[root@mistra /root]#cp linux-test /home/le_nom_de_votre_choix (gardons notre fichier pour continuer nos petites expériences .
[root@mistra /root]#chow le_nom_de_votre_choix.le_nom_de_votre _choix /home/le_nom_de_votre_choix(L'administrateur donne généreusement le fichier linux-test au nouvel utilisateur avec la commande "chown" que nous verrons dans les commandes d'administration système, pour l'instant ne vous en souciez pas.)
[root@mistra /root]#su le_nom_de_votre_choix (la commande su permet de se loguer sur un autre compte).
Il suffira de saisir exit pour « retomber » dans la session de travail root.
Effectuons à nouveau une copie du fichier linux-test (tapez cd pour vous retrouver dans votre répertoire personnel) :
[delcros@mistra delcros]$ cp linux-test linux-test2
LA COMMANDE rm
Pour supprimer le fichier "linux-test2" :
[delcros@mistra delcros]$ rm linux-test2
LES OPTIONS de rm
Comme pour cp, l'option cp -i permet à rm de demander à l'utilisateur s'il souhaite vraiment supprimer le ou les fichiers en question :
[delcros@mistra delcros]$ rm -i linux-test2
rm : remove `linux-test2'?
(il vous suffit donc de répondre "y" ou "n")
rm -d permet de supprimer un répertoire qu'il soit plein ou non (attention dangereux ...)
rm -r permet de supprimer un répertoire et ses sous répertoires (attention TRÈS dangereux)
rm -f permet de supprimer les fichiers protégés en écriture et répertoires sans que le prompt demande une confirmation de suppression (à utiliser avec précaution ...)
sommaire
Créer un répertoire (mkdir)
Pour créer un répertoire, il suffit de taper la commande suivante (ici je crée le répertoire "personnel" dans /home/delcros :
[delcros@mistra delcros]$ mkdir personnel
Une option de mkdir est souvent utile :
mkdir -p permet de créer une suite de répertoire.
Supposons que je veuille créer dans mon répertoire /home/delcros la suite de répertoires suivante : doc/mygale/mail. Je peux faire soit :
[delcros@mistra delcros]$ mkdir doc
[delcros@mistra delcros]$ cd doc
[delcros@mistra delcros]$ mkdir mygale
[delcros@mistra delcros]$ cd mygale
[delcros@mistra delcros]$ mkdir mail
Ou bien utiliser l'option -p qui me permet de créer la suite de répertoires "parents" le plus simplement du monde :
[delcros@mistra delcros]$ mkdir -p doc/mygale/mail
sommaire
Déplacer ou renommer un fichier (mv)
Pour comprendre la commande mv, voyons une suite de commandes qui effectuent des opérations différentes :
[delcros@mistra delcros]$ mv linux-test perso
renomme le fichier "linux-test" en "perso"
[delcros@mistra delcros]$ mv perso perso
va écraser le fichier existant avec la source.
[delcros@mistra delcros]$ mv personnel mon-répertoire
va renommer le répertoire personnel en mon-répertoire
[delcros@mistra delcros]$ mv perso /home/delcros/mon-répertoire
va déplacer le fichier perso dans le répertoire /home/delcros/mon-répertoire
Les options :
mv -b ('b' comme "backup") va effectuer une sauvegarde des fichiers avant de les déplacer :
[delcros@mistra delcros]$ mv -b mon-répertoire/perso /mon-répertoire/linux-test
Cette commande va renommer le fichier perso en linux-test, cependant vous trouverez dans le répertoire une sauvegarde de perso (perso~).
mv -i ('i' comme «interactive») demande pour chaque fichier et chaque répertoire s'il peut ou non déplacer fichiers et répertoires.
mv -u ('u' comme «update») demande à mv de ne pas supprimer le fichier si sa date de modification est la même ou est plus récente que son remplaçant. Exemple :
Déplaçons-nous vers notre répertoire personnel puis créons un nouveau fichier avec l'éditeur de texte joe :
[delcros@mistra personnel]$ joe linux-test2
saissons un petit texte :
"y en a marre de ces textes stupides !"
et finissons notre session joe par la séquence de touches suivante :
Ctrl-k x
qui permet d'enregister le fichier et de quitter joe.
Notre fichier linux-test2 est plus récent que notre fichier linux-test. Vous pouvez le vérifier en effectuant un "ls -l".
Nous souhaitons (naïvement, bien sûr !) renommer le fichier linux-test en linux-test2. Mais nous sommes attentifs et nous ne voulons pas que le fichier linux-test2 soit écrasé si celui-ci est plus récent que linux-test :
[delcros@mistra personnel]$mv -u linux-test linux-test2
L'option -u nous a évité d'écraser le fichier linux-test2. La commande mv n'a donc pas été effective.
sommaire
Retrouver un fichier ("find")
1- La commande find
Exemple simple : comment trouver un fichier portant un nom donné ?
[delcros@mistra delcros]$ find / -name linux-test2 -print
/home/delcros/linux-test2
(Un peu long n'est ce pas pour trouver la reponse dans tout cette grosse arborescence ? :-) )
En general on recherche rarement un fichier depuis la racine.
Décomposition de la commande de l'exemple :
"/" indique que nous voulons chercher à partir de la racine notre fichier.
"-name " est l'option qui indique ici que nous voulons spécifier le nom d'un fichier.
"-print" demande à find d'afficher le résultat.
Pour chercher tous les fichiers commencant par "linux-tes" et définir à partir de quel répertoire on souhaite effectuer la recherche on utilise cette syntaxe :
[delcros@mistra delcros]$find /home/delcros -name 'linux-tes*' -print
Le nombre d'options de find est impressionnant. En voici quelques unes :
-type permet d'indiquer le type de fichier que l'on recherche. Si vous cherchez seulement un répertoire et non pas un fichier vous pourrez utilisez cette option :
[delcros@mistra delcros]$find /usr -type d -name bin -print
Ici, on demande à find de trouver les répertoires (l'argument "d" (comme "directory") de l'option -type indique que l'on cherche un répertoire) du nom de "bin" à partir du répertoire /usr.
-exec ou -ok permet d'exécuter une commande sur les fichiers trouvés. La différence entre -exec et -ok est que la deuxième vous demandera pour chaque fichier trouvé si vous souhaitez réellement réaliser l'opération :
[delcros@mistra delcros]$find -name 'linux-tes*' -print -ok rm {} \;
./linux-test
rm ... ./linux-test ? y
[delcros@mistra delcros]$
Dans l'option -exec, la paire d'accolades se substitue aux fichiers trouvés, et l'anti-slash lié au point virgule forme une séquence d'échapemment.
On peut dire que cette présentation de find est assez sommaire, mais j'espère qu'elle vous laisse deviner ses capacités.
2- La commande locate
La commande locate a la même mission que find. Pourtant vous verrez qu'en utilisant la commande locate, le fichier sera trouvé beaucoup plus rapidement. Pourquoi ? Parce que locate ne va pas chercher le fichier dans toute l'arborescence des répertoires mais va localiser la position du fichier dans une base de données qui contient la liste des fichiers existants. Cette base de données est en général automatiquement générée une fois par jour par le système grâce à une commande appelée updatedb. Sur un système Linux Redhat, cette base de donnée se trouve dans le répertoire /usr/lib et se nomme locatedb.
La syntaxe est donc simple:
[delcros@mistra delcros]$ locate nom_du_fichier
Bien que la commande locate soit très intéressante, elle ne possède pas la puissance des options de find. De plus, si vous créez des fichiers pendant la journée et que vous les recherchez avec la commande locate, il n'est pas sûr que la base de donnée ait été remise à jour. Bref, locate est un complément de find.
3-La commande which
which vous permet simplement de connaître le chemin d'un exécutable. Exemple:
[delcros@mistra delcros]$ which ls
/bin/ls
[delcros@mistra delcros]$
sommaire
Trouver du texte dans un fichier (grep)
La commande grep est un pivot des commandes UNIX. Elle cherche une expression rationnelle dans un ou plusieurs fichiers, exemple :
[delcros@mistra delcros]$grep fouille linux-commande.html
grep, la commande qui vous fouille les fichiers
La commande a donc affiché la ligne qui contient le mot "fouille" dans le fichier linux-commande.html.
La richesse de la commande grep permet de faire des recherches sur plusieurs fichiers et d'avoir un format de sortie adéquat. Par exemple, le fichier linux-commande.html est déjà assez important et il serait agréable de savoir où se trouve cette ligne qui contient le mot fouille dans le fichier :
[delcros@mistra delcros]$grep -n fouille linux-commande.html
902: Grep, la commande qui vous fouille les fichiers
Le mot fouille se trouve à la ligne numéro 902 et c'est l'option -n qui nous a permis de connaître ce numéro.
Une autre option très utile est -l qui permet de n'afficher que les noms des fichiers contenant ce que l'on cherche :
[delcros@mistra delcros]$grep -l fouille /home/delcros/personnel/html/*
/home/delcros/personnel/html/linux-commande.html
Ici, j'ai demandé à la commande grep de chercher l'occurence "fouille" dans les fichiers du répertoire /home/delcros/personnel/html/. Le résultat est le nom des fichiers qui contiennent l'occurence. Ici, seul le fichier "linux-commande.html" dans le répertoire contient le mot "fouille". Quelques-unes des autres options :
-c donne le nombre de fois où l'expression rationnelle a été rencontrée dans le fichier :
[delcros@mistra delcros]$ grep -c fouille linux-commande.html
10
-n est utile lorsque vous cherchez une expression rationnelle qui commence par un tiret car si vous n'utilisez pas l'option -n, grep la considèrera comme une option !
sommaire
Les liens (ln)
Les liens forment un axe central du fonctionnement de linux. Qu'est ce qu'un lien ?
Un lien est un type spécial de fichier qui permet à plusieurs noms de fichiers de faire référence au même fichier sur le disque.
On doit distinguer deux sortes de liens :
les liens durs associent deux ou plusieurs fichiers à un même espace sur le disque, les deux fichiers sont pourtant indépendants. On peut dire que physiquement les fichiers sont les mêmes mais que virtuellement ils ne le sont pas. Prenons un exemple :
[delcros@mistra personnel]$ln linux-test /home/delcros/linux-test-lien-dur
le fichier linux-test-lien-dur est créé dans le répertoire /home/delcros. si vous faites un ls -l vous constaterez que linux-test et linux-test-lien ont la même taille. Au niveau de leur existence sous linux, ils sont indépendants. Mais sur le disque, il n'existe qu'un seul fichier, simplement linux-test-lien-dur et linux-test sont sur le même espace (ou inode) sur le disque dur lorsqu'on les appelle.
Ainsi si nous modifions le fichier linux-test-lien-dur, nous aurons automatiquement une modification du fichier linux-test (et vice et versa), car la modification s'effectuera physiquement sur le disque dur sur l'inode "partagé" par les deux fichiers.
Les liens symboliques :
si nous faisons maitenant un lien symbolique :
[delcros@mistra personnel]$ln -s linux-test /home/delcros/linux-test-lien-symb
Faites un ls -F dans le répertoire /home/delcros, vous verrez que le fichier linux-test-lien-symb est précédé du signe "@". Ce fichier pointe sur linux-test. Si vous avez fait un peu de programmation en C, nous retrouvons le concept de pointeur. Quand on appelle le fichier linux-test-lien-sym, il va automatiquement se diriger vers le fichier linux-test.
Quelles sont les points communs entre les liens symboliques et les liens durs ?
Le lien symbolique fait référence à un fichier dans un répertoire alors que le lien dur fait référence à un espace sur le disque dur.
- Les liens symboliques sont des fichiers de petite taille qui ont une existence propre sur le disque dur. Ces fichiers contiennent les références des fichiers sources auquels ils correspondent.
- Dans le cas d'un lien dur, la suppression de l'un des deux fichiers n'affectera pas l'autre. Dans le cas d'un lien symbolique, la suppression du fichier source entraînera un changement de comportement du fichier lien qui ne correspondra plus à un fichier valide et sera donc dit "cassé" ("broken").
Utilité des liens
Les liens sont utiles si vous souhaitez qu'un fichier apparaisse dans plusieurs répertoires, ou sous un nom différent. Imaginez que ce fichier fasse quelques megaoctets ... une copie à l'aide "cp" entraînera une perte de place non négligeable alors qu'un lien permettra de limiter l'utilisation de l'espace disque. Mieux :un lien garanti que toute modification effectuée sur ce fichier concernera toutes les apparentes « copies » dispersées.
Syntaxe de ln :
ln fichier-source fichier-lien ln -s permet d'effectuer un lien symbolique.
ln -b réalise une sauvegarde d'un fichier existant et dont nous aurions utilisé le nom avant de l'écraser.
ln -i demande à l'utilisateur s'il souhaite écraser le fichier qui a un lien sur le fichier source au cas ou celui-ci existerait déjà.
ln -d effectue des liens durs sur des répertoires ... seuls les utilisateurs possédant les droits adéquats pourront le faire.
sommaire
Le compactage et le décompactage des fichiers au format .gz : la commande gzip
Pour compacter un fichier, taper la commande suivante :
[delcros@mistra delcros]$ gzip non_du_fichier
Pour décompacter un fichier, taper la commande suivante :
[delcros@mistra delcros]$ gzip -d non_du_fichier.gz
sommaire
Le décompactage des fichiers avec la commande uncompress
Si vous rencontrez un fichier au format .Z ( un autre type de compression plus ancien, et moins performant), vous pouvez aussi utiliser gzip -d.
sommaire
Archivage de données : la commande "tar"
La commande tar permet d'archiver ou de désarchiver des répertoires et des fichiers de facon optimale.
Une des commandes dont vous aurez certainement le plus besoin est :
[root@mistra /]# tar xzf nom_du_fichier.tar.gz
Cette commande décompacte un fichier au format .tar.gz ou .tgz ; vous rencontrerez régulièrement ce genre de fichier en voulant par exemple récupérer des logiciels pour linux sur l'Internet. Le format .tar.gz indique que le fichier est en réalité une archive (.tar), c'est-à-dire que le fichier contient en réalité plusieurs fichiers, et qu'il est compacté (.gz). La commande précédente peut être ainsi comprise :
x (extract) permet d'extraire certains fichiers d'une archive (lorsque l'on ne spécifie pas les noms des fichiers que l'on souhaite extraire de l'archive, tar les extrait tous).
z décompacte l'archive
f extrait un fichier donné (ici le fichier est nom_du_fichier.tar.gz).
Une autre commande permet de connaître la liste des fichiers contenus dans un fichier .tar.gz ou tgz :
[root@mistra /]#tar tvzf nom_du_fichier.tar.gz
t affiche la liste des fichiers contenus dans une archive tar.
v est le mode "verbose", qui affiche les noms des fichiers tel qu'ils ont été archivés à l'origine.
C'est donc l'option t qui permet de voir comment les fichiers de l'archive seront désarchivés.
La commande suivante créera une archive de tout mon répertoire /home/delcros/personnel :
[delcros@mistra delcros]# tar cvfz personnel.tgz personnel
c indique à tar de créer une archive
z indique a tar de compacter une archive
Ainsi tout mon répertoire personnel, avec les sous répertoires et tous les fichiers, se trouveront rassemblés dans UN fichier archive : personnel.tgz
sommaire
Connaître l'espace disque utilisé (df et du)
La commande df permet de connaître l'emplacement de montage des systèmes de fichiers (partitions utilisables pour stocker des fichiers) accessibles sur votre système et les capacités restantes sur chacun d'eux.
[delcros@mistra delcros]$ df
Filesystem 1024-blocks Used Available Capacity Mounted on
/dev/sda5 298762 119387 163945 42% /
/dev/sda1 41166 17116 24050 42% /dos
/dev/sda6 1745186 1163946 491042 70% /usr
[delcros@mistra delcros]$
La commande du permet de connaître l'utilisation disque en kilo-octet par le répertoire spécifié et ses sous répertoires.
[delcros@mistra html]$ du
56 ./config
224 ./images
185 ./commandes
28 ./.xvpics
2 ./docs/preparation_debutantlinux
203 ./docs
875 .
[delcros@mistra html]$
sommaire
Contrôler les ressources utilisées par les processus
La commande "top" :
La commande top vous permet d'afficher des informations en continu sur l'activité du système. Elle permet surtout de suivre les ressources que les processus utilisent (quantité de RAM, pourcentage de CPU, la durée de ce processus depuis son demarrage).
Vous pourrez utiliser l'option -d pour spécifier des délais de rafraîchissement (en secondes).
En cours d'utilisation de top, il est possible de stopper un process de manière interactive en tapant k. top demande ensuite lquel signal il doit envoyer : 15 (SIGTERM) est le signal par défaut qui met fin à un process, 9 (SIGKILL) est plus brutal.
Pour quitter top, appuyer simplement sur la touche "q".
La commande "ps" :
La commande ps permet de connaître les processus actifs à un moment donné :
[delcros@mistra delcros]$ ps
PID TTY STAT TIME COMMAND
341 p1 S 0 : 00 bash
344 p2 S 0 : 00 bash
1039 p3 S 0 : 00 bash
1219 p3 R 0 : 00 ps
Le "PID" est l'identificateur d'un processus, c'est un nombre. Chaque processus est identifié dans le système par un nombre unique.
Le "TTY" indique à quel port de terminal est associé le processus.
"STAT" indique l'état dans lequel se trouve le processus. Dans l'exemple, trois processus sont endormis (S comme "sleep"), et un processus en cours d'exécution (R comme "run"). Le processus qui est en cours d'exécution n'est autre que la commande "ps" que nous venons de lancer.
Le "TIME" indique depuis combien de temps le processus utilise les ressources du microprocesseur.
Le "COMMAND" précise, comme son nom l'indique, la commande dont l'état est décrit par PID, TTY, STAT et TIME.
Ceci dit, une simple commande "ps" n'indique pas tous les processus du système. Le simple fait de lancer ps nous a juste indiquer les processus associés à un terminal et qui dépendent de l'utilisateur courant (ici "delcros").
En fait, il est tout a fait probable que d'autres processus non liés à un terminal aient été lancés par "delcros". J'en suis d'ailleurs sur, puisque actuellement j'utilise emacs pour réaliser cette modeste page de documentation et que pour visualiser le résultat, j'utilise netscape :
[delcros@mistra delcros]$ ps -x
PID TTY STAT TIME COMMAND
240 ? S 0:01 /usr/X11R6/bin/fvwm2
246 ? S 0:00 /usr/X11/bin/xautolock -corners ++++ -time 5 -locker /usr/X
247 ? S 0:00 /usr/X11/bin/unclutter -idle 3
253 ? S 0:00 /usr/local/bin/Periodic
254 ? S 7:34 emacs --background grey79 -geometry 80x58+-4+-11
257 p0 S 0:00 bash
258 p2 S 0:00 bash
259 p1 S 0:00 bash
272 ? S 0:00 /usr/lib/emacs/19.34/i386-gnu-linux/emacsserver
2134 ? S 0:00 /usr/bin/ispell -a -m -d francais
6431 p0 S 1:03 /usr/lib/netscape/netscape-navigator
6441 p0 S 0:00 (dns helper)
6741 p0 R 0:00 ps -x
Les commandes qui ne sont pas associées à un terminal sont reconnaissable par le point d'interrogation qui rempli le champs TTY.
Si vous voulez connaître tous les processus de la machine de tous les utilisateurs, il suffit d'utiliser l'option ax. Si en plus vous voulez connaître les utilisateurs associés à chaque processus, il vous suffit d'utiliser l'option aux. Vous verrez alors plusieurs colonnes s'ajouter dont "USER" qui indique à quel utilisateur appartient le processus. "%CPU" indique en pourcentage les ressources du microprocesseur utilisées par le processus. "%MEM" montre en pourcentage les ressources en mémoire vive utilisées par le processus. "RSS" donne réellement la mémoire utilisée en kilobytes par le processus. "START" indique l'heure à laquelle le processus a été lancé.
Comment être plus précis ? : -)
La commande "pstree" :
Cette commande permet d'afficher les processus sous forme d'arborescence et donc de voir leurs inter-dépendances :
[delcros@mistra delcros]$ pstree
init-+-crond
|-emacs---emacsserver
|-gpm
|-inetd
|-kerneld
|-kflushd
|-klodg
|-kswapd
|-loadmeter
|-lpd
|-6*[mingetty]
|-named
|-netscape---netscape
|-4*[nfsiod]
|-nxterm---slrn-gor---slrn
|-portmap
|-pppd |-rc.news---innwatch---sleep
|-rpc.mountd
|-rpc.nfsd
|-rpc.yppasswdd
|-sendmail
|-syslogd
|-update
|-xconsole
|-xdm-+-X
| `-xdm---Xsession---fvwm---FvwmPager
|-xterm---bash---su---bash---tail
|-2*[xterm---bash]
|-xterm---bash---pstree
\ -ypserv
On voit par exemple ici que j'utilise Fvwmpager qui depend en fait lui-même de fvwm et lui même dépend de Xwindow ici lancé grace à xdm (vous n'obtiendrez pas la même chose que moi si vous lancez Xwindow grâce à la commande startx, en effet xdm permet de lancer automatiquement Xwindow au démarrage de linux).
La commande "kill" :
La commande "kill" permet d'expédier un signal à un processus en cours.
Sa syntaxe est la suivante :
kill [options] PID
Par exemple, si j'ai lancé une connexion à l'Internet en PPP, un processus pppd sera en cours. Pour tuer le processus, je peux d'abord faire un ps -ax pour connaître le numero du PID de pppd et ensuite si par exemple le PID est 592, je peux tuer la connexion en faisant :
[root@mistra delcros]# kill 592
Vous remarquerez que je suis logué en utilisateur "root" pour faire ceci, en effet le processus pppd appartenait à l'utilisateur "root" et un autre utilisateur ne peut pas lui expédier de signal.
Si un processus vous résiste, c'est à dire que vous n'arrivez pas à le tuer, vous devez utiliser la commande : kill -9 PID (PID étant toujours le numéro de de processus).
La commande "killall" permet aussi de tuer un processus mais au lieu d'indiquer le PID vous indiquerez le nom du processus.
Mais attention, plusieurs processus peuvent utiliser la même commande. Ainsi, si vous tapez :
[delcros@mistra delcros]# killall grep
Vous tuerez tous les processus qui contiennent la commande grep. Je vous recommande donc d'utiliser l'option "-i" qui vous demande une confirmation avant de tenter d'arrêter un processus..
sommaire
La connexion de plusieurs commandes : les pipes
Qu'est ce qu'un "pipe" (parfois appelé « tube ») ? Si on le décrit ce n'est rien d'autre que cette barre verticale que vous pouvez obtenir avec la combinaison de touches "Altgr + 6" sur les clavier français classiques, ou "Altgr + 1" sur les claviers franco-belges. Un tube permet de passer le résultat d'une commande à autre commande. Un exemple permettra de comprendre tout cela beaucoup plus facilement :
Je veux savoir quels sont tous les processus "bash" qui fonctionnent sur le système, mais je veux que la commande ps aux ne me fournisse les lignes que les lignes qui contiennent le mot "bash" pour m'eviter d'avoir à parcourir toute la longue liste qu'affiche ps aux :
[delcros@mistra html]$ ps aux | grep bash
delcros 367 0.0 1.8 1600 568 p2 S 18 : 14 0 : 00 bash
delcros 426 0.0 2.2 1624 704 p3 S 18 : 17 0 : 00 bash
delcros 1261 0.0 2.2 1608 692 p6 S 21 : 22 0 : 00 bash
delcros 1332 0.0 2.4 1616 772 ? S 21 : 41 0 : 00 bash
delcros 1582 0.0 2.7 1604 844 p8 S 22 : 30 0 : 00 bash -rcfile .bashrc
delcros 2796 0.0 0.9 908 300 p3 S 02 : 17 0 : 00 grep bash
root 1162 0.0 2.1 1596 664 ? S 21 : 06 0 : 00 bash
On peut dire que l'on a "connecté" deux commandes entre elles. Mais vous pouvez ainsi en connecter autant que vous voulez en utilisant cette syntaxe :
commande1 | commande2 | commande3 ... | commandeN Si on se rend compte de l'utilité des pipes, progressivement on les utilise et on fini par ne plus s'en passer.
sommaire
Les redirections
Quand on parle de redirection, on parle plus précisemment de la redirection des entrées-sorties que traitent ou engendrent les programmes. Par exemple, lorsque vous tapez des commandes au prompt de linux, vous effectuez une entrée de caractère grâce au clavier et linux vous donne une sortie en vous donnant à l'écran le résultat de votre commande. Mais l'entrée de données peut se faire autrement que par le clavier, en indiquant par exemple un fichier qui contient des données à traiter. La sortie peut aussi s'effectuer ailleurs que sur l'écran, sur l'imprimante par exemple.
Ainsi, lorsque nous parlons des entrées sorties, nous parlons aussi des périphériques de l'ordinateur. On considérera que les périphériques sont des fichiers a part entière car, sous UNIX, des fichiers spéciaux permettent l'accès aux périphériques se trouvent dans le répertoire /dev. Dans la plupart des cas ce que l'on y copie va vers le périphérique.
Mais comment faire pour rediriger une entrée ou une sortie ?
Comment faire par exemple pour que la commande cat qui affiche un fichier à l'écran, sorte plutot le fichier dans un autre fichier ou vers une imprimante ? C'est le signe > qui va nous permettre de réaliser ceci.
Il est temps de prendre un exemple....
Dans un premier cas, je veux que linux m'affiche le fichier test à l'ecran :
[delcros@mistra delcros]$ cat test
Vous allez voir s'afficher à l'écran le fichier test.
Dans un deuxième cas, je veux que linux place le fichier test dans un fichier test2 au lien de l'afficher à l'écran :
[delcros@mistra delcros]$ cat test > test2
Dans un troisième cas, je veux que linux imprime le fichier au lieu de l'afficher à l'écran :
[delcros@mistra delcros]$ cat test > /dev/lp0
Quelques constats s'imposent :
1- La sortie sur un autre fichier n'est rien d'autre avec la commande cat qu'une copie du fichier "test" en "test2". La commande cp nous permet aussi de faire cela.
2- Dans la redirection vers l'imprimante nous avons indiqué le fichier spécial /dev/lp0 qui correspond au port LPT1 où est connectée mon imprimante.
La commande cat affiche son résultat vers la sortie standard qui est le terminal.
Par défaut le terminal est la sortie standard, ce descripteur de fichier est désigné par le chiffre "1"
L'entrée standard dans un système UN*X est le clavier et est désigné par le chiffre "0".
Il existe un troisième descripteur de fichier qui est la sortie des erreurs produites par l'exécution d'une commande.
La sortie des erreurs se fait par défaut sur le terminal et est désigné par le chiffre "2".
Plusieurs types de redirection existent :
"> fichier" qui permet de rediriger le résultat d'une commande vers une sortie que nous choisissons.
"< fichier" permet de spécifier une entrée standard.
">> fichier" permet comme le signe ">" de rediriger la sortie standard vers un fichier, mais si le fichier spécifié existe déjà, la sortie sera ajouté à ce qui existe déjà dans le fichier alors qu'avec un simple "> le fichier spécifié serait écrasé.
"<> fichier" permet de spécifier un fichier comme étant en même temps l'entrée standard et la sortie standard.
"n> fichier" permet de rediriger la sortie d'un des descripteurs de fichiers vers un fichier. Par exemple, si vous souhaitez obtenir les erreurs standards dans un fichier vous n'aurez qu'à utiliser cette syntaxe :
commande 2> erreurs
"n< fichier" permet de spécifier un fichier comme étant un des descripteurs de fichier.
">&n" permet de dupliquer la sortie standard vers un des descripteurs de fichier.
"<&n" permet de dupliquer l'entrée standard depuis un des descripteurs de fichier.
"&> fichier" permet de rediriger la sortie standard et l'erreur standard vers un seul et même fichier.
À première vue, on se demande bien à quoi peut servir certaines des redirections ...
On les découvre au fur et à mesure, mais une des plus utiles est 2>&1 qui permet de rediriger les erreurs vers la sortie standard. Elle est très appréciée des utilisateurs lorsque par exemple ceux-ci n'arrivent pas à lancer l'interface X-Window. Il est alors courant de recourir à la commande suivante afin d'obliger X à placer tous ses messages dans un fichier nommé erreursX que l'on pourra consulter ensuite à loisir :
[delcros@mistra delcros]$ startx 2>&1 erreursX.tmp
- Se déplacer dans l'arborescence de répertoires (cd)
Lorsque vous avez passé le login et le password de linux, vous vous retrouvez devant le prompt shell qui est le plus souvent celui de bash (sinon vous serez devant celui de csh). Il ressemble le plus souvent à ceci :
[root@mistra /root]$
Le mot root signifie que vous vous êtes "logué" sur le compte de l'administrateur système. Vous êtes donc en pleine possession de la machine, vous pouvez faire absolument n'importe quoi, jusqu'à supprimer tous les fichiers ... faites donc très attention ... En théorie il ne faut utiliser la machine sous ce compte qu'afin de l'administrer. Des comptes dits « d'utilisateurs » permettent sinon de travailler en temps normal. Nous verrons ci-après comment créer un compte utilisateur.
Le mot "mistra"représentera, dans ce document, le nom de votre ordinateur (pour le connaître invoquer la commande "hostname")
Actuellement vous vous trouvez sous le compte de l'administrateur système, c'est-à-dire que vous êtes dans le répertoire /root (sous Unix, les composants des noms de répertoires sont séparés par des "slash" "/" et non pas comme sous MS-DOS par des "anti-slash" "\").
Déplaçons-nous dans la "racine" du système :
[root@mistra /root]$ cd ..
Faites bien attention de séparer par un espace "cd" et "..", UNIX exige une grande précision dans la syntaxe des commandes. Soumettez la commande au système grâce à la touche « Entrée », évidemment !
Vous êtes maintenant dans le répertoire racine :
[root@mistra /]#
Que contient-il ? Tapez la commande ls, et voyez le résultat, vous devez obtenir quelque chose comme :
bin boot cdrom etc usr var vmlinux Si certains fichiers ou répertoires manquent ce n'est pas important.
Déplaçons-nous dans le répertoire qui contient une grande partie des programmes (souvent simplement appelés « binaires ») de linux : /usr/bin : cd usr/bin. Vous pouvez là aussi obtenir le contenu du répertoire en utilisant la commande ls.
Maintenant allons voir ce que contient le répertoire /etc (aperçu lorsque nous avons listé le répertoire racine /). Nous avons deux possibilités pour nous y rendre : soit nous revenons dans le répertoire racine et nous nous rendons ensuite dans le répertoire etc; soit nous nous rendons immédiatement dans le répertoire /etc :
- Méthode no 1 :
cd / (pour se rendre à la racine)
puis
cd etc
Cette méthode est fastidieuse car elle nécessite de taper deux commandes successives. Nous pouvons utiliser la deuxième méthode pour nous rendre directement dans le répertoire /etc en écrivant le chemin complet dans la commande cd :
- Méthode no 2 :
cd /etc
et nous sommes directement dans le répertoire /etc. Dans cette commande nous avons indiqué que pour se rendre dans le répertoire etc, il fallait d'abord se rendre dans le répertoire racine. Pour se faire nous avons placé un / devant etc.
Lorsque l'on ajoute un ~ au lieu d'un chemin à la commande cd, celle-ci nous replace automatiquement dans notre répertoire utilisateur. Si vous êtes en administrateur système la commande par cd ~ vous placera dans le répertoire /root. Dans le cas où je suis (je suis loggé en tant qu'utilisateur delcros) je vais automatiquement me retrouver dans le répertoire de l'utilisateur delcros qui se trouve dans /home/delcros. Les répertoires des utilisateurs sont tous sous /home.
[delcros@mistra bin]$cd ~
- Ceci est la méthode orthodoxe, sinon vous pouvez faire simplement :
[delcros@mistra bin]$cd
et vous reviendrez ainsi dans votre répertoire personnel.
sommaire
Dans quel répertoire suis-je actuellement ? (pwd)
Lorsque l'on se déplace dans les répertoires, par défaut bash n'affiche que le « nom court » du répertoire où l'on se trouve. Le nom court ne comprend pas le chemin complet. Or il peut arriver qu'un même nom court corresponde à plusieurs répertoires bien distincts, donc que seuls les chemins qui y mènent permettent de les distinguer. C'est par exemple le cas du nom court bin, que l'on trouve en /bin et en /usr/local/bin. Il existe beaucoup d'autres exemples. La solution pour connaître le chemin du répertoire où l'on se trouve est d'utiliser la commande pwd :
[delcros@mistra bin]$ pwd
/usr/bin
[delcros@mistra bin]$
sommaire
Lister les fichiers d'un répertoire (ls)
La commande ls et ses très nombreuses options vous permettront d'obtenir beaucoup d'informations sur les fichiers présents dans un répertoire : déplaçons nous par exemple dans le répertoire "/bin" et listons le contenu de ce répertoire :
[delcros@mistra bin]$ cd /bin
[delcros@mistra /bin]$ ls
arch dd gzip nisdomainname su
ash df hostname ping sync
awk dmesg kill ps tar
cp fgrep mount sh ypdomainname
cpio gawk mt sleep zcat
csh grep mv sort zsh
date gunzip netstat stty ls
Ceci est un listing "brut" du répertoire /bin qui contient les utilitaires de base de linux. On reconnaît par exemple la commande ls ...
De la même manière que sous MS-DOS (avec la commande dir), nous pouvons demander à Linux de lister seulement les fichiers dont les noms contiennent des caractères donnés. Demandons par exemple uniquement les noms des fichiers commençant par la lettre "l" :
[delcros@mistra /bin]$ ls l*
ln login ls
[delcros@mistra /bin]$
Voici quelques options intéressantes de la commande ls (les options sous UNIX suivent la commande et sont le plus souvent précédées d'un tiret) :
L'option ls -l permet de lister les attributs des fichiers (les droits de lecture, d'écriture et d'exécution, le propriétaire, le groupe, la taille en octets, sa date de création ou de modification) :
[delcros@mistra /bin]$ ls -l
total 3615
-rwxr-xr-x 1 root root 2716 Apr 23 02:09 arch
-rwxr-xr-x 1 root root 56380 Dec 23 1996 ash
lrwxrwxrwx 1 root root 4 May 10 20:01 awk -> gawk
-rwxr-xr-x 1 root root 18768 Mar 8 19:17 basename
-rwxr-xr-x 1 root root 300668 Sep 4 1996 bash
lrwxrwxrwx 1 root root 3 May 10 19:59 bsh -> ash
-rwxr-xr-x 1 root root 16584 Dec 16 1996 cat
-rwxr-xr-x 1 root root 17408 Nov 26 1996 chgrp
Notes : Ici, tous les fichiers appartiennent à l'administrateur système (root) et à son groupe (root), comme les sections consacrées à chmod et à chown l'exposerons). Nous traiterons du sens de la fin de chaque ligne, qui contient parfois une flèche visible ici sur la ligne awk -> gawk, dans la section consacrée aux liens ln.
ls -a liste tous les fichiers du répertoire, y compris les fichiers cachés. Cette option est très utile lorsque l'on se trouve dans son répertoire personnel car il contient les fichiers de configuration de l'utilisateur dont les noms commencent généralement par un point et seule l'option -a permet de détecter leur existence.
Exemple avec le répertoire de l'administrateur système :
voici une partie des fichiers listés avec la commande ls sans option :
[root@mistra /root]# ls
bookmarks.sgml mc.hint scrsh2 2494.html
Desktop ftape.o mc.hlp scrsh3
FAQ.services.html kbanner.kssrc mc.lib xdm-config
Et voici une partie du résultat avec la commande ls -a.
[root@mistra /root]# ls -a
. .kvtrc .xquadkey
.. .letter .xquadkey~
.BitchX .mc.ext 2494.html
.Xmodmap~ .peruser-newsrc-working
.amaya .peruser_config Desktop
.applications .peruser_spool FAQ.services.html
...
On peut maintenant connaître tout (option 'a' : penser au mot "all") le contenu du répertoire.
D'autres options de ls sont utiles :
ls -m :
Affiche les fichiers en les séparant par une virgule au lieu de les présenter en colonnes.
ls -t :
Affiche les fichiers par date, c'est-à-dire en les classant du récent au plus ancien.
ls -lu :
Affiche les fichiers par date de dernier accès et indique cette date.
ls -F :
Affiche les fichiers par type. Ainsi un fichier suivi d'un slash (/) est un répertoire, un fichier suivi d'une étoile est un fichier exécutable et un fichier suivi d'un "@" est un lien (nous reviendrons sur les liens dans la section consacrée à ln).
ls -S :
Affiche les fichiers triés par ordre de taille décroissante.
ls -X :
Affiche les fichiers par type d'extension.
ls -r :
Affiche les fichier en ordre alphabétique inverse.
Cette option à la particularité d'inverser l'effet de tous les tris requis. Par exemple, la commande ls -tr affichera les fichiers par date en commençant par les plus anciens pour finir par les plus récents.
sommaire
Voir un fichier (cat et more)
La commande cat permet de lire des fichiers. Nous avons vu tout à l'heure que le répertoire /root contenait des fichiers de configuration. Ces fichiers sont simplement des fichiers textes avec un agencement et une syntaxe particulière. Regardons le contenu du fichier .bashrc qui permet de configurer à souhait son shell :
[root@mistra /root]# cat .bashrc
# .bashrc
# User specific aliases and functions
# Source global definitions
if [ -f /etc/bashrc ]; then
. /etc/bashrc
fi
source .sd.sh
[root@mistra /root]#
Une option utile de cat est -n qui permet de numéroter les lignes (ne pas oublier que cat permet de lire et non de modifier un fichier. Ainsi la numérotation de ligne apparaît à l'écran mais le fichier .bashrc n'en est pas pour autant modifié).
[root@mistra /root]# cat -n .bashrc
1 # .bashrc
2
3 # User specific aliases and functions
4
5 # Source global definitions
6 if [ -f /etc/bashrc ]; then
7 . /etc/bashrc
8 fi
9 source .sd.sh
[root@mistra /root]#
Si vous souhaitez connaître les autres options de cat, tapez au prompt "cat --help".
Vous pouvez utiliser la commande more pour visualiser un fichier. La commande more a l'avantage d'afficher le fichier page par page. Pour passer d'une page à l'autre, tapez sur la touche ESPACE.
sommaire
- Éditer un fichier (vi, emacs, joe)
vi (l'éditeur le plus ancien)
vi date des années 70 .... autant dire que cet éditeur a du métier et n'est toujours pas démodé. Ce n'est pas celui que j'utilise mais beaucoup en sont adeptes malgré son apparence fruste. Ceci s'explique par une grande puissance ... Si je m'attarde quelque peu sur vi, c'est que dans les moments critiques où rien ne fonctionne, où tout va mal, c'est l'éditeur qu'on ne peut éviter.
Lançons Vi :
[root@mistra /root]# vi
Après le lancement de la commande vous allez vous trouver directement dans l'éditeur ... Pendant ce court apprentissage de vi, nous allons créer un fichier, le modifier, l'enregistrer, ... et quelques autres petites manoeuvres de survie :
Passer du mode commande aux mode texte, taper du mode texte, enregistrer.
vi comprend deux modes : un mode "commande" et un mode "insertion", après le lancement de vi nous sommes en mode commande : appuyez sur la touche "Echap" puis sur "a" ("a", comme "append", permet d'ajouter du texte après le curseur). Vous voyez en bas de l'écran apparaître la ligne "-- INSERT --". Nous pouvons commencer notre texte :
linux est gratuit puissant en perpetuelle evolution.
Linux est stabble. Linux existe depuis 1991 seulement
et pourtant quel chemin parcouru !
N'oubliez pas de placer retour chariot au bout de chaque ligne.
Sauvons le fichier : nous sortons d'abord du mode texte en appuyant à nouveau sur la touche "Echap". La mention "-- INSERT --" disparaît, nous sommes en mode commande. Tapez maintenant " :w linux-test" et sur la touche retour chariot (afin d'écrire ("write") le fichier). Vous devez obtenir en bas de l'écran ceci :
"linux-test" [New File] 3 lines, 142 characters written
Supprimer du texte et quitter vi
Nous voyons qu'à la deuxième ligne, j'ai fait une grosse fôte d'aurtograffe. Nous allons supprimer le "b" qui est en trop dans stabble : déplacez le curseur sur un des "b" en trop, passez en mode commande ("--INSERT --" ne doit pas apparaître à l'écran), appuyez sur "x", le b a disparu.
Quittons vi, mais auparavant, nous devons sauver les modifications effectuées : Passez en mode commande et tapez " :wq" (write et quit). Vous êtes sorti de vi et votre fichier a été sauvegardé sous linux-test. Pour revenir à vi en ouvrant le fichier linux-test au démarrage tapez :
[root@mistra /root]# vi linux-test
Si vous souhaitez quitter sans enregistrez les dernières modifications, il vous faudra passer en mode commande et taper " : q!".
Ceci est une présentation très très courte de vi, mais qui vous permettra malgré tout de survivre au cas où vous devriez absolument l'utilisez. Voyons tout de même un rapide descriptif d'autres commandes vi :
D'autres commandes vi.
A permet d'ajouter du texte à la fin de la ligne.
i permet d'ajouter du texte avant le curseur.
o permet d'ajouter une ligne en dessous du curseur.
O permet d'ajouter une ligne au dessus du curseur.
le retour chariot permet d'aller à la ligne suivante.
dd permet de supprimer la ligne courante.
X permet de supprimer le caractère avant le curseur.
u permet d'annuler la dernière commande effectuée.
Emacs ... la puissance !
Emacs date de la fin des années 70 et ne cesse d'évoluer depuis, ce qui fait de lui, sans aucun doute possible, l'éditeur le plus puissant au monde. Bien plus qu'un éditeur, emacs est un environnement de travail : édition, programmation, mail, news, shell ... bref on peut rester sous emacs sans avoir besoin de quoi que ce soit d'autre.
Ses adeptes sont très nombreux.
Et surtout ne leur dites pas qu'emacs est lourd ...vous vous tromperiez lourdement (je sais de quoi je parle ... j'ai fait l'erreur et en ce moment je suis sous emacs ... ;-))
Lançons emacs :
[root@mistra root]$ emacs
Ouvrons maintenant le fichier linux-test que nous avons créé précédemment sous vi :
Pour cela utilisez la séquence de touches suivante : Ctrl-x Ctrl-f
Vous voyez apparaître en bas de l'écran :
Find File : ~/
tapez le nom du fichier et faites un retour chariot.
Nous retrouvons notre charmant petit texte.
Vous le comprenez, la touche Ctrl permet de passer des commandes et de passer du mode texte au mode commande. Vous pouvez le modifier à souhait. Les touches Backspace et Suppr fonctionnent comme sous n'importe quel éditeur.
Pour sauver le fichier, tapez la séquence de touches suivante :
Ctrl-x Ctrl-s
Si vous êtes bloqués dans la ligne de commande d'emacs après avoir effectué de mauvaises manipulations et que vous souhaitez retrouver le mode texte, tapez la séquence suivante :
Ctrl-g
Si vous avez fait des erreurs dans le texte, la séquence suivante permet de supprimer les dernières modifications :
Ctrl-x u
Si vos touches de direction ne fonctionnent pas, voici plusieurs séquences de touches qui vous permettent de vous déplacer dans votre document :
Ctrl-p : monter d'une ligne.
Ctrl-n : descendre d'une ligne.
Ctrl-f : avancer d'un caractère.
Ctrl-b : reculer d'un caractère.
Ctrl-v : avancer d'un écran (ou d'une page si vous préférez).
Alt-v : reculer d'un écran.
Ctrl-d : supprimer le caractère sur lequel le curseur se trouve.
Une commande utile est :
Ctrl-s qui permet de faire une recherche "dynamique" ("incrémentale") sur une suite de caractères dans le texte.
Meta-% permet de lancer un "Rechercher et remplacer" . La touche Meta est en général confondue avec la touche Alt Pour quitter emacs, utiliser la combinaison de touches suivante :
Ctrl-x Ctrl-c
Avec cette rapide présentation vous pourrez déjà "barboter" un peu sous emacs. Il m'est impossible de décrire dans ce document les milliers de fonctions disponibles .... si vous souhaitez en savoir plus, cette séquence vous permettra de rentrer dans l'aide d'emacs :
Ctrl-h
Ou bien lancez le "tutorial" :
Ctrl-h t
Si vous devenez un mordu d'emacs (ce qui est tout a fait normal : -) vous pourrez trouver quelques ouvrages sur emacs dans toutes les bonnes bibliothèques.
joe : la simplicité.
joe est l'éditeur que j'utilise pour faire des petites modifications dans mes fichiers de configuration par exemple, il est très leger, il ne possède pas la puissance d'emacs mais rend lui aussi service :
Pour appeler joe :
[root@mistra /root]# joe
joe est très intuitif (à la Wordstar), pas besoin de s'étendre sur les fonctionnalités textes. Trois opérations fondamentales à connaître :
Ctrl-k e permet d'ouvrir un fichier
Ctrl-k d permet de sauvegarder le fichier
Ctrl-k x permet de sauvegarder le fichier et de quitter joe
Ctrl-c permet de quitter joe sans sauvegarder les modifications.
joe possède de nombreuses fonctions possibles qui sont décrites dans le man (nous verrons comment y accéder dans la section consacrée à man).
sommaire
Copier un fichier (ou un répertoire) : cp.
La syntaxe de la commande cp est la suivante :
cp [option] fichier-origine fichier-destination
ou
cp [option] fichier répertoire
par exemple pour faire une copie de notre fichier linux-test en un fichier linux-test2, il suffit de faire :
[root@mistra /root]# cp linux-test linux-test2
Nous possédons maintenant deux exemplaires de notre fichier dans /root.
ATTENTION ! : si vous effectuez une copie d'un fichier sur un fichier qui existe dejà, celui-ci sera effacé et remplacé par le nouveau fichier.
Si vous souhaitez copier le fichier linux-test dans un répertoire (par exemple /home) en gardant le nom du fichier, utilisez la commande suivante :
[root@mistra /root]# cp linux-test /home
Pour lui donner un autre nom :
[root@mistra /root]# cp linux-test /home/linux-test2
Nous venons de voir que l'utilisation de cp est dangereuse et l'on risque parfois d'effacer des fichiers importants. Les options de cp peuvent vous éviter des situations fâcheuses.
cp -i avertit l'utilisateur de l'existence d'un fichier du même nom et lui demande s'il peut ou non remplacer son contenu. Recopions à nouveau le fichier linux-test sur linux-test2 avec l'option -i :
[root@mistra /root]# cp -i linux-test linux-test2
cp : overwrite `linux-test2'?
cp vous demande s'il peut écraser linux-test2 : répondre par "y" (yes) ou "n".
Quelques options importantes de cp :
cp -b permet comme l'option -i de s'assurer que la copie n'écrase pas un fichier existant : le fichier écrasé est sauvegardé, seul le nom du fichier d'origine est modifié et cp ajoute un tilde (~) à la fin du nom du fichier.
cp -l permet de faire un lien "dur" entre le fichier source et sa copie. Ceci signifie que le fichier copié et sa copie partageront physiquement le même espace. Cela permet des gains de place non négligeables. Plus exactement, sur le disque dur le fichier et sa copie seront le même fichier alors qu'avec une copie classique, le disque dur contiendra deux exemplaires du fichier.
cp -s permet de faire un lien "symbolique" entre le fichier source et sa copie. Le lien symbolique est un pointeur. Ainsi si nous copions le fichier linux-test avec l'option -s, lorsque par exemple nous voudrons éditer le fichier copié, linux éditera en réalité le fichier original (voir la section consacrée à ln pour un descriptif plus complet des liens).
cp -p permet lors de la copie de préserver toutes les informations concernant le fichier comme le propriétaire, le groupe, la date de création (voir les sections consacrées à chmod et chown pour plus d'informations).
cp -r permet de copier de manière récursive l'ensemble d'un répertoire et de ses sous-répertoires.
Exemple :
Je possède dans mon répertoire /home/delcros/personnel un répertoire intitulé "mygale" et qui contient 3 sous répertoires ("echecs", "linux", xcaissa) :
/home/delcros/personnel/
/home/delcros/personnel/mygale/
/home/delcros/personnel/mygale/echecs/
/home/delcros/personnel/mygale/linux/
/home/delcros/personnel/mygale/xcaissa/
Je souhaite copier le répertoire mygale ainsi que ses sous-répertoires dans mon répertoire /home/delcros/" : j'utilise la commande (en supposant que je me suis au préalable déplacé dans le répertoire /home/delcros/personnel/ :
[delcros@mistra personnel]$ cp -r mygale /home/delcros
cp -v permet d'afficher le nom des fichiers copiés. Utile si par exemple vous copiez plusieurs fichiers (à l'aide des occurences "*" et/ou "?") et que vous souhaitez voir le bon déroulement de la "multicopie". J'aurais pu par exemple utiliser cette option lors de ma copie récursive du répertoire "mygale".
J'aurais ainsi vu ceci en associant l'option -v et -r :
[delcros@mistra personnel]$ cp -rv mygale /home/delcros
mygale -> /home/delcros/mygale
mygale/index.html -> /home/delcros/mygale/index.html
mygale/logo.gif -> /home/delcros/mygale/logo.gif
mygale/linux -> /home/delcros/mygale/linux
mygale/linux/linux.html -> /home/delcros/mygale/linux/linux.html
.....
(c'est une partie du résultat).
sommaire
Supprimer un fichier "rm".
PREAMBULE :
Nous entrons maintenant dans une zone à risque, mieux vaut donc se loguer en tant qu'utilisateur de la machine et non pas en tant qu'administrateur système (root), car nous risquerions par une mauvaise manipulation de supprimer des fichiers fondamentaux nécessaires au bon fonctionnement de linux. Nous allons donc créer un compte utilisateur, lui attribuer un mot de passe et nous loguer sur ce compte. Exécutez les commandes suivantes, une explication détaillée interviendra ensuite dans la partie consacrée à l'administration système :
[root@mistra /root]#adduser le_nom_de_choix (votre prénom par exemple, mais sans accent et si possible long de moins de 8 caractères)
[root@mistra /root]#passwd le_nom_de_votre_choix (saisir deux fois le même mot de passe, la seconde sert à confirmer)
[root@mistra /root]#cp linux-test /home/le_nom_de_votre_choix (gardons notre fichier pour continuer nos petites expériences .
[root@mistra /root]#chow le_nom_de_votre_choix.le_nom_de_votre _choix /home/le_nom_de_votre_choix(L'administrateur donne généreusement le fichier linux-test au nouvel utilisateur avec la commande "chown" que nous verrons dans les commandes d'administration système, pour l'instant ne vous en souciez pas.)
[root@mistra /root]#su le_nom_de_votre_choix (la commande su permet de se loguer sur un autre compte).
Il suffira de saisir exit pour « retomber » dans la session de travail root.
Effectuons à nouveau une copie du fichier linux-test (tapez cd pour vous retrouver dans votre répertoire personnel) :
[delcros@mistra delcros]$ cp linux-test linux-test2
LA COMMANDE rm
Pour supprimer le fichier "linux-test2" :
[delcros@mistra delcros]$ rm linux-test2
LES OPTIONS de rm
Comme pour cp, l'option cp -i permet à rm de demander à l'utilisateur s'il souhaite vraiment supprimer le ou les fichiers en question :
[delcros@mistra delcros]$ rm -i linux-test2
rm : remove `linux-test2'?
(il vous suffit donc de répondre "y" ou "n")
rm -d permet de supprimer un répertoire qu'il soit plein ou non (attention dangereux ...)
rm -r permet de supprimer un répertoire et ses sous répertoires (attention TRÈS dangereux)
rm -f permet de supprimer les fichiers protégés en écriture et répertoires sans que le prompt demande une confirmation de suppression (à utiliser avec précaution ...)
sommaire
Créer un répertoire (mkdir)
Pour créer un répertoire, il suffit de taper la commande suivante (ici je crée le répertoire "personnel" dans /home/delcros :
[delcros@mistra delcros]$ mkdir personnel
Une option de mkdir est souvent utile :
mkdir -p permet de créer une suite de répertoire.
Supposons que je veuille créer dans mon répertoire /home/delcros la suite de répertoires suivante : doc/mygale/mail. Je peux faire soit :
[delcros@mistra delcros]$ mkdir doc
[delcros@mistra delcros]$ cd doc
[delcros@mistra delcros]$ mkdir mygale
[delcros@mistra delcros]$ cd mygale
[delcros@mistra delcros]$ mkdir mail
Ou bien utiliser l'option -p qui me permet de créer la suite de répertoires "parents" le plus simplement du monde :
[delcros@mistra delcros]$ mkdir -p doc/mygale/mail
sommaire
Déplacer ou renommer un fichier (mv)
Pour comprendre la commande mv, voyons une suite de commandes qui effectuent des opérations différentes :
[delcros@mistra delcros]$ mv linux-test perso
renomme le fichier "linux-test" en "perso"
[delcros@mistra delcros]$ mv perso perso
va écraser le fichier existant avec la source.
[delcros@mistra delcros]$ mv personnel mon-répertoire
va renommer le répertoire personnel en mon-répertoire
[delcros@mistra delcros]$ mv perso /home/delcros/mon-répertoire
va déplacer le fichier perso dans le répertoire /home/delcros/mon-répertoire
Les options :
mv -b ('b' comme "backup") va effectuer une sauvegarde des fichiers avant de les déplacer :
[delcros@mistra delcros]$ mv -b mon-répertoire/perso /mon-répertoire/linux-test
Cette commande va renommer le fichier perso en linux-test, cependant vous trouverez dans le répertoire une sauvegarde de perso (perso~).
mv -i ('i' comme «interactive») demande pour chaque fichier et chaque répertoire s'il peut ou non déplacer fichiers et répertoires.
mv -u ('u' comme «update») demande à mv de ne pas supprimer le fichier si sa date de modification est la même ou est plus récente que son remplaçant. Exemple :
Déplaçons-nous vers notre répertoire personnel puis créons un nouveau fichier avec l'éditeur de texte joe :
[delcros@mistra personnel]$ joe linux-test2
saissons un petit texte :
"y en a marre de ces textes stupides !"
et finissons notre session joe par la séquence de touches suivante :
Ctrl-k x
qui permet d'enregister le fichier et de quitter joe.
Notre fichier linux-test2 est plus récent que notre fichier linux-test. Vous pouvez le vérifier en effectuant un "ls -l".
Nous souhaitons (naïvement, bien sûr !) renommer le fichier linux-test en linux-test2. Mais nous sommes attentifs et nous ne voulons pas que le fichier linux-test2 soit écrasé si celui-ci est plus récent que linux-test :
[delcros@mistra personnel]$mv -u linux-test linux-test2
L'option -u nous a évité d'écraser le fichier linux-test2. La commande mv n'a donc pas été effective.
sommaire
Retrouver un fichier ("find")
1- La commande find
Exemple simple : comment trouver un fichier portant un nom donné ?
[delcros@mistra delcros]$ find / -name linux-test2 -print
/home/delcros/linux-test2
(Un peu long n'est ce pas pour trouver la reponse dans tout cette grosse arborescence ? :-) )
En general on recherche rarement un fichier depuis la racine.
Décomposition de la commande de l'exemple :
"/" indique que nous voulons chercher à partir de la racine notre fichier.
"-name " est l'option qui indique ici que nous voulons spécifier le nom d'un fichier.
"-print" demande à find d'afficher le résultat.
Pour chercher tous les fichiers commencant par "linux-tes" et définir à partir de quel répertoire on souhaite effectuer la recherche on utilise cette syntaxe :
[delcros@mistra delcros]$find /home/delcros -name 'linux-tes*' -print
Le nombre d'options de find est impressionnant. En voici quelques unes :
-type permet d'indiquer le type de fichier que l'on recherche. Si vous cherchez seulement un répertoire et non pas un fichier vous pourrez utilisez cette option :
[delcros@mistra delcros]$find /usr -type d -name bin -print
Ici, on demande à find de trouver les répertoires (l'argument "d" (comme "directory") de l'option -type indique que l'on cherche un répertoire) du nom de "bin" à partir du répertoire /usr.
-exec ou -ok permet d'exécuter une commande sur les fichiers trouvés. La différence entre -exec et -ok est que la deuxième vous demandera pour chaque fichier trouvé si vous souhaitez réellement réaliser l'opération :
[delcros@mistra delcros]$find -name 'linux-tes*' -print -ok rm {} \;
./linux-test
rm ... ./linux-test ? y
[delcros@mistra delcros]$
Dans l'option -exec, la paire d'accolades se substitue aux fichiers trouvés, et l'anti-slash lié au point virgule forme une séquence d'échapemment.
On peut dire que cette présentation de find est assez sommaire, mais j'espère qu'elle vous laisse deviner ses capacités.
2- La commande locate
La commande locate a la même mission que find. Pourtant vous verrez qu'en utilisant la commande locate, le fichier sera trouvé beaucoup plus rapidement. Pourquoi ? Parce que locate ne va pas chercher le fichier dans toute l'arborescence des répertoires mais va localiser la position du fichier dans une base de données qui contient la liste des fichiers existants. Cette base de données est en général automatiquement générée une fois par jour par le système grâce à une commande appelée updatedb. Sur un système Linux Redhat, cette base de donnée se trouve dans le répertoire /usr/lib et se nomme locatedb.
La syntaxe est donc simple:
[delcros@mistra delcros]$ locate nom_du_fichier
Bien que la commande locate soit très intéressante, elle ne possède pas la puissance des options de find. De plus, si vous créez des fichiers pendant la journée et que vous les recherchez avec la commande locate, il n'est pas sûr que la base de donnée ait été remise à jour. Bref, locate est un complément de find.
3-La commande which
which vous permet simplement de connaître le chemin d'un exécutable. Exemple:
[delcros@mistra delcros]$ which ls
/bin/ls
[delcros@mistra delcros]$
sommaire
Trouver du texte dans un fichier (grep)
La commande grep est un pivot des commandes UNIX. Elle cherche une expression rationnelle dans un ou plusieurs fichiers, exemple :
[delcros@mistra delcros]$grep fouille linux-commande.html
grep, la commande qui vous fouille les fichiers
La commande a donc affiché la ligne qui contient le mot "fouille" dans le fichier linux-commande.html.
La richesse de la commande grep permet de faire des recherches sur plusieurs fichiers et d'avoir un format de sortie adéquat. Par exemple, le fichier linux-commande.html est déjà assez important et il serait agréable de savoir où se trouve cette ligne qui contient le mot fouille dans le fichier :
[delcros@mistra delcros]$grep -n fouille linux-commande.html
902: Grep, la commande qui vous fouille les fichiers
Le mot fouille se trouve à la ligne numéro 902 et c'est l'option -n qui nous a permis de connaître ce numéro.
Une autre option très utile est -l qui permet de n'afficher que les noms des fichiers contenant ce que l'on cherche :
[delcros@mistra delcros]$grep -l fouille /home/delcros/personnel/html/*
/home/delcros/personnel/html/linux-commande.html
Ici, j'ai demandé à la commande grep de chercher l'occurence "fouille" dans les fichiers du répertoire /home/delcros/personnel/html/. Le résultat est le nom des fichiers qui contiennent l'occurence. Ici, seul le fichier "linux-commande.html" dans le répertoire contient le mot "fouille". Quelques-unes des autres options :
-c donne le nombre de fois où l'expression rationnelle a été rencontrée dans le fichier :
[delcros@mistra delcros]$ grep -c fouille linux-commande.html
10
-n est utile lorsque vous cherchez une expression rationnelle qui commence par un tiret car si vous n'utilisez pas l'option -n, grep la considèrera comme une option !
sommaire
Les liens (ln)
Les liens forment un axe central du fonctionnement de linux. Qu'est ce qu'un lien ?
Un lien est un type spécial de fichier qui permet à plusieurs noms de fichiers de faire référence au même fichier sur le disque.
On doit distinguer deux sortes de liens :
les liens durs associent deux ou plusieurs fichiers à un même espace sur le disque, les deux fichiers sont pourtant indépendants. On peut dire que physiquement les fichiers sont les mêmes mais que virtuellement ils ne le sont pas. Prenons un exemple :
[delcros@mistra personnel]$ln linux-test /home/delcros/linux-test-lien-dur
le fichier linux-test-lien-dur est créé dans le répertoire /home/delcros. si vous faites un ls -l vous constaterez que linux-test et linux-test-lien ont la même taille. Au niveau de leur existence sous linux, ils sont indépendants. Mais sur le disque, il n'existe qu'un seul fichier, simplement linux-test-lien-dur et linux-test sont sur le même espace (ou inode) sur le disque dur lorsqu'on les appelle.
Ainsi si nous modifions le fichier linux-test-lien-dur, nous aurons automatiquement une modification du fichier linux-test (et vice et versa), car la modification s'effectuera physiquement sur le disque dur sur l'inode "partagé" par les deux fichiers.
Les liens symboliques :
si nous faisons maitenant un lien symbolique :
[delcros@mistra personnel]$ln -s linux-test /home/delcros/linux-test-lien-symb
Faites un ls -F dans le répertoire /home/delcros, vous verrez que le fichier linux-test-lien-symb est précédé du signe "@". Ce fichier pointe sur linux-test. Si vous avez fait un peu de programmation en C, nous retrouvons le concept de pointeur. Quand on appelle le fichier linux-test-lien-sym, il va automatiquement se diriger vers le fichier linux-test.
Quelles sont les points communs entre les liens symboliques et les liens durs ?
Le lien symbolique fait référence à un fichier dans un répertoire alors que le lien dur fait référence à un espace sur le disque dur.
- Les liens symboliques sont des fichiers de petite taille qui ont une existence propre sur le disque dur. Ces fichiers contiennent les références des fichiers sources auquels ils correspondent.
- Dans le cas d'un lien dur, la suppression de l'un des deux fichiers n'affectera pas l'autre. Dans le cas d'un lien symbolique, la suppression du fichier source entraînera un changement de comportement du fichier lien qui ne correspondra plus à un fichier valide et sera donc dit "cassé" ("broken").
Utilité des liens
Les liens sont utiles si vous souhaitez qu'un fichier apparaisse dans plusieurs répertoires, ou sous un nom différent. Imaginez que ce fichier fasse quelques megaoctets ... une copie à l'aide "cp" entraînera une perte de place non négligeable alors qu'un lien permettra de limiter l'utilisation de l'espace disque. Mieux :un lien garanti que toute modification effectuée sur ce fichier concernera toutes les apparentes « copies » dispersées.
Syntaxe de ln :
ln fichier-source fichier-lien ln -s permet d'effectuer un lien symbolique.
ln -b réalise une sauvegarde d'un fichier existant et dont nous aurions utilisé le nom avant de l'écraser.
ln -i demande à l'utilisateur s'il souhaite écraser le fichier qui a un lien sur le fichier source au cas ou celui-ci existerait déjà.
ln -d effectue des liens durs sur des répertoires ... seuls les utilisateurs possédant les droits adéquats pourront le faire.
sommaire
Le compactage et le décompactage des fichiers au format .gz : la commande gzip
Pour compacter un fichier, taper la commande suivante :
[delcros@mistra delcros]$ gzip non_du_fichier
Pour décompacter un fichier, taper la commande suivante :
[delcros@mistra delcros]$ gzip -d non_du_fichier.gz
sommaire
Le décompactage des fichiers avec la commande uncompress
Si vous rencontrez un fichier au format .Z ( un autre type de compression plus ancien, et moins performant), vous pouvez aussi utiliser gzip -d.
sommaire
Archivage de données : la commande "tar"
La commande tar permet d'archiver ou de désarchiver des répertoires et des fichiers de facon optimale.
Une des commandes dont vous aurez certainement le plus besoin est :
[root@mistra /]# tar xzf nom_du_fichier.tar.gz
Cette commande décompacte un fichier au format .tar.gz ou .tgz ; vous rencontrerez régulièrement ce genre de fichier en voulant par exemple récupérer des logiciels pour linux sur l'Internet. Le format .tar.gz indique que le fichier est en réalité une archive (.tar), c'est-à-dire que le fichier contient en réalité plusieurs fichiers, et qu'il est compacté (.gz). La commande précédente peut être ainsi comprise :
x (extract) permet d'extraire certains fichiers d'une archive (lorsque l'on ne spécifie pas les noms des fichiers que l'on souhaite extraire de l'archive, tar les extrait tous).
z décompacte l'archive
f extrait un fichier donné (ici le fichier est nom_du_fichier.tar.gz).
Une autre commande permet de connaître la liste des fichiers contenus dans un fichier .tar.gz ou tgz :
[root@mistra /]#tar tvzf nom_du_fichier.tar.gz
t affiche la liste des fichiers contenus dans une archive tar.
v est le mode "verbose", qui affiche les noms des fichiers tel qu'ils ont été archivés à l'origine.
C'est donc l'option t qui permet de voir comment les fichiers de l'archive seront désarchivés.
La commande suivante créera une archive de tout mon répertoire /home/delcros/personnel :
[delcros@mistra delcros]# tar cvfz personnel.tgz personnel
c indique à tar de créer une archive
z indique a tar de compacter une archive
Ainsi tout mon répertoire personnel, avec les sous répertoires et tous les fichiers, se trouveront rassemblés dans UN fichier archive : personnel.tgz
sommaire
Connaître l'espace disque utilisé (df et du)
La commande df permet de connaître l'emplacement de montage des systèmes de fichiers (partitions utilisables pour stocker des fichiers) accessibles sur votre système et les capacités restantes sur chacun d'eux.
[delcros@mistra delcros]$ df
Filesystem 1024-blocks Used Available Capacity Mounted on
/dev/sda5 298762 119387 163945 42% /
/dev/sda1 41166 17116 24050 42% /dos
/dev/sda6 1745186 1163946 491042 70% /usr
[delcros@mistra delcros]$
La commande du permet de connaître l'utilisation disque en kilo-octet par le répertoire spécifié et ses sous répertoires.
[delcros@mistra html]$ du
56 ./config
224 ./images
185 ./commandes
28 ./.xvpics
2 ./docs/preparation_debutantlinux
203 ./docs
875 .
[delcros@mistra html]$
sommaire
Contrôler les ressources utilisées par les processus
La commande "top" :
La commande top vous permet d'afficher des informations en continu sur l'activité du système. Elle permet surtout de suivre les ressources que les processus utilisent (quantité de RAM, pourcentage de CPU, la durée de ce processus depuis son demarrage).
Vous pourrez utiliser l'option -d pour spécifier des délais de rafraîchissement (en secondes).
En cours d'utilisation de top, il est possible de stopper un process de manière interactive en tapant k. top demande ensuite lquel signal il doit envoyer : 15 (SIGTERM) est le signal par défaut qui met fin à un process, 9 (SIGKILL) est plus brutal.
Pour quitter top, appuyer simplement sur la touche "q".
La commande "ps" :
La commande ps permet de connaître les processus actifs à un moment donné :
[delcros@mistra delcros]$ ps
PID TTY STAT TIME COMMAND
341 p1 S 0 : 00 bash
344 p2 S 0 : 00 bash
1039 p3 S 0 : 00 bash
1219 p3 R 0 : 00 ps
Le "PID" est l'identificateur d'un processus, c'est un nombre. Chaque processus est identifié dans le système par un nombre unique.
Le "TTY" indique à quel port de terminal est associé le processus.
"STAT" indique l'état dans lequel se trouve le processus. Dans l'exemple, trois processus sont endormis (S comme "sleep"), et un processus en cours d'exécution (R comme "run"). Le processus qui est en cours d'exécution n'est autre que la commande "ps" que nous venons de lancer.
Le "TIME" indique depuis combien de temps le processus utilise les ressources du microprocesseur.
Le "COMMAND" précise, comme son nom l'indique, la commande dont l'état est décrit par PID, TTY, STAT et TIME.
Ceci dit, une simple commande "ps" n'indique pas tous les processus du système. Le simple fait de lancer ps nous a juste indiquer les processus associés à un terminal et qui dépendent de l'utilisateur courant (ici "delcros").
En fait, il est tout a fait probable que d'autres processus non liés à un terminal aient été lancés par "delcros". J'en suis d'ailleurs sur, puisque actuellement j'utilise emacs pour réaliser cette modeste page de documentation et que pour visualiser le résultat, j'utilise netscape :
[delcros@mistra delcros]$ ps -x
PID TTY STAT TIME COMMAND
240 ? S 0:01 /usr/X11R6/bin/fvwm2
246 ? S 0:00 /usr/X11/bin/xautolock -corners ++++ -time 5 -locker /usr/X
247 ? S 0:00 /usr/X11/bin/unclutter -idle 3
253 ? S 0:00 /usr/local/bin/Periodic
254 ? S 7:34 emacs --background grey79 -geometry 80x58+-4+-11
257 p0 S 0:00 bash
258 p2 S 0:00 bash
259 p1 S 0:00 bash
272 ? S 0:00 /usr/lib/emacs/19.34/i386-gnu-linux/emacsserver
2134 ? S 0:00 /usr/bin/ispell -a -m -d francais
6431 p0 S 1:03 /usr/lib/netscape/netscape-navigator
6441 p0 S 0:00 (dns helper)
6741 p0 R 0:00 ps -x
Les commandes qui ne sont pas associées à un terminal sont reconnaissable par le point d'interrogation qui rempli le champs TTY.
Si vous voulez connaître tous les processus de la machine de tous les utilisateurs, il suffit d'utiliser l'option ax. Si en plus vous voulez connaître les utilisateurs associés à chaque processus, il vous suffit d'utiliser l'option aux. Vous verrez alors plusieurs colonnes s'ajouter dont "USER" qui indique à quel utilisateur appartient le processus. "%CPU" indique en pourcentage les ressources du microprocesseur utilisées par le processus. "%MEM" montre en pourcentage les ressources en mémoire vive utilisées par le processus. "RSS" donne réellement la mémoire utilisée en kilobytes par le processus. "START" indique l'heure à laquelle le processus a été lancé.
Comment être plus précis ? : -)
La commande "pstree" :
Cette commande permet d'afficher les processus sous forme d'arborescence et donc de voir leurs inter-dépendances :
[delcros@mistra delcros]$ pstree
init-+-crond
|-emacs---emacsserver
|-gpm
|-inetd
|-kerneld
|-kflushd
|-klodg
|-kswapd
|-loadmeter
|-lpd
|-6*[mingetty]
|-named
|-netscape---netscape
|-4*[nfsiod]
|-nxterm---slrn-gor---slrn
|-portmap
|-pppd |-rc.news---innwatch---sleep
|-rpc.mountd
|-rpc.nfsd
|-rpc.yppasswdd
|-sendmail
|-syslogd
|-update
|-xconsole
|-xdm-+-X
| `-xdm---Xsession---fvwm---FvwmPager
|-xterm---bash---su---bash---tail
|-2*[xterm---bash]
|-xterm---bash---pstree
\ -ypserv
On voit par exemple ici que j'utilise Fvwmpager qui depend en fait lui-même de fvwm et lui même dépend de Xwindow ici lancé grace à xdm (vous n'obtiendrez pas la même chose que moi si vous lancez Xwindow grâce à la commande startx, en effet xdm permet de lancer automatiquement Xwindow au démarrage de linux).
La commande "kill" :
La commande "kill" permet d'expédier un signal à un processus en cours.
Sa syntaxe est la suivante :
kill [options] PID
Par exemple, si j'ai lancé une connexion à l'Internet en PPP, un processus pppd sera en cours. Pour tuer le processus, je peux d'abord faire un ps -ax pour connaître le numero du PID de pppd et ensuite si par exemple le PID est 592, je peux tuer la connexion en faisant :
[root@mistra delcros]# kill 592
Vous remarquerez que je suis logué en utilisateur "root" pour faire ceci, en effet le processus pppd appartenait à l'utilisateur "root" et un autre utilisateur ne peut pas lui expédier de signal.
Si un processus vous résiste, c'est à dire que vous n'arrivez pas à le tuer, vous devez utiliser la commande : kill -9 PID (PID étant toujours le numéro de de processus).
La commande "killall" permet aussi de tuer un processus mais au lieu d'indiquer le PID vous indiquerez le nom du processus.
Mais attention, plusieurs processus peuvent utiliser la même commande. Ainsi, si vous tapez :
[delcros@mistra delcros]# killall grep
Vous tuerez tous les processus qui contiennent la commande grep. Je vous recommande donc d'utiliser l'option "-i" qui vous demande une confirmation avant de tenter d'arrêter un processus..
sommaire
La connexion de plusieurs commandes : les pipes
Qu'est ce qu'un "pipe" (parfois appelé « tube ») ? Si on le décrit ce n'est rien d'autre que cette barre verticale que vous pouvez obtenir avec la combinaison de touches "Altgr + 6" sur les clavier français classiques, ou "Altgr + 1" sur les claviers franco-belges. Un tube permet de passer le résultat d'une commande à autre commande. Un exemple permettra de comprendre tout cela beaucoup plus facilement :
Je veux savoir quels sont tous les processus "bash" qui fonctionnent sur le système, mais je veux que la commande ps aux ne me fournisse les lignes que les lignes qui contiennent le mot "bash" pour m'eviter d'avoir à parcourir toute la longue liste qu'affiche ps aux :
[delcros@mistra html]$ ps aux | grep bash
delcros 367 0.0 1.8 1600 568 p2 S 18 : 14 0 : 00 bash
delcros 426 0.0 2.2 1624 704 p3 S 18 : 17 0 : 00 bash
delcros 1261 0.0 2.2 1608 692 p6 S 21 : 22 0 : 00 bash
delcros 1332 0.0 2.4 1616 772 ? S 21 : 41 0 : 00 bash
delcros 1582 0.0 2.7 1604 844 p8 S 22 : 30 0 : 00 bash -rcfile .bashrc
delcros 2796 0.0 0.9 908 300 p3 S 02 : 17 0 : 00 grep bash
root 1162 0.0 2.1 1596 664 ? S 21 : 06 0 : 00 bash
On peut dire que l'on a "connecté" deux commandes entre elles. Mais vous pouvez ainsi en connecter autant que vous voulez en utilisant cette syntaxe :
commande1 | commande2 | commande3 ... | commandeN Si on se rend compte de l'utilité des pipes, progressivement on les utilise et on fini par ne plus s'en passer.
sommaire
Les redirections
Quand on parle de redirection, on parle plus précisemment de la redirection des entrées-sorties que traitent ou engendrent les programmes. Par exemple, lorsque vous tapez des commandes au prompt de linux, vous effectuez une entrée de caractère grâce au clavier et linux vous donne une sortie en vous donnant à l'écran le résultat de votre commande. Mais l'entrée de données peut se faire autrement que par le clavier, en indiquant par exemple un fichier qui contient des données à traiter. La sortie peut aussi s'effectuer ailleurs que sur l'écran, sur l'imprimante par exemple.
Ainsi, lorsque nous parlons des entrées sorties, nous parlons aussi des périphériques de l'ordinateur. On considérera que les périphériques sont des fichiers a part entière car, sous UNIX, des fichiers spéciaux permettent l'accès aux périphériques se trouvent dans le répertoire /dev. Dans la plupart des cas ce que l'on y copie va vers le périphérique.
Mais comment faire pour rediriger une entrée ou une sortie ?
Comment faire par exemple pour que la commande cat qui affiche un fichier à l'écran, sorte plutot le fichier dans un autre fichier ou vers une imprimante ? C'est le signe > qui va nous permettre de réaliser ceci.
Il est temps de prendre un exemple....
Dans un premier cas, je veux que linux m'affiche le fichier test à l'ecran :
[delcros@mistra delcros]$ cat test
Vous allez voir s'afficher à l'écran le fichier test.
Dans un deuxième cas, je veux que linux place le fichier test dans un fichier test2 au lien de l'afficher à l'écran :
[delcros@mistra delcros]$ cat test > test2
Dans un troisième cas, je veux que linux imprime le fichier au lieu de l'afficher à l'écran :
[delcros@mistra delcros]$ cat test > /dev/lp0
Quelques constats s'imposent :
1- La sortie sur un autre fichier n'est rien d'autre avec la commande cat qu'une copie du fichier "test" en "test2". La commande cp nous permet aussi de faire cela.
2- Dans la redirection vers l'imprimante nous avons indiqué le fichier spécial /dev/lp0 qui correspond au port LPT1 où est connectée mon imprimante.
La commande cat affiche son résultat vers la sortie standard qui est le terminal.
Par défaut le terminal est la sortie standard, ce descripteur de fichier est désigné par le chiffre "1"
L'entrée standard dans un système UN*X est le clavier et est désigné par le chiffre "0".
Il existe un troisième descripteur de fichier qui est la sortie des erreurs produites par l'exécution d'une commande.
La sortie des erreurs se fait par défaut sur le terminal et est désigné par le chiffre "2".
Plusieurs types de redirection existent :
"> fichier" qui permet de rediriger le résultat d'une commande vers une sortie que nous choisissons.
"< fichier" permet de spécifier une entrée standard.
">> fichier" permet comme le signe ">" de rediriger la sortie standard vers un fichier, mais si le fichier spécifié existe déjà, la sortie sera ajouté à ce qui existe déjà dans le fichier alors qu'avec un simple "> le fichier spécifié serait écrasé.
"<> fichier" permet de spécifier un fichier comme étant en même temps l'entrée standard et la sortie standard.
"n> fichier" permet de rediriger la sortie d'un des descripteurs de fichiers vers un fichier. Par exemple, si vous souhaitez obtenir les erreurs standards dans un fichier vous n'aurez qu'à utiliser cette syntaxe :
commande 2> erreurs
"n< fichier" permet de spécifier un fichier comme étant un des descripteurs de fichier.
">&n" permet de dupliquer la sortie standard vers un des descripteurs de fichier.
"<&n" permet de dupliquer l'entrée standard depuis un des descripteurs de fichier.
"&> fichier" permet de rediriger la sortie standard et l'erreur standard vers un seul et même fichier.
À première vue, on se demande bien à quoi peut servir certaines des redirections ...
On les découvre au fur et à mesure, mais une des plus utiles est 2>&1 qui permet de rediriger les erreurs vers la sortie standard. Elle est très appréciée des utilisateurs lorsque par exemple ceux-ci n'arrivent pas à lancer l'interface X-Window. Il est alors courant de recourir à la commande suivante afin d'obliger X à placer tous ses messages dans un fichier nommé erreursX que l'on pourra consulter ensuite à loisir :
[delcros@mistra delcros]$ startx 2>&1 erreursX.tmp
Jeu 28 Nov - 8:07 par arsenepoutsi
» CCNA version 4 français
Dim 31 Mar - 15:15 par kadhouceeee
» Trés important " Livre exercices en langage C ( claude delannoy) "
Jeu 27 Sep - 16:31 par latifa oustouh
» Ulead VideoStudio 11.5.0157.2 Plus + Crack Collection
Jeu 26 Avr - 9:51 par miloduvi
» Langage IDL(Interface Definition Language)
Mar 27 Sep - 13:02 par Abdelkhalek Bakkari
» demande cours PHP
Jeu 2 Juin - 11:23 par elasriahmed
» exemple page web réaliser avec du html et JavaScript
Lun 30 Mai - 4:05 par ouh.rouchan.zakaria
» cours group2_ 2année 2011
Dim 20 Mar - 15:35 par El Maligno Angelo
» Cours : Infrastructures Réseaux 2003 Server
Mar 15 Fév - 6:55 par jettjackson
» cours officiel de CCNA 2
Mar 18 Jan - 13:53 par agares