16/11/2015
Manipuler les fichiers
Welcome to OpenClassrooms! By continuing on the site, you are agreeing to our use of cookies. Read more
OK
Home
Course
Reprenez le contr le l'aide de Linux !
Manipuler les fichiers
Reprenez le contr le l'aide de Linux !
2 < @ ?
Z
30 hours & Easy
License
MANIPULER LES FICHIERS
% $
-
Apr s avoir vu comment taient organis s les fichiers sous Linux, nous allons apprendre les manipuler !
Par exemple, comment faire pour afficher le contenu d'un fichier ?
Comment le d placer, le copier, le supprimer ?
C'est donc un chapitre la fois simple et riche qui vous attend, tout au long duquel vous allez apprendre beaucoup de nouvelles commandes basiques de Linux qu'il vous faut conna tre absolument !
cat & less : afficher un fichier
Nous allons d'abord voir comment afficher le contenu d'un fichier. Il y a en gros deux commandes basiques sous Linux qui permettent de faire cela :
cat ;
less .
Aucune de ces commandes ne permet d' diter un fichier, elles permettent juste de le voir. Nous tudierons l' dition plus tard, a m rite au moins un chapitre entier.
Mais& pourquoi deux commandes pour afficher un fichier ? Une seule n'aurait pas suffi ?
En fait, chacune a ses sp cificit s ! Nous allons les voir dans le d tail.
Pour nos exemples, nous allons travailler sur un fichier qui existe d j : syslog . Il se trouve dans le dossier /var/log . Commencez par vous y rendre :
mateo21@mateo21desktop:~$ cd /var/log
Ce dossier contient plusieurs fichiers de log, c'est- -dire des fichiers qui gardent une trace de l'activit de votre ordinateur. Vous pouvez en faire la liste si vous le voulez, en tapant ls :
mateo21@mateo21desktop:/var/log$ ls
acpid daemon.log.0 kern.log.0 scrollkeeper.log.2
acpid.1.gz daemon.log.1.gz kern.log.1.gz syslog
acpid.2.gz daemon.log.2.gz kern.log.2.gz syslog.0
acpid.3.gz daemon.log.3.gz kern.log.3.gz syslog.1.gz
acpid.4.gz debug lastlog syslog.2.gz
apparmor debug.0 lpr.log syslog.3.gz
apport.log debug.1.gz mail.err syslog.4.gz
apport.log.1 debug.2.gz mail.info syslog.5.gz
apport.log.2.gz debug.3.gz mail.log syslog.6.gz
apport.log.3.gz distupgrade mail.warn udev
apport.log.4.gz dmesg messages unattendedupgrades
apport.log.5.gz dmesg.0 messages.0 user.log
apt dmesg.1.gz messages.1.gz user.log.0
auth.log dmesg.2.gz messages.2.gz user.log.1.gz
auth.log.0 dmesg.3.gz messages.3.gz user.log.2.gz
auth.log.1.gz dmesg.4.gz news user.log.3.gz
auth.log.2.gz dpkg.log popularitycontest uucp.log
auth.log.3.gz dpkg.log.1 popularitycontest.0 wtmp
bittorrent dpkg.log.2.gz popularitycontest.1.gz wtmp.1
boot faillog popularitycontest.2.gz wvdialconf.log
bootstrap.log fontconfig.log popularitycontest.3.gz Xorg.0.log
btmp fsck pycentral.log Xorg.0.log.old
btmp.1 gdm samba
cups installer scrollkeeper.log
daemon.log kern.log scrollkeeper.log.1
Le fichier sur lequel nous allons travailler, syslog , contient des informations de log de ce qui s'est pass r cemment sur l'ensemble de votre ordinateur.
Vous noterez qu'il est fr quent de voir des fichiers sans extension sous Linux. Notre fichier s'appelle syslog tout court, et non pas syslog.txt ou syslog.log comme on pourrait avoir l'habitude de le voir sous Windows.
Un fichier sans extension peut tre ouvert et lu sans aucun probl me comme n'importe quel autre fichier.
cat : afficher tout le fichier
La commande cat permet d'afficher tout le contenu d'un fichier dans la console d'un coup.
Il vous suffit d'indiquer en param tre le nom du fichier que vous voulez afficher, en l'occurrence syslog :
mateo21@mateo21desktop:/var/log$ cat syslog
Nov 14 00:44:23 mateo21desktop syslogd 1.4.1#21ubuntu3: restart.
Nov 14 00:44:23 mateo21desktop anacron[6725]: Job `cron.daily' terminated
Nov 14 00:44:23 mateo21desktop anacron[6725]: Normal exit (1 job run)
Nov 14 00:44:25 mateo21desktop NetworkManager: <info> eth1: link timed out.
Nov 14 00:44:51 mateo21desktop NetworkManager: <info> eth1: link timed out.
Nov 14 00:45:08 mateo21desktop NetworkManager: <debug> [1194997508.332093] nm_device_802_11_wireless_get_activation_ap(): Forcing AP 'WIFI'
Nov 14 00:45:08 mateo21desktop NetworkManager: <info> User Switch: /org/freedesktop/NetworkManager/Devices/eth1 / WIFI
Nov 14 00:45:08 mateo21desktop NetworkManager: <info> Deactivating device eth1.
Nov 14 00:45:08 mateo21desktop NetworkManager: <info> Activation (eth1): cancelling...
Nov 14 00:45:08 mateo21desktop NetworkManager: <info> Activation (eth1) cancellation handler scheduled...
Nov 14 00:45:08 mateo21desktop NetworkManager: <info> Activation (eth1): waiting for device to cancel activation.
Nov 14 00:45:08 mateo21desktop NetworkManager: <info> Activation (eth1) cancellation handled.
Nov 14 00:45:08 mateo21desktop NetworkManager: <info> Activation (eth1): cancelled.
Nov 14 00:45:08 mateo21desktop NetworkManager: <info> SUP: sending command 'DISABLE_NETWORK 0'
T
console
console
console
https://openclassrooms.com/courses/reprenez le controle a l aide de linux/manipuler les fichiers
1/9
16/11/2015
Manipuler les fichiers
Nov 14 00:45:08 mateo21desktop NetworkManager: <info> SUP: sending command 'DISABLE_NETWORK 0'
Nov 14 00:45:08 mateo21desktop NetworkManager: <info> SUP: response was 'OK'
Nov 14 00:45:08 mateo21desktop NetworkManager: <info> SUP: sending command 'AP_SCAN 0'
Nov 14 00:45:16 mateo21desktop NetworkManager: nm_act_request_get_ap: assertion `req != NULL' failed
Nov 14 00:45:16 mateo21desktop NetworkManager: nm_act_request_get_stage: assertion `req != NULL' failed
Nov 14 00:45:16 mateo21desktop NetworkManager: <info> eth1: link timed out.
Publicité
Nov 14 00:45:21 mateo21desktop NetworkManager: nm_act_request_get_ap: assertion `req != NULL' failed
Nov 14 00:45:21 mateo21desktop NetworkManager: ap_is_auth_required: assertion `ap != NULL' failed
Nov 14 00:45:21 mateo21desktop NetworkManager: <info> Activation (eth1/wireless): association took too long (>120s), asking for new key.
Nov 14 00:45:21 mateo21desktop NetworkManager: nm_dbus_get_user_key_for_network assertion `req != NULL' failed
Nov 14 00:47:45 mateo21desktop init: tty4 main process (4517) killed by TERM signal
Nov 14 00:47:45 mateo21desktop init: tty5 main process (4518) killed by TERM signal
Nov 14 00:47:45 mateo21desktop init: tty2 main process (4520) killed by TERM signal
Nov 14 00:47:45 mateo21desktop init: tty3 main process (4522) killed by TERM signal
Nov 14 00:47:45 mateo21desktop init: tty1 main process (4524) killed by TERM signal
Nov 14 00:47:45 mateo21desktop init: tty6 main process (4525) killed by TERM signal
Nov 14 00:47:46 mateo21desktop avahidaemon[5390]: Got SIGTERM, quitting.
Nov 14 00:47:48 mateo21desktop exiting on signal 15
Nov 14 00:48:42 mateo21desktop syslogd 1.4.1#21ubuntu3: restart.
...
Comme le fichier est tr s gros (il fait plusieurs centaines de lignes), je n'ai pas copi tout ce qui s'est affich dans ma console.
Ne vous tonnez pas si vous voyez tout s'afficher d'un coup : c'est normal, c'est le but. La commande cat vous envoie tout le fichier la figure. Elle est plus adapt e lorsque l'on travaille sur de petits fichiers que sur des gros, car dans un cas comme celui-l , on
n'a pas le temps de lire tout ce qui s'affiche l' cran.
Il y a peu de param tres vraiment int ressants utiliser avec la commande cat , car c'est une commande somme toute tr s basique. On notera quand m me le param tre n qui permet d'afficher les num ros de ligne :
console
mateo21@mateo21desktop:/var/log$ cat n syslog
1 Nov 14 00:44:23 mateo21desktop syslogd 1.4.1#21ubuntu3: restart.
2 Nov 14 00:44:23 mateo21desktop anacron[6725]: Job `cron.daily' terminated
3 Nov 14 00:44:23 mateo21desktop anacron[6725]: Normal exit (1 job run)
4 Nov 14 00:44:25 mateo21desktop NetworkManager: <info> eth1: link timed out.
5 Nov 14 00:44:51 mateo21desktop NetworkManager: <info> eth1: link timed out.
6 Nov 14 00:45:08 mateo21desktop NetworkManager: <debug> [1194997508.332093]
...
less : afficher le fichier page par page
La commande cat est rapide. Trop rapide. Tout le fichier est lu et affich d'un coup dans la console, ce qui fait que l'on n'a pas le temps de le lire s'il est tr s gros.
C'est l qu'une autre commande comme less devient vraiment indispensable. La grosse diff rence entre less et cat , c'est que less affiche progressivement le contenu du fichier, page par page. a vous laisse le temps de le lire dans la console. :-)
Notez qu'il existe aussi une commande tr s proche : more . Pour faire simple, la diff rence entre more et less c'est que more est vieux et poss de peu de fonctionnalit s, tandis que less est beaucoup plus puissant et rapide. Bref, utilisez
less , mais si vous voyez un jour quelqu'un utiliser more , ne soyez pas surpris.
console
Comment a marche ? Eh bien la commande est tr s simple : less nomdufichier .
mateo21@mateo21desktop:/var/log$ less syslog
Nov 14 00:44:23 mateo21desktop syslogd 1.4.1#21ubuntu3: restart.
Nov 14 00:44:23 mateo21desktop anacron[6725]: Job `cron.daily' terminated
Nov 14 00:44:23 mateo21desktop anacron[6725]: Normal exit (1 job run)
Nov 14 00:44:25 mateo21desktop NetworkManager: <info> eth1: link timed out.
Nov 14 00:44:51 mateo21desktop NetworkManager: <info> eth1: link timed out.
Nov 14 00:45:08 mateo21desktop NetworkManager: <debug> [1194997508.332093] nm_device_802_11_wireless_get_activation_ap(): Forcing AP 'WIFI'
Nov 14 00:45:08 mateo21desktop NetworkManager: <info> User Switch: /org/freedesktop/NetworkManager/Devices/eth1 / WIFI
Nov 14 00:45:08 mateo21desktop NetworkManager: <info> Deactivating device eth1.
Nov 14 00:45:08 mateo21desktop NetworkManager: <info> Activation (eth1): cancelling...
Nov 14 00:45:08 mateo21desktop NetworkManager: <info> Activation (eth1) cancellation handler scheduled...
Nov 14 00:45:08 mateo21desktop NetworkManager: <info> Activation (eth1): waiting for device to cancel activation.
Nov 14 00:45:08 mateo21desktop NetworkManager: <info> Activation (eth1) cancellation handled.
Nov 14 00:45:08 mateo21desktop NetworkManager: <info> Activation (eth1): cancelled.
Nov 14 00:45:08 mateo21desktop NetworkManager: <info> SUP: sending command 'DISABLE_NETWORK 0'
Ce qui est int ressant pour nous ici, c'est que la commande less a arr t la lecture du fichier au bout de quelques lignes (la taille d'un cran de console). Cela vous laisse le temps de lire le d but du fichier.
On n'a lu pour le moment que les toutes premi res lignes du fichier.
Et comment lire la suite ?
Il y a quelques raccourcis clavier conna tre. ;-)
Les raccourcis basiques indispensables
Commen ons par les quelques raccourcis clavier les plus indispensables, conna tre absolument.
Espace : affiche la suite du fichier. La touche Espace fait d filer le fichier vers le bas d'un cran de console. C'est celle que j'utilise le plus souvent.
Entr e : affiche la ligne suivante. Cela permet donc de faire d filer le fichier vers le bas ligne par ligne.
Vous pouvez aussi utiliser la touche Fl che vers le bas .
d : affiche les onze lignes suivantes (soit une moiti d' cran). C'est un peu l'interm diaire entre Espace (tout un cran) et Entr e (une seule ligne).
b : retourne en arri re d'un cran.
Vous pouvez aussi appuyer sur la touche Page Up .
y : retourne d'une ligne en arri re.
Vous pouvez aussi appuyer sur la touche Fl che vers le haut .
u : retourne en arri re d'une moiti d' cran (onze lignes).
q : arr te la lecture du fichier. Cela met fin la commande less .
La casse des caract res est importante. Ainsi, si je vous dis qu'il faut appuyer sur la touche d , ce n'est pas un D majuscule (si vous essayez, vous verrez que a ne fonctionne pas). Sous Linux, on fait souvent la diff rence entre majuscules et
minuscules : souvenez-vous-en !
Si on tape Espace , on avance donc d'un cran dans le fichier :
Nov 14 00:47:45 mateo21desktop init: tty4 main process (4517) killed by TERM signal
https://openclassrooms.com/courses/reprenez le controle a l aide de linux/manipuler les fichiers
console
2/9
16/11/2015
Manipuler les fichiers
Nov 14 00:47:45 mateo21desktop init: tty4 main process (4517) killed by TERM signal
Nov 14 00:47:45 mateo21desktop init: tty5 main process (4518) killed by TERM signal
Nov 14 00:47:45 mateo21desktop init: tty2 main process (4520) killed by TERM signal
Nov 14 00:47:45 mateo21desktop init: tty3 main process (4522) killed by TERM signal
Nov 14 00:47:45 mateo21desktop init: tty1 main process (4524) killed by TERM signal
Nov 14 00:47:45 mateo21desktop init: tty6 main process (4525) killed by TERM signal
Nov 14 00:47:46 mateo21desktop avahidaemon[5390]: Got SIGTERM, quitting.
Nov 14 00:47:48 mateo21desktop exiting on signal 15
Nov 14 00:48:42 mateo21desktop syslogd 1.4.1#21ubuntu3: restart.
Nov 14 00:48:42 mateo21desktop kernel: Inspecting /boot/System.map2.6.2214generic
Nov 14 00:48:42 mateo21desktop kernel: Loaded 25445 symbols from /boot/System.map2.6.2214generic.
Nov 14 00:48:42 mateo21desktop kernel: Symbols match kernel version 2.6.22.
Nov 14 00:48:42 mateo21desktop kernel: No module symbols loaded kernel modules not enabled.
Nov 14 00:48:42 mateo21desktop kernel: [ 0.000000] Linux version 2.6.2214generic (buildd@palmer) (gcc version 4.1.3 20070929 (prerelease)
:
Quelques raccourcis plus avanc s
Ce ne sont pas des raccourcis que l'on utilise tous les jours, mais a vaut le coup de savoir qu'ils existent. :-)
= : indique o vous en tes dans le fichier (num ro des lignes affich es et pourcentage).
Publicité
h : affiche l'aide (toutes les commandes que je vous apprends ici, je les tire de l ). Tapez q pour sortir de l'aide.
/ : tapez / suivi du texte que vous recherchez pour lancer le mode recherche. Faites Entr e pour valider. Pour ceux qui savent s'en servir, sachez que les expressions r guli res sont accept es. Je ne vais pas vous faire un cours sur les expressions
r guli res ici, ce serait trop long, mais il y en a un dans mon cours sur le PHP Concevez votre site Web avec PHP et MySQL dans la m me collection.
n : apr s avoir fait une recherche avec / , la touche n vous permet d'aller la prochaine occurrence de votre recherche. C'est un peu comme si vous cliquiez sur le bouton R sultat suivant .
N : pareil que n , mais pour revenir en arri re.
Comme vous le voyez, la commande less est tr s riche. On peut utiliser beaucoup de touches diff rentes pour se d placer dans le fichier.
Prenez le temps de vous familiariser avec : c'est un peu perturbant au d but, mais lorsque vous aurez appris vous en servir, vous aurez d j fait un grand pas en avant& et puis a vous sera tr s utile plus tard, croyez-moi. ;-)
head & tail : afficher le d but et la fin d'un fichier
Quoiii ? Encore des commandes pour lire un fichier ?
Eh oui.
Et figurez-vous que celles-l aussi valent le coup d' tre connues. Comme quoi on en fait des commandes, rien que pour lire un fichier !
Ces deux commandes sont un peu l'oppos l'une de l'autre : la premi re permet d'afficher le d but du fichier, la seconde permet d'afficher la fin.
head : afficher le d but du fichier
La commande head ( t te en anglais) affiche seulement les premi res lignes du fichier. Elle ne permet pas de se d placer dans le fichier comme less , mais juste de r cup rer les premi res lignes.
mateo21@mateo21desktop:/var/log$ head syslog
Nov 14 00:44:23 mateo21desktop syslogd 1.4.1#21ubuntu3: restart.
Nov 14 00:44:23 mateo21desktop anacron[6725]: Job `cron.daily' terminated
Nov 14 00:44:23 mateo21desktop anacron[6725]: Normal exit (1 job run)
Nov 14 00:44:25 mateo21desktop NetworkManager: <info> eth1: link timed out.
Nov 14 00:44:51 mateo21desktop NetworkManager: <info> eth1: link timed out.
Nov 14 00:45:08 mateo21desktop NetworkManager: <debug> [1194997508.332093] nm_device_802_11_wireless_get_activation_ap(): Forcing AP 'WIFI'
Nov 14 00:45:08 mateo21desktop NetworkManager: <info> User Switch: /org/freedesktop/NetworkManager/Devices/eth1 / WIFI
Nov 14 00:45:08 mateo21desktop NetworkManager: <info> Deactivating device eth1.
Nov 14 00:45:08 mateo21desktop NetworkManager: <info> Activation (eth1): cancelling...
Nov 14 00:45:08 mateo21desktop NetworkManager: <info> Activation (eth1) cancellation handler scheduled...
Si vous avez juste besoin de r cup rer les premi res lignes d'un fichier, head est donc la commande qu'il vous faut. Simple, net, efficace.
Comment ? Vous voulez des param tres ?
Je n'en ai pas beaucoup vous offrir, mais celui-l au moins est conna tre : n , suivi d'un nombre. Il permet d'afficher le nombre de lignes que vous voulez. Par exemple, si vous ne voulez que les trois premi res lignes, tapez :
mateo21@mateo21desktop:/var/log$ head n 3 syslog
Nov 14 00:44:23 mateo21desktop syslogd 1.4.1#21ubuntu3: restart.
Nov 14 00:44:23 mateo21desktop anacron[6725]: Job `cron.daily' terminated
Nov 14 00:44:23 mateo21desktop anacron[6725]: Normal exit (1 job run)
Et voil le travail !
tail : afficher la fin du fichier
Tr s int ressante aussi (voire m me plus), la commande tail vous renvoie la fin du fichier, donc les derni res lignes.
mateo21@mateo21desktop:/var/log$ tail syslog
Nov 14 22:42:10 mateo21desktop NetworkManager: <info> Clearing nscd hosts cache.
T
console
console
console
Nov 14 22:42:10 mateo21desktop NetworkManager: <WARN> nm_spawn_process(): nm_spawn_process('/usr/sbin/nscd i hosts'): could not spawn process. (Failed to execute child process "/usr/sbin/nscd" (No such file or directory))
Nov 14 22:42:10 mateo21desktop NetworkManager: <info> Activation (eth1) Finish handler scheduled.
Nov 14 22:42:10 mateo21desktop NetworkManager: <info> Activation (eth1) Stage 5 of 5 (IP Configure Commit) complete.
Nov 14 22:42:10 mateo21desktop NetworkManager: <info> Activation (eth1) successful, device activated.
Nov 14 22:41:57 mateo21desktop ntpdate[8422]: step time server 91.189.94.4 offset 13.401451 sec
Nov 14 22:41:59 mateo21desktop avahidaemon[5385]: Registering new address record for fe80::219:d2ff:fe61:900a on eth1.*.
Nov 14 22:42:08 mateo21desktop kernel: [ 7870.160000] eth1: no IPv6 routers present
Nov 14 23:11:26 mateo21desktop MARK
Nov 14 23:17:01 mateo21desktop /USR/SBIN/CRON[8515]: (root) CMD ( cd / && runparts report /etc/cron.hourly)
On peut l encore utiliser n suivi d'un nombre pour afficher les $x$ derni res lignes :
mateo21@mateo21desktop:/var/log$ tail n 3 syslog
Nov 14 22:42:08 mateo21desktop kernel: [ 7870.160000] eth1: no IPv6 routers present
Nov 14 23:11:26 mateo21desktop MARK
Nov 14 23:17:01 mateo21desktop /USR/SBIN/CRON[8515]: (root) CMD ( cd / && runparts report /etc/cron.hourly)
Mais ce n'est pas tout ! Il y a un autre param tre c t duquel vous ne pouvez pas passer : f (f pour follow, suivre en anglais).
Ce param tre magique ordonne tail de suivre la fin du fichier au fur et mesure de son volution.
C'est extr mement utile pour suivre un fichier de log qui volue souvent. Vous pouvez tester sur syslog par exemple :
mateo21@mateo21desktop:/var/log$ tail f syslog
Nov 14 23:11:26 mateo21desktop MARK
Nov 14 23:17:01 mateo21desktop /USR/SBIN/CRON[8515]: (root) CMD ( cd / && runparts report /etc/cron.hourly)
Nov 14 23:27:52 mateo21desktop kernel: [10614.344000] ata2.00: exception Emask 0x0 SAct 0x0 SErr 0x0 action 0x2 frozen
console
console
https://openclassrooms.com/courses/reprenez le controle a l aide de linux/manipuler les fichiers
3/9
16/11/2015
Manipuler les fichiers
Nov 14 23:27:52 mateo21desktop kernel: [10614.344000] ata2.00: cmd a0/00:00:00:00:20/00:00:00:00:00/a0 tag 0 cdb 0x0 data 0
Nov 14 23:27:52 mateo21desktop kernel: [10614.344000] res 40/00:03:00:00:00/00:00:00:00:00/a0 Emask 0x4 (timeout)
Nov 14 23:27:57 mateo21desktop kernel: [10619.388000] ata2: port is slow to respond, please be patient (Status 0xd0)
Nov 14 23:28:02 mateo21desktop kernel: [10624.392000] ata2: device not ready (errno=16), forcing hardreset
Nov 14 23:28:02 mateo21desktop kernel: [10624.392000] ata2: soft resetting port
Nov 14 23:28:02 mateo21desktop kernel: [10624.928000] ata2.00: configured for UDMA/33
Nov 14 23:28:02 mateo21desktop kernel: [10624.928000] ata2: EH complete
Le probl me de syslog c'est qu'il n' volue pas forc ment toutes les secondes. Mais si vous tes patients et que vous regardez votre console, vous devriez le voir crire de nouvelles lignes sous vos yeux au bout d'un moment.
Faites Ctrl + C ( Ctrl et C en m me temps) pour arr ter la commande tail .
conna tre : la combinaison de touches 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.
Pour tout vous dire, tail f est une de mes commandes pr f r es sous Linux. C'est un bon moyen de surveiller ce qui se passe en temps r el sur un ordinateur (si vous tes assez rapides pour suivre).
Par exemple, les logs Apache du Site du Z ro permettent de voir en temps r el qui se connecte sur le site, avec quelle IP, quel fichier a t charg , quelle heure, etc.
Aux heures d'affluence du site, ce fichier volue tellement vite qu'il est pratiquement impossible de le suivre pour un humain.
Je vous ai fait une petite vid o d'un tail f en action pour que vous vous rendiez compte de la chose. Elle est accessible par t l chargement (380 Ko) :
Notez que par d faut, tail f recherche les nouveaux changements dans le fichier toutes les secondes. Si vous voulez, vous pouvez rajouter le param tre s suivi d'un nombre. Par exemple, tail f s 3 syslog recherchera les changements toutes
les trois secondes (plut t que 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
Assez lu de fichiers, maintenant voyons voir comment on les cr e !
Nous allons d'abord voir comment cr er un fichier, puis comment cr er un dossier, car ce n'est pas la m me commande&
touch : cr er un fichier
T
En fait, il n'existe aucune commande sp cialement faite pour cr er un 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 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 que l'on n'a rien chang . a peut se r v ler utile dans
certains cas pr cis qu'on ne verra pas ici.
L'int r t de touch pour nous dans ce chapitre, c'est que si le fichier n'existe pas, il sera cr ! On peut donc aussi utiliser touch pour cr er des fichiers, m me s'il n'a pas vraiment t fait pour a la base.
Publicité
La commande attend un param tre : le nom du fichier cr er.
Commencez par vous rendre dans votre dossier personnel ; ce n'est pas une bonne id e de mettre le bazar dans /var/log , le dossier personnel est l pour a.
Si vous vous souvenez bien, il suffit de taper cd :
mateo21@mateo21desktop:/var/log$ cd
mateo21@mateo21desktop:~$
Pour le moment, mon dossier personnel ne contient que des sous-dossiers :
mateo21@mateo21desktop:~$ ls F
Desktop/ Examples@ Images/ Mod les/ Public/ Vid os/
Documents/ images/ log/ Musique/ tutos/
Cr ons un fichier appel fichierbidon :
mateo21@mateo21desktop:~$ touch fichierbidon
mateo21@mateo21desktop:~$ ls F
Desktop/ Examples@ images/ log/ Musique/ tutos/
Documents/ fichierbidon Images/ Mod les/ Public/ Vid os/
La commande ls F que j'ai tap e ensuite le montre, un fichier appel fichierbidon (sans extension) a t cr . Bien entendu, vous pouvez cr er un fichier de l'extension que vous voulez :
mateo21@mateo21desktop:~$ touch autrefichierbidon.txt
mateo21@mateo21desktop:~$ ls F
autrefichierbidon.txt Examples@ Images/ Musique/ Vid os/
Desktop/ fichierbidon log/ Public/
Documents/ images/ Mod les/ tutos/
Autre information int ressante : vous pouvez cr er plusieurs fichiers en une seule commande. Il vous suffit de les lister l'un apr s l'autre, s par s par des espaces.
Ainsi, on aurait pu cr er nos deux fichiers comme ceci :
touch fichierbidon autrefichierbidon.txt
Et si je veux que mon fichier contienne un espace, je fais comment ?
Entourez-le de guillemets !
touch "Fichier bidon"
mkdir : cr er un dossier
La commande mkdir , elle, est faite pour cr er un dossier. Elle fonctionne de la m me mani re que touch .
mkdir mondossier
On peut cr er deux dossiers (ou plus !) en m me temps en les s parant l aussi par des espaces :
mkdir mondossier autredossier
Si vous faites un ls , vous verrez que les dossiers ont bien t cr s. :-)
Il y a un param tre utile avec mkdir : p . Il sert cr er tous les dossiers interm diaires. Par exemple :
mkdir p animaux/vertebres/chat
console
console
console
console
console
console
console
console
console
& cr era le dossier animaux , puis l'int rieur le sous-dossier vertebres , puis l'int rieur encore le sous-dossier chat !
https://openclassrooms.com/courses/reprenez le controle a l aide de linux/manipuler les fichiers
4/9
16/11/2015
cp & mv : copier et d placer un fichier
Manipuler les fichiers
Parmi les op rations de base que l'on veut pouvoir faire avec les fichiers, il y a la copie et le d placement de fichier. C'est un peu le genre de chose que l'on fait tous les jours, il est donc important de savoir s'en servir.
cp : copier un fichier
La commande cp (abr viation de CoPy, copier en anglais) vous permet comme son nom l'indique de copier un fichier& mais aussi de copier plusieurs fichiers la fois, et m me de copier des dossiers !
Si on essayait de copier le fichier fichierbidon qu'on a cr tout l'heure ?
a fonctionne comme ceci :
cp fichierbidon fichiercopie
Le premier param tre est le nom du fichier copier, le second le nom de la copie du fichier cr er.
En faisant cela, on aura donc deux fichiers identiques dans le m me r pertoire : fichierbidon et fichiercopie .
N'oubliez pas d'utiliser l'autocompl tion avec la touche Tab ! Lorsque vous avez crit cp fic , tapez Tab , et fichierbidon devrait se compl ter tout seul !
Copier dans un autre dossier
On n'est pas oblig de copier le fichier dans le m me dossier, bien s r. On peut tr s bien utiliser le syst me de r pertoires relatifs et absolus qu'on a vu dans le chapitre pr c dent.
Par exemple, si je veux copier fichierbidon dans le sous-dossier mondossier que j'ai cr tout l'heure :
cp fichierbidon mondossier/
Le fichier fichierbidon sera copi dans mondossier sous le m me nom.
T
console
console
Notez que mettre le / la fin n'est pas obligatoire. Si vous le voyez l , c'est parce que l'autocompl tion me l'a automatiquement ajout lorsque j'ai appuy sur Tab . Ehhh oui, je suis tellement flemmard que je n' cris m me pas mondossier en
entier, j' cris juste mon suivi de Tab , et hop c'est crit en entier ! a va beaucoup plus vite lorsqu'on prend ce r flexe.
Si vous voulez copier fichierbidon dans mondossier sous un autre nom, faites comme ceci :
cp fichierbidon mondossier/fichiercopie
Avec cette commande, on aura cr une copie de fichierbidon dans mondossier sous le nom fichiercopie !
Enfin l , j'utilise des r pertoires relatifs, mais je peux aussi crire un r pertoire en absolu :
cp fichierbidon /var/log/
& copiera fichierbidon dans le dossier /var/log .
Copier des dossiers
Avec l'option R (un R majuscule !), vous pouvez copier un dossier, ainsi que tous les sous-dossiers et fichiers qu'il contient !
Tout l'heure, on a cr un dossier animaux qui contenait un autre dossier vertebres , qui lui-m me contenait le dossier chat . Si vous tapez cette commande :
cp R animaux autresanimaux
& cela aura pour effet de copier animaux ainsi que tous ses sous-dossiers sous le nom autresanimaux .
Faites des ls apr s pour v rifier que les sous-dossiers sont bien l et que je ne vous m ne pas en bateau !
Utiliser le joker *
Le symbole * est appel joker, ou encore wildcard en anglais sous Linux.
Il vous permet de copier par exemple tous les fichiers image .jpg dans un sous-dossier :
cp *.jpg mondossier/
Vous pouvez aussi vous en servir pour copier tous les fichiers dont le nom commence par so :
cp so* mondossier/
Le joker est un atout tr s puissant, n'h sitez pas l'utiliser !
C'est avec des outils comme le joker que la console deviendra pour vous progressivement plus puissante que l'explorateur de fichiers que vous manipulez la souris.
mv : d placer un fichier
Tr s proche de cp , la commande mv (MoVe, d placer en anglais) a en fait deux utilit s :
d placer un fichier (ou un dossier) ;
renommer un fichier (ou un dossier).
Publicité
Vous allez comprendre pourquoi.
D placer un fichier
La commande mv s'utilise pratiquement comme cp :
mv fichierbidon mondossier/
Au lieu de copier fichierbidon dans mondossier comme on l'a fait tout l'heure, ici on a juste d plac le fichier. Il n'existe plus dans son dossier d'origine.
Vous pouvez d placer des dossiers aussi simplement :
mv animaux/ mondossier/
& d placera le dossier animaux (et tous ses sous-dossiers) dans mondossier .
Vous pouvez aussi utiliser les jokers :
mv *.jpg mondossier/
console
console
console
console
console
console
console
console
https://openclassrooms.com/courses/reprenez le controle a l aide de linux/manipuler les fichiers
5/9
16/11/2015
Renommer un fichier
Manipuler les fichiers
La commande mv permet de faire quelque chose d'assez tonnant : renommer un fichier. En effet, il n'existe pas de commande sp ciale pour renommer un fichier en console sous Linux, c'est la commande mv qui est utilis e pour a.
Par exemple :
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
Vous pouvez aussi d placer fichierbidon dans mondossier tout en lui affectant un nouveau nom :
mv fichierbidon mondossier/superfichier
Et voil le travail !
Je vous conseille fortement de vous entra ner utiliser cp et mv dans tous les sens : avec ou sans joker, en d pla ant, renommant des dossiers, en d pla ant / renommant la fois, en utilisant des chemins relatifs et absolus, etc.
C'est assez intuitif normalement, mais il faut pratiquer et pas seulement se contenter de lire ce que j' cris pour que a rentre.
N'oubliez pas d'utiliser l'autocompl tion de fichiers et dossiers avec la touche Tab ; si vous ne le faites pas d s maintenant, vous perdrez du temps et vous trouverez la console nulle alors que vous devriez la trouver g niale.
Autre chose : le symbole .. signifie dossier pr c dent , et . signifie dossier dans lequel je me trouve . Vous pourriez en avoir besoin lorsque vous copiez ou d placez un fichier.
Si vous avez la t te qui tourne force de copier et d placer des fichiers dans des dossiers, c'est normal. a commence devenir un beau bazar dans vos dossiers d'ailleurs, non ?
Il est temps de faire un peu de m nage avec la commande permettant de supprimer : rm !
rm : supprimer des fichiers et dossiers
On attaque la commande qui f che : rm .
Pourquoi est-ce qu'elle f che ? Parce qu'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, plusieurs fichiers, des dossiers, voire m me votre ordinateur entier si vous le voulez.
Il faut donc l'utiliser avec pr caution. Commen ons par des choses simples, supprimons ce fichierbidon :
rm fichierbidon
Normalement, on ne vous demande pas de confirmation, on ne vous affiche rien. Le fichier est supprim sans autre forme d'avertissement. Brutal, hein ?
Vous pouvez aussi supprimer plusieurs fichiers en s parant leurs noms par des espaces :
rm fichierbidon fichiercopie
i : demander confirmation
La commande i permet de vous demander une confirmation pour chacun des fichiers :
mateo21@mateo21desktop:~$ rm i fichierbidon
rm: d truire fichier r gulier vide `fichierbidon'?
Lorsqu'on vous demande une confirmation de type oui/non comme ici, vous devez r pondre par une lettre :
o : signifie Oui . Sur certains syst mes anglais, il faudra peut- tre utiliser y de Yes ;
n : signifie Non .
Tapez ensuite sur Entr e pour valider.
f : forcer la suppression, quoi qu'il arrive
f , c'est un peu le contraire de i : c'est le mode des gros bourrins.
Ce param tre force la suppression, ne demande pas de confirmation, m me s'il y a un probl me potentiel.
En raison des risques que cela comporte, utilisez-le aussi rarement que possible.
rm f fichierbidon
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 de commandes sous Linux. Il permet de demander la commande de dire ce qu'elle est en train de faire.
Comme vous l'avez vu, par d faut la commande rm est silencieuse. Si vous supprimez de tr s nombreux fichiers, a peut prendre du temps. Pour viter que vous vous impatientiez, pensez utiliser v :
mateo21@mateo21desktop:~$ rm v fichierbidon fichiercopie
d truit `fichierbidon'
d truit `fichiercopie'
Vous voyez 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 !
C'est un param tre assez dangereux, faites donc bien attention de l'utiliser sur un dossier dont vous ne voulez vraiment plus, car tout va dispara tre l'int rieur :
rm r animaux/
& supprime le dossier animaux ainsi que tout ce qu'il contenait (sous-dossiers vertebres et chat ).
Notez qu'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 y avoir fait le m nage auparavant.
rm et le joker de la mort (qui tue)
Bon, vous tes grands, je crois que le moment est venu de vous r v ler un terrible secret : les enfants ne naissent pas dans les choux.
Euh pardon, je voulais dire : la commande rm est vraiment dangereuse. Tr s dangereuse. Vous pouvez potentiellement bousiller tout votre syst me avec !
T
console
console
console
console
console
console
console
console
https://openclassrooms.com/courses/reprenez le controle a l aide de linux/manipuler les fichiers
6/9
16/11/2015
Manipuler les fichiers
Je vais vous montrer quelque chose d'horrible, d'affreux, d'interdit aux moins de 18 ans, bref vous m'avez compris, le truc ne faire sous aucun pr texte, m me pas en cauchemar.
NON NON NON NE FAITES JAMAIS CA !!! => rm rf /*
console
Publicité
Je me suis permis de me...