Aller au menu - Aller au contenu

[Plan du site] Vous êtes ici --- > Le Site du Zéro > Les tutoriels > Non-Officiels > Systèmes d'exploitation > Linux > Apprenez le Shell > Initiation aux lignes de commande > Créer et supprimer > Lecture du tutoriel

Créer et supprimer

Vous vous apprêtez à lire un tutoriel rédigé par un membre de ce site. Malgré tout le soin que ce membre a pu apporter au tutoriel, nous ne pouvons pas garantir que les informations contenues sur cette page sont exactes à 100%. Merci de garder cela en tête lorsque vous lirez cette page ;o)
Avatar
Auteur : Jarvis
Note : 19 / 20 (5 votes)
Visualisations : 14 289


Plus d'informations Plus d'informations
Nous avons vu dans le précédent chapitre comment se déplacer dans l'arborescence, et comment en visionner les fichiers ; nous allons voir maintenant comment on peut y créer et supprimer des fichiers. :)
Sommaire du chapitre :
Icône du chapitre
Chapitre précédent Sommaire Chapitre suivant

Créer des fichiers

Nous allons déjà voir comment créer un fichier ordinaire vide...

Voici deux façons pour créer des fichiers vides :

>



On peut déjà utiliser > :
Code : Console
$ > fichierVide

Cela crée dans le répertoire courant un fichier vide, ayant pour nom fichierVide.

J'ai utilisé le chemin relatif (en effet, on tient compte du répertoire où l'on est actuellement) : n'oubliez pas ce que vous connaissez déjà, il est tout à fait possible d'utiliser le chemin absolu :
Code : Console
$ > ~/fichierVide

ou :
Code : Console
$ > /home/jarvis/fichierVide


Cependant, > n'est pas très pratique car il est impossible de créer plusieurs fichiers vides en même temps, et si le fichier existe déjà, le fichier est automatiquement remplacé.


touch



touch permet de créer un ou plusieurs fichiers vides en même temps :

Code : Console
$ touch fichiervide1 fichiervide2 fichiervide3


Cette fonction permet aussi de mettre à jour les fichiers s'ils existent déjà : elle ne les suppriment donc pas. :)


Encore une fois, vous pouvez utilisez le chemin absolu ou relatif, vous pouvez donc créer des fichiers vides dans différents répertoires. Cela peut permettre d'éviter d'inutiles cd. ;)
Image utilisateur


Ces deux premières fonctions ne sont pas, pour l'instant, très utiles, mais je pense que si vous voulez manipuler des fichiers sans avoir peur de supprimer ou d'en endommager un, autant créer des fichiers qui n'ont pas d'importance pour vous...


CARACTÈRES PARTICULIERS



Bon : j'ai un gros gros problème : j'arrive pas à créer le fichier "je t'aime Jarvis.txt"... :(


En fait, il existe des caractères particuliers en shell (ce sont des caractères utiles pour le shell, comme l'étoile : "*", l'espace : " ", etc.), et dans ce nom de fichier, il y en a 3 : l'espace entre le "je" et le "t", le "'" et l'espace entre aime et Jarvis.
Pour réussir à éviter cela, il faut banaliser le caractère en mettant un anti-slash [\] devant chaque caractère particulier.
Code : Console
$ touch je\ t\'aime\ Jarvis.txt


Il y a le même problème pour d'autres commandes comme cd, ls, ...


J'imagine que l'anti-slash est aussi un caractère particulier...

Oui, il suffit d'écrire deux anti-slash pour en faire apparaitre un. :)

Et si je ne sais pas si mon caractère est particulier, je fais quoi ?

Eh bien mettez un anti-slash devant, ça ne vous coûte rien :
Code : Console
$ touch \j\e\ t\'aime\ \J\a\r\v\i\s\.\t\x\t


Autre solution : les guillemets :
Code : Console
$ touch "je t'aime Jarvis.txt"

Mais cela n'évite pas le problème si on veut créer un fichier qui a un ou plusieurs guillemets, il faut le banaliser :
Code : Console
$ touch "une zero m'a dit "je t'aime Jarvis".txt"


mkdir : MaKe DIRectory



Pour créer un répertoire, on utilise la commande mkdir.
Exemple :
Code : Console
$ mkdir monPremierRepertoire


Vous pouvez comme pour touch en créer plusieurs en même temps :
Code : Console
$ cd

$ mkdir repertoire1 ~/repertoire2 ~/repertoire1/sousrepertoire1 repertoire2/sousrepertoire2

L'ordinateur "va" dans votre répertoire personnel (cd), puis il crée un repertoire1 (en utilisant le chemin relatif) puis un répertoire2 (en utilisant le chemin absolu), et ensuite dans le répertoire1, un sousrepertoire1, et enfin dans le répertoire2, un sousrepertoire2.
Image utilisateur

Le tout, en deux lignes. :)

Encore une fois, n'oubliez pas d'utiliset le chemin relatif et le chemin absolu.



Je vous conseille de créer un répertoire shell dans votre répertoire personnel : ce sera votre espace de travail (cela vous évitera de faire des bétises :-° ), puis d'y créer des répertoires et des fichiers vides.
Exemple :
Code : Console
$ cd

