 |
Attention à la casse. Sous Linux, on fait souvent la différence entre les majuscules et minuscules. |
Quelques raccourcis plus avancés
Touche | Effet |
= | Indique où on est dans le fichier (numéro des lignes affichées et pourcentage). |
h | Affiche l'aide (toutes les commandes que l'on voit ici, sont tirées de là). Taper "q" pour sortir de l'aide. |
/ | Taper "/" suivi du texte que l'on recherche pour lancer le mode recherche. Faire Entrée pour valider. Pour ceux qui savent s'en servir, sachez que les expressions régulières sont acceptées (il y a un cours sur les expressions régulières dans le cours PHP). |
n | Après avoir fait une recherche avec "/", la touche "n" permet d'aller à la prochaine occurence de sa recherche. C'est un peu comme si on cliquait sur le bouton "Résultat suivant". |
N | Pareil que "n", mais pour revenir en arrière. |
Nota. La commande less est très riche. Se familiariser avec est très pratique.
head & tail : afficher le début et la fin d'un fichier
head : afficher le début du fichier
La commande head ("tête" en anglaif) affiche seulement les premières lignes du fichier. Elle ne permet pas de se déplacer dans le fichier comme less, elle permet juste de récupérer les premières lignes.
Reprenons notre fichier syslog :
Code : Console
alain@alain-pc01:/var/log$ head syslog
Nov 14 00:44:23 alain-pc01 syslogd 1.4.1#21ubuntu3: restart.
Nov 14 00:44:23 alain-pc01 anacron[6725]: Job `cron.daily' terminated
Nov 14 00:44:23 alain-pc01 anacron[6725]: Normal exit (1 job run)
Nov 14 00:44:25 alain-pc01 NetworkManager: eth1: link timed out.
Nov 14 00:44:51 alain-pc01 NetworkManager: eth1: link timed out.
La commande head est simple, nette et efficace pour récupérer les premières lignes d'un fichier.
Un paramètre à connaître : -n, suivi d'un nombre. Il permet d'afficher le nombre de lignes que l'on veut. Par exemple, si on ne veut que les 3 premières lignes, taper :
Code : Console
alain@alain-pc01:/var/log$ head -n 3 syslog
Nov 14 00:44:23 alain-pc01 syslogd 1.4.1#21ubuntu3: restart.
Nov 14 00:44:23 alain-pc01 anacron[6725]: Job `cron.daily' terminated
Nov 14 00:44:23 alain-pc01 anacron[6725]: Normal exit (1 job run)
tail : afficher la fin du fichier
La commande tail nous renvoie la fin du fichier, donc les dernières lignes.
Là encore utiliser -n suivi d'un nombre pour afficher les X dernières lignes
Code : Console
alain@alain-pc01:/var/log$ tail -n 3 syslog
Nov 14 22:42:08 alain-pc01 kernel: [ 7870.160000] eth1: no IPv6 routers present
Nov 14 23:11:26 alain-pc01 -- MARK --
Nov 14 23:17:01 alain-pc01 USR/SBIN/CRON[8515]: (root) CMD ( cd / && run-parts --report /etc/cron.hourly)
Un autre paramètre important : -f (f pour "follow", "suivre" en anglais).
Ce paramètre ordonne à tail de "suivre" la fin du fichier au fur et à mesure de son évolution.
Faire Ctrl + C (Ctrl et C en même temps) pour arrêter la commande tail.
 |
A connaître : la combinaison de touche Ctrl + C est utilisable dans la plupart des programmes console pour demander leur arrêt.
C'est un peu l'équivalent du Alt + F4 de Windows. |
Permet de voir ce qui se passe en temps réel sur un ordinateur. Noter que par défaut, tail -f recherche les nouveaux changements dans le fichier toutes les secondes. Si on veut, on peut rajouter le paramètre -s suivi d'un nombre. Par exemple, tail -f -s 3 syslog recherchera les changements toutes les 3 secondes (au lieu de toutes les secondes). Les nombres décimaux sont acceptés, à condition d'utiliser le point "." à la place de la virgule.
touch & mkdir : créer des fichiers et dossiers
touch : créer un nouveau fichier
En fait, il n'existe aucune commande spécialement faite pour créer un nouveau fichier vide sous Linux (ce n'est pas très utile). En général, on se contente d'ouvrir un éditeur de texte et d'enregistrer, ce qui provoque la création d'un nouveau fichier comme sous Windows.
La commande touch est à la base faite pour modifier la date de dernière modification d'un fichier. D'où son nom : on "touche" le fichier pour faire croire à l'ordinateur qu'on vient de le modifier alors qu'on n'a rien changé.
Si le fichier n'existe pas, il sera créé
La commande touch s'accompagne d'un paramètre : le nom du fichier à créer.
Comme on est dans /var/log, on va aller dans son dossier personnel
Code : Console
alain@alain-pc01:/var/log$ cd
alain@alain-pc01:~$
Pour le moment, il ne contient que des sous-dossiers :
Code : Console
alain@alain-pc01:~$ ls -F
Desktop/ | Examples@ | Images/ | Modèles/ | Public/ | Vidéos/ |
Documents/ | images/ | log/ | Musique/ | tutos/ | |
Créons un fichier appelé "fichierbidon" :
Code : Console
alain@alain-pc01:~$ touch fichierbidon
alain@alain-pc01:~$ ls -F
Desktop/ | Examples@ | images/ | log/ | Musique/ | tutos/ |
Documents/ | fichierbidon | Images/ | Modèles/ | Public/ | Vidéos/ |
En tapant ensuite la commande ls -F, on voit qu'un fichier appelé "fichierbidon" (sans extension) a été créé
On aurait pu créer un fichier avec une extension :
Code : Console
alain@alain-pc01:~$ touch autrefichierbidon.txt
alain@alain-pc01:~$ ls -F
autrefichierbidon.txt | Examples@ | Images/ | Musique/ | Vidéos/ |
Desktop/ | fichierbidon | log/ | Public/ |
Documents/ | images/ | Modèles/ | tutos/ |
De même, on peut créer plusieurs fichiers en une seule commande :
Code : Console
touch fichierbidon autrefichierbidon.txt
Si on veut que le nom du fichier contienne un espace, il faut l'entourer de guillemets :
Code : Console
touch "fichier bidon"
mkdir : créer un nouveau dossier
La commande mkdir, elle, est faite pour créer un nouveau dossier. Elle fonctionne de la même manière que touch.
Code : Console
mkdir mondossier
On peut créer 2 dossiers (ou plus) en même temps en les séparant là aussi par des espaces :
Code : Console
mkdir mondossier autredossier
Avec mkdir, il y a un paramètre qui sert à créer les dossiers intermédiaires. Exemple :
Code : Console
mkdir -p animaux/vertebres/chat
… créera le dossier animaux, puis à l'intérieur le sous-dossier vertebres, puis à l'intérieur encore le sous-dossier chat.
cp & mv : copier et déplacer un fichier
cp : copier un fichier
La commande cp (abréviation de "CoPy", "copier" en anglais) permet de copier un fichier… mais aussi de copier plusieurs fichiers à la fois, et même de copier des dossiers.
Pour copier le fichierbidon
que l'on a créé prédemment que l'on va appelé fichiercopie
Code : Console
cp fichierbidon fichiercopie
Le premier paramètre est le nom du fichier à copier, le second est le nom de la copie du fichier à créer.
En faisant cela, on aura donc 2 fichiers identiques dans le même répertoire : fichierbidon et fichiercopie.
 |
Ne pas oublier d'utiliser l'autocomplétion avec la touche Tab ! Lorsqu'on a écrit "cp fic", taper Tab, et fichierbidon devrait se compléter tout seul. |
Copier dans un autre dossier
Par exemple, si je veux copier fichierbidon dans le sous-dossier "mondossier" créé avant :
Code : Console
cp fichierbidon mondossier/
Le fichier fichierbidon sera copié dans mondossier sous le même nom
 |
Noter que mettre le / à la fin n'est pas obligatoire. Si il est là, c'est parce que l'autocomplétion en faisant Tab l'a ajouté automatiquement. |
Pour copier fichierbidon sous un autre nom :
Code : Console
cp fichierbidon mondossier/fichiercopie
Là, on a utilisé des répertoires relatifs, mais on peut aussi écrire un répertoire en absolu :
Code : Console
cp fichierbidon /var/log
… copiera fichierbidon dans le dossier /var/log.
Copier des dossiers
Avec l'option -R (R majuscule), on peut copier un dossier, ainsi que tous les sous-dossiers et fichiers qu'il contient.
Pour copier le dossier "animaux" qui contenait le sous-dossier "vertebres", contenant lui-même le dossier "chat", si on tape cette commande :
Code : Console
cp -R animaux autresanimaux
… a pour effet de copier animaux et tous ses sous-dossiers sous le nom "autresanimaux"
Utiliser le joker *
Le symbole * est appelé joker, ou encore wildcard en anglais sous linux.
Il permet de copier par exemple tous les fichiers image .jpg dans un sous-dossier :
Code : Console
cp *.jpg mondossier/
On peut aussi s'en servir pour copier tous les fichiers dont le nom commence par "so" :
Code : Console
cp so* mondossier/
Avec un outil comme le joker, la console devient progressivement plus puissante que l'explorateur de fichiers qu'on manipule à la souris.
mv : déplacer un fichier
Très proche de cp, la commande mv (MoVe, "déplacer" en anglais) a en fait 2 utilités :
- Déplacer un fichier (ou un dossier)
- Renommer un fichier (ou un dossier)
Déplacer un fichier
La commande mv s'utilise pratiquement comme cp :
Code : Console
mv fichierbidon mondossier/
De même, pour déplacer un dossier :
Code : Console
mv animaux/ mondossier/
… déplace le dossier animaux (et tous ses sous-dossiers) dans mondossier.
On peut aussi utiliser les jokers :
Code : Console
mv *.jpg mondossier/
Renommer un fichier
La commande mv permet de renommer un fichier. Par exemple :
Code : Console
mv fichierbidon superfichier
… renommera "fichierbidon" en "superfichier". Après cette commande, fichierbidon n'existe plus, il a été renommé.
Déplacer et renommer un fichier à la fois
Déplacer fichierbidon dans "mondossier" tout en lui affectant un nouveau nom :
Code : Console
mv fichierbidon mondossier/superfichier
 |
Ne pas oublier d'utiliser l'autocomplétion de fichiers et dossiers avec la touche Tab.
Autre chose : le symbole ".." signifie "dossier précédent", et "." signifie "dossier dans lequel je me trouve". Peut servir lorsqu'on copie ou déplace un fichier. |
rm : supprimer des fichiers et dossiers
Attention : il n'existe pas de corbeille dans la console de linux : le fichier est directement supprimé sans possibilité de récupération.
rm : supprimer un fichier
La commande rm (pour "ReMove", "supprimer" en anglais) peut supprimer un fichier, 2 fichiers, plusieurs fichiers, des dossiers, voire même l'ordinateur entier.
A utiliser avec précaution. Exemple, supprimons le fichierbidon :
Code : Console
rm fichierbidon
Rien à confirmer, le fichier est supprimé.
Pour supprimer plusieurs fichiers, on sépare leurs noms par des espaces :
Code : Console
rm fichierbidon fichiercopie
-i : demander confirmation
La commande -i permet de demander une confirmation pour chacun des fichiers :
Code : Console
alain@alain-pc01:~$ rm -i fichierbidon
rm: détruire fichier régulier vide `fichierbidon´?
Lorsqu'on demande une confirmation de type oui/non comme ici, on doit répondre par une lettre :
- o : signifie Oui. Sur certains systèmes anglais, il faudra peut-être utiliser "y" de Yes.
- n : signifie Non.
Taper ensuite sur Entrée pour valider.
-f : forcer la suppression, quoiqu'il arrive
A éviter.
-v : dis-moi ce que tu fais, petit cachotier
Le paramètre -v ("Verbose", verbeux en anglais, c'est-à-dire "parler beaucoup") est un paramètre que l'on retrouve dans beaucoup beaucoup de commandes sous Linux. Il permet de demander à la commande de dire ce qu'elle est en train de faire.
Comme on l'a vu, par défaut la commande rm est silencieuse. Si on supprime de très nombreux fichiers, ça peut prendre du temps. Pour éviter de s'impatientier, penser à utiliser -v :
Code : Console
alain@alain-pc01:~$ rm -v fichierbidon fichiercopie
détruit `fichierbidon´
détruit `fichiercopie´
On voit au fur et à mesure de l'avancement ce qui est en train d'être fait. Très pratique.
-r : supprimer un dossier et son contenu
Le paramètre -r peut être utilisé pour supprimer un dossier (au lieu d'un fichier) ainsi que tout ce qu'il contient : fichiers et dossiers.
A utiliser avec discernement car dangereux. Tout le contenu du dossier disparaîtera.
Code : Console
rm -r animaux/
 |
Il existe aussi la commande rmdir. La grosse différence avec rm -r, c'est que rmdir ne peut supprimer un dossier que s'il est vide ! Il faudra avoir fait le ménage dedans auparavant. |
rm et le joker de la Mort (qui tue)
L'erreur n°1 à ne pas faire sous Linux
Code : Console
NON NON NON NE JAMAIS FAIRE ÇA !!! => rm -rf /*
- rm : commande la suppression
- -r : suppression récursive de tous les fichiers et dossiers
- -f : force la suppression sans demander la moindre confirmation
- /* : supprime tous les fichiers et dossiers qui se trouvent à la racine (/) quel que soit leur nom (joker *).
En clair, cette commande supprime tout votre disque dur depuis la racine.
En fait, ce n'est pas tout à fait vrai. Il y a plusieurs mécanismes de protection. Voir le chapitre sur les droits. Par exemple, les dossiers à la racine appartiennent au super-utilisateur "root". La suppression sera refusé si on est pas loguer en tant que tel.
Le joker reste néanmoins très utile, mais faire très, très attention. Par exemple :
Code : Console
rm -rf *
… supprime tous les fichiers et sous-dossiers du dossier dans lequel je me trouve. Il n'y a qu'un seul caractère de différence (le /) avec la commande de la Mort.
ln : créer des liens entre fichiers
Permet de créer des raccourcis.
Ces "raccourcis", sont appellés liens sous Linux, plus complexes que sous Windows. En effet, on peut créer 2 types de liens :
- Des liens physiques
- Des liens symboliques
Ces 2 types ne fonctionnent pas de la même manière. Pour comprendre ce qui les différencie, il faut savoir comment un OS tel que Linux gère les fichiers sur le disque dur.
Le stockage des fichiers
Sur le disque dur, chaque fichier est grosso-modo séparé en 2 parties :
Donc, la liste des noms de fichiers est stockée à un autre endroit que leur contenu. Cette séparation aide Linux à s'organiser.
 |
Il y en fait 3 parties : le nom, les informations de gestion (droits d'accès) et le contenu.
Pour simplifier, on ne prend en compte que le nom et le contenu. |
Chaque contenu de fichier se voit attribuer un numéro d'identification appelé inode. Chaque nom de fichier est donc associé à un inode (son contenu).
Comment créer des liens physiques puis des liens symboliques.
Créer des liens physiques
Plus rarement utilisé que le lien symbolique.
Un lien physique permet d'avoir 2 noms de fichiers qui partagent exactement le même contenu, c'est-à-dire le même inode :
Que l'on passe par fichier1 ou par fichier2, on modifie exactement le même contenu. En quelque sorte, le fichier est le même. On peut juste y accéder via 2 noms de fichiers différents.
 |
On ne peut pas créer de liens physiques sur des répertoires. Cela ne fonctionne qu'avec les fichiers.
Il existe des options pour que ça fonctionne avec des répertoires mais c'est un peu particulier et on n'en parlera pas. Pour faire un "raccourci" vers un répertoire, on préfèrera utiliser un lien symbolique. |
Pour créer un lien physique, nous allons utiliser la commande ln. On va tout d'abord créer un répertoire pour nos tests :
Code : Console
mkdir tests
cd tests
Une fois dans ce dossier, créons un fichier avec la commande touch par exemple :
Code : Console
touch fichier1
créons un lien physique : on crée un "fichier2" qui partagera le même inode (le même contenu) que "fichier1". Taper :
Code : Console
ln fichier1 fichier2
Si on liste les fichiers du répertoire, on a l'impression d'avoir 2 fichiers différents :
Code : Console
alain@alain-pc01:~/tests$ ls -1
total 0
-rw-r--r-- 2 alain alain 0 2008-07-31 13:55 fichier1
-rw-r--r-- 2 alain alain 0 2008-07-31 13:55 fichier2
A priori, rien ne permet ici de deviner que ces fichiers modifient le même contenu. Le lien physique est donc un lien dur, pas évident à détecter au premier coup d'œil.
 |
La seconde colonne de la liste (qui indique "2" pour chacun des fichiers) correspond au nombre de fichiers qui partagent le même inode. C'est le seul indice qui permet de savoir que quelqu'un a fait un lien physique, mais on ne peut pas savoir lequel. Le seul moyen de vérifier que ces fichiers partagent le même contenu, c'est de faire ls -i pour afficher les numéros d'inode correspondants et de vérifier que ces 2 fichiers sont associés au même inode.
En temps normal, sur la plupart des fichiers la seconde colonne indique donc "1". Si c'est un dossier, ce nombre indique en revanche le nombre de fichiers à l'intérieur. |
Si on supprime un des deux fichiers, l'autre fichier reste en place et le contenu sera toujours présent sur le disque. L'inode est supprimé uniquement quand plus un seul nom de fichier ne pointe dessus.
Donc, supprimer "fichier1" pour voir. On voit que "fichier2" existe toujours et qu'il affiche toujours le même contenu. Il faut supprimer fichier1 ET fichier2 pour supprimer le contenu.
Créer des liens symboliques
Les liens symboliques ressemblent plus aux "raccourcis" comme sous Windows. La plupart du temps, on crée des liens symboliques sous Linux pour faire un raccourci, et non des liens physiques qui sont un peu particuliers.
Le principe du lien symbolique est que l'on crée un lien vers un autre nom de fichier. Cette fois, on pointe vers le nom de fichier et non vers l'inode directement :
Supprimer le "fichier2" que nous avons créé auparavant (sous forme de lien physique) :
Code : Console
rm fichier2
Créer maintenant un nouveau fichier2, cette fois sous forme de lien symbolique. On utilise là encore la commande ln, mais cette fois avec le paramètre -s (s comme symbolique) :
Code : Console
ln -s fichier1 fichier2
Cette fois, la commande détaillée ls -l sera beaucoup plus précise :
Code : Console
alain@alain-pc01:~/tests$ ls -1
total 0
-rw-r--r-- 1 alain alain 0 2008-07-31 13:55 fichier1
lrwxrwxrwx 1 alain alain 0 2008-07-31 13:55 fichier2 -> fichier1
On note 2 choses :
- La toute première lettre de la seconde ligne est un "l" (comme link, c'est-à-dire lien).
- Tout à la fin de la seconde ligne, une flèche montre clairement que fichier2 pointe vers fichier1.
Les liens symboliques sont beaucoup plus faciles à repérer que les liens physiques.
Subtilités entre liens physiques et liens symboliques :
- Par exemple, si on supprime fichier2, il ne se passe rien de mal. Par contre, si on supprime fichier1, fichier2 pointera vers un fichier qui n'existe plus. Le lien symbolique sera cassé et ne servira donc plus à rien. On parle de "lien mort".
- D'autre part, l'avantage des liens symboliques est qu'ils fonctionnent aussi sur des répertoires, contrairement aux liens physiques.