$ mkdir shell shell/essai1 shell/essai2 shell/essai1/essai1a

$ touch shell/fichier0 shell/essai1/fichier1 shell/essai2/fichier2 shell/essai1/essai1a/fichier1a

Image utilisateur


Supprimer des fichiers

Comme pour créer un fichier, pour supprimer un fichier, il faut distinguer les fichiers ordinaires et les répertoires. :)

Les deux fonctions suivantes vont permettre de supprimer des fichiers, mais il n'y pas de message du genre : "Êtes-vous sûr de supprimer le fichier..." pour confirmer : il n'y a pas non plus de corbeille pour récupérer les données...


rm : ReMove



La fonction rm permet de supprimer des fichiers ordinaires. :)
Si vous avez fait exactement la même chose que chez moi, vous pouvez taper :
Code : Console
$ rm shell/fichier0 shell/essai1/fichier1 shell/essai2/fichier2 shell/essai1/essai1a/fichier1a


N'oubliez pas d'utiliser la touche Tab, cela sera plus rapide. :)


Image utilisateur



rmdir : ReMove DIRectory



rmdir permet de supprimer des répertoires vides. Ainsi, il est impossible avec cette commande de supprimer un répertoire qui a encore des fils :
Si vous me suivez toujours, tapez :
Code : Console
$ rmdir shell/essai1/essai1a shell/essai1 shell/essai2


N'oubliez pas d'utiliser la touche Tab, cela sera plus rapide. :)

Image utilisateur


Normalement, votre répertoire shell est vide.


Mais si j'ai beaucoup, vraiment beaucoup de fichiers, il n'y a pas plus rapide ?

L'étoile de la mort

Si, bien sûr!
Créez beaucoup de fichiers ordinaires dans votre répertoire shell, puis tapez :
Code : Console
$ rm shell/*

L'étoile remplace n'importe quelle chaîne de caractères.
Cela a donc supprimé tous les fichiers ordinaires dans le répertoire shell. :)
Image utilisateur


Supposons que vous ayez un (ou plusieurs) répertoire (coucou, pour l'exemple) dans le répertoire shell. Il va s'afficher un message d'erreur :
Code : Console
rm: cannot remove `shell/coucou': Is a directory

En effet, rm ne supprime pas les répertoires... Cependant, vous pouvez le vérifier, les fichiers ordinaires ont tous été supprimés. :)

Si vous ne voulez supprimer que les fichiers .txt, on fait :
Code : Console
$ rm shell/*.txt


S'il n'y a pas de fichier .txt, il va vous afficher cette erreur :
Code : Console
rm: cannot remove `shell/*.txt': No such file or directory


Les messages d'erreur peuvent changer selon la distribution, mais leur signification est la même.


Si vous ne voulez supprimer que les fichiers .txt commençant par un "a" et par "b", on fait :
Code : Console
$ rm shell/a*.txt shell/b*.txt


Etc.
Vous le voyez bien : on peut faire pas mal de choses avec l'étoile...

Il est tout à fait possible d'utiliser "*" avec rmdir.


Si vous tapez Code : Console
$ rm * .txt
, il va vous supprimer tous les fichiers ordinaires et le fichier .txt (s'il existe) du répertoire courant, à cause de l'espace entre l'étoile et .txt.

Une fonction qui va vous ouvrir de nouveaux horizons...

J'aimerais supprimer tout d'un coup un répertoire non vide... On fait comment ?
Il est tout à fait possible de faire cela, mais d'abord, je vais vous parler d'une autre commande...

man

man permet de connaître toutes les fonctionnalités d'une commande (retenez que man est une abréviation de manual :) ). Alors, comment utiliser cette commande ? Il suffit d'écrire man et d'ajouter le nom de la commande. :) Prenons la fonction rm : Code : Console
$ man rm
Pour faire défiler, on utilise 'entrée', ou les flèches (ligne par ligne) et espace (page par page).
Voilà ce qui s'affiche : (vous n'êtes pas obligés de tout lire :) ) Code : Console
RM(1) User Commands RM(1) NAME rm - remove files or directories SYNOPSIS rm [OPTION]... FILE... DESCRIPTION This manual page documents the GNU version of rm. rm removes each specified file. By default, it does not remove directories. If a file is unwritable, the standard input is a tty, and the -f or --force option is not given, rm prompts the user for whether to remove the file. If the response is not affirmative, the file is skipped. OPTIONS Remove (unlink) the FILE(s). -d, --directory unlink FILE, even if it is a non-empty directory (super-user only; this works only if your system supports unlink' for nonempty directories) -f, --force ignore nonexistent files, never prompt -i, --interactive prompt before any removal --no-preserve-root do not treat /' specially (the default) --preserve-root fail to operate recursively on /' -r, -R, --recursive remove directories and their contents recursively -v, --verbose explain what is being done --help display this help and exit --version output version information and exit By default, rm does not remove directories. Use the --recursive (-r or -R) option to remove each listed directory, too, along with all of its contents. To remove a file whose name starts with a -', for example -foo', use one of these commands: rm -- -foo rm ./-foo Note that if you use rm to remove a file, it is usually possible to recover the contents of that file. If you want more assurance that the contents are truly unrecoverable, consider using shred. AUTHOR Written by Paul Rubin, David MacKenzie, Richard Stallman, and Jim Mey‐ ering. REPORTING BUGS Report bugs to . COPYRIGHT Copyright © 2005 Free Software Foundation, Inc. This is free software. You may redistribute copies of it under the terms of the GNU General Public License . There is NO WARRANTY, to the extent permitted by law. SEE ALSO chattr(1), shred(1) The full documentation for rm is maintained as a Texinfo manual. If the info and rm programs are properly installed at your site, the com‐ mand info rm should give you access to the complete manual.
Pour quitter le manuel, appuyez sur q. :)
Vous pouvez vous amuser à regarder ce que fait man rmdir, man mkdir, man touch, man man...
man permet, entre autres, de savoir ce que fait la fonction avec des options...

rm -r

Prenons l'option qui nous intéresse : Code : Console
-r, -R, --recursive remove directories and their contents recursively
Eh oui, avec l'option -r, -R ou --recursive, vous pouvez supprimer des répertoires et leurs contenus. :) Vous pouvez taper soit : Code : Console
$ rm -r shell/ autreRepertoire/
soit : Code : Console
$ rm -R shell/ autreRepertoire/
soit : Code : Console
$ rm --recursive shell/ autreRepertoire/
Cela fait la même chose ! :) Cela supprime tous les fichiers à partir de shell (shell compris) et tous les fichiers à partir de autreRepertoire (autreRepertoire compris).
Image utilisateur

rm -i

Voici une autre option intéressante : Code : Console
-i, --interactive prompt before any removal
Elle permet de supprimer un fichier avec un message d'avertissement : Code : Console
$ touch fichier
Code : Console
$ rm -i fichier rm: détruire fichier régulier vide `fichier'? o
Vous pouvez aussi combiner les deux options : Code : Console
$ mkdir shell shell/essai1 shell/essai2 shell/essai1/essai1a $ touch shell/fichier0 shell/essai1/fichier1 shell/essai2/fichier2 shell/essai1/essai1a/fichier1a $ rm -ir shell/ rm: descendre dans le répertoire `shell/'? o rm: descendre dans le répertoire `shell//essai1'? o rm: descendre dans le répertoire `shell//essai1/essai1a'? o rm: détruire fichier régulier vide `shell//essai1/essai1a/fichier1a'? o rm: détruire répertoire `shell//essai1/essai1a'? o rm: détruire fichier régulier vide `shell//essai1/fichier1'? o rm: détruire répertoire `shell//essai1'? o rm: descendre dans le répertoire `shell//essai2'? o rm: détruire fichier régulier vide `shell//essai2/fichier2'? o rm: détruire répertoire `shell//essai2'? o rm: détruire fichier régulier vide `shell//fichier0'? o rm: détruire répertoire `shell/'? o

D'autres options utiles

Une dernière option intéressante avec rm : Code : Console
-v, --verbose explain what is being done
Cette option permet de savoir ce que la fonction est en train de faire. :)
Particulièrement intéressante quand une fonction (plus évoluée ;) ) bugge.
Code : Console
$ touch fichier $ rm -v fichier détruit `fichier'
Vous pouvez combiner les trois dernières options : Code : Console
$ rm -ivr shell/
L'option peut se mettre juste après la fonction, ou à la fin de la ligne de commande : Code : Console
$ rm --recursive -i shell/ -v
est tout à fait possible. :)
Une autre option peut être utile comme --version : Code : Console
$ rm --version rm (GNU coreutils) 5.93 Copyright © 2005 Free Software Foundation, Inc. Ce programme est un logiciel libre ; vous pouvez en redistribuer des copies selon les termes de la Licence Publique Générale GNU . il n'y a AUCUNE GARANTIE, jusqu'au point permis par la loi.

Vous connaissez maintenant les fonctions touch, mkdir, rm (et ses principales options), rmdir, man ainsi que l'utilisation de l'étoile.
Dans le prochain chapitre, nous allons apprendre à copier / coller et à couper / coller. :)
Chapitre précédent Sommaire Chapitre suivant
Retour en haut Retour en haut


Créé : le 20/05/2006 à 15:17:38
Modifié : le 22/08/2008 à 15:53:41
Avancement : 95%
Licence : Copie non autorisée

7 commentaires

Changer de design | En savoir plus | Plan du site | Politique d'accessibilité | Règles | RSS tutoriels | RSS news
Édité par Simple IT SARL : Nous contacter | Notre blog | Revue de presse | Publicité

Y'a plus rien à lire, faut remonter maintenant !

Hébergement web - Correction de tutoriels - Créer un site
Vous souhaitez apparaître ici ? Contactez-nous.

Nombre de connectés 393 Zéros connectés | Requêtes SQL 8 requêtes | Temps de génération de la page : Total (SQL) 0.1862s (0.1733s)