CyberSDF

Reprenez la main sur votre numérique

Boîte d'archivage en carton kraft ouverte sur un plan de travail en bois clair huilé : trois compartiments nettement séparés garnis de chemises étiquetées, un compartiment fermé par une serrure métallique, une clé en laiton posée à côté, lumière naturelle latérale.

Fichiers et répertoires Linux : les manipuler sans perte

Pour manipuler vos fichiers et répertoires Linux sans perte, travaillez dans un répertoire temporaire et entraînez-vous sur des fichiers factices. Utilisez cp pour copier (avec cp -i avant une collision), mv pour déplacer ou renommer, rm pour supprimer en vérifiant la cible, find pour retrouver un fichier par nom, ls -l pour lire droits et taille, et stat ou file pour identifier un fichier. Si la cible n’est pas claire, vérifiez avec ls et arrêtez-vous.

Illustration : un dossier translucide, trois fichiers étiquettes note.txt, archive.txt et fiche avec espace.txt, une fenêtre de terminal avec les commandes mkdir, cp -i et ls -l, un badge vert validé et un signe rouge d'interdiction sur rm — pour un parcours sûr d'initiation aux fichiers et répertoires Linux.
Illustration éditoriale CyberSDF — manipulations de fichiers et répertoires dans un répertoire temporaire.

Comment préparer un espace d’exercice avant de manipuler des fichiers ?

L’idée est de travailler dans un dossier qui n’appartient à rien d’important. Si une commande échoue, le dossier disparaît avec le reste, et vos documents personnels restent intacts.

Reprenez l’espace /tmp/atelier-fichiers créé pour l’exercice

Entrez :

mkdir -p /tmp/atelier-fichiers
cd /tmp/atelier-fichiers

La première ligne crée un répertoire dédié à l’exercice, sous /tmp/ qui se vide à chaque redémarrage. La seconde vous y place. Il est normal que ces commandes n’affichent rien quand elles réussissent.

Vérifiez votre position avec pwd et ls

Entrez :

pwd
ls -la

pwd doit afficher /tmp/atelier-fichiers. ls -la doit afficher uniquement . et .., ce qui confirme que le répertoire est vide. Si vous voyez des noms de fichiers existants, vous n’êtes pas dans l’espace d’exercice.

Décidez de ne pas poursuivre si vous n’êtes pas dans cet espace

Avant d’écrire quoi que ce soit, vérifiez le chemin affiché. Si pwd renvoie votre dossier personnel, un répertoire de projet ou un emplacement que vous ne reconnaissez pas, stoppez ici. Ne transformez pas les exemples pour les appliquer « juste cette fois » à un dossier de photos ou de travail. Savoir s’arrêter est une compétence utile en ligne de commande Linux débutant.

Comment copier un fichier sans risque d’écrasement ?

La copie est l’opération la plus simple : elle duplique. Elle ne touche ni à la source ni à un fichier préexistant du même nom, sauf si vous lui demandez explicitement.

Copiez un fichier factice avec cp puis vérifiez avec ls -l

Créez d’abord un contenu, puis dupliquez-le :

printf 'Bonjour atelier\n' > note.txt
cp note.txt note-copie.txt
ls -l

La première ligne écrit un contenu simple ; la seconde duplique. La liste doit afficher deux fichiers de taille identique (16 octets), avec les mêmes droits. cp n’efface pas la source : c’est l’intérêt par rapport à un déplacement.

Utilisez cp -i pour demander confirmation avant d’écraser

Recommencez la même commande avec l’option d’interaction :

cp -i note.txt note-copie.txt

cp -i affiche un message avant d’écraser la cible existante :

cp: overwrite 'note-copie.txt'?

Si vous répondez n, la copie est refusée et la cible reste intacte. C’est le seul réflexe de collision documenté dans ce parcours.

Vérifiez l’absence d’écrasement involontaire

Avant toute copie, faites ls pour voir si la cible existe déjà. Si note-copie.txt apparaît déjà, ne relancez pas la copie sans passer par cp -i. Ce petit détour évite une perte silencieuse.

Copiez un répertoire avec cp -r sur un dossier vide de test

Préparez un sous-dossier vide et dupliquez-le :

mkdir sous-dossier-vide
cp -r sous-dossier-vide sous-dossier-copie
ls -lR

cp -r duplique une arborescence. Limitez cet usage aux dossiers créés pour l’exercice, jamais à un répertoire contenant des données personnelles : une copie mal ciblée recopie à votre insu des fichiers que vous vouliez garder ailleurs.

Comment déplacer ou renommer un fichier ?

mv fait deux choses : déplacer un fichier vers un autre dossier, ou le renommer. Sa limite tient en une phrase : il peut écraser silencieusement la cible si elle existe déjà.

Renommez avec mv puis vérifiez avec ls

mv note.txt archive.txt
ls -la

Le fichier change de nom, sans duplication. note.txt disparaît de la liste, archive.txt apparaît avec la même taille. Pour confirmer que le contenu est préservé :

cat archive.txt

La sortie doit afficher Bonjour atelier. Le contenu suit le renommage.

Déplacez avec mv vers un sous-dossier de l’exercice

Créez un sous-dossier vide, puis déplacez un fichier dedans :

mkdir archive
mv note-copie.txt archive/
ls archive/

Le fichier se retrouve dans archive/, et le répertoire courant n’affiche plus note-copie.txt. Ne déplacez jamais hors de l’espace d’exercice pendant ce parcours : vous voulez pouvoir retrouver chaque fichier sans risque.

Vérifiez l’absence d’écrasement involontaire avant mv

Avant chaque mv, listez le contenu de la destination avec ls. Si la cible existe déjà, mv l’écrase sans avertir. C’est la limite principale de mv à connaître avant de s’en servir.

Comment supprimer un fichier en sécurité ?

La suppression est l’opération qu’on redoute à raison. Ce parcours la documente pour que vous la reconnaissiez, mais ne l’exécute pas sur les fichiers de l’exercice.

Sachez que rm est destructive : tenez-la hors du parcours nominal

rm supprime des fichiers sans confirmation par défaut. Elle ne fait pas partie du mini-parcours de cette page. Si vous l’utilisez plus tard, vous l’appliquerez à un contexte séparé, avec vos propres vérifications.

Préférez rmdir pour un répertoire vide : alternative réversible

Pour supprimer un sous-dossier vide, utilisez rmdir :

rmdir archive

rmdir refuse un répertoire non vide : c’est une sécurité intégrée. Si vous voyez un message d’erreur, c’est que le dossier contient encore quelque chose. Listez avec ls, déplacez ce qui reste, puis réessayez.

Si vous devez utiliser rm, vérifiez deux fois la cible

rm est destructive. Deux vérifications s’imposent avant de l’utiliser : pwd pour confirmer où vous êtes, et ls pour voir le nom exact. N’utilisez jamais rm -rf sur ce parcours : cette forme supprime récursivement sans confirmation et n’est pas illustrée ici.

Comprenez le message « No such file or directory » après une suppression

Quand rm vise un nom déjà supprimé, GNU coreutils affiche :

rm: cannot remove 'fichier_introuvable': No such file or directory

Le message n’a rien détruit : il signale que le nom n’existe plus. Ce cas négatif est le même que celui détaillé plus bas pour cat.

Comment retrouver un fichier par nom dans une arborescence ?

Quand le nom vous échappe ou que le dossier n’est plus en mémoire, deux commandes suffisent : ls -R pour lire la structure, et find pour appliquer un motif.

Listez d’abord la structure avec ls -R

Préparez une petite arborescence factice :

mkdir -p sources/notes
printf 'a\n' > sources/a.txt
printf 'b\n' > sources/notes/b.txt
ls -R

La sortie montre sources/, sources/notes/, sources/a.txt et sources/notes/b.txt. ls -R ne modifie rien : il lit. C’est la commande de premier réflexe avant d’aller plus loin.

Utilisez find . -name '*.txt' pour retrouver les fichiers par motif

find . -name 'note*' -print

Si note-copie.txt existe dans l’arborescence, find affiche son chemin. Une absence de résultat n’est pas une erreur : find retourne un code 0 même quand il ne trouve rien. Vous n’avez donc pas à vous inquiéter d’un silence.

Limitez la profondeur avec -maxdepth pour un parcours borné

find . -maxdepth 2 -type f -name '*.txt'

-maxdepth 2 empêche find de descendre au-delà du deuxième niveau. Sur une vraie arborescence, cela évite de balayer des dossiers que vous ne vouliez pas toucher. Bornez toujours la profondeur quand vous ne connaissez pas la taille de l’arborescence.

Gardez find -delete hors du parcours

find -delete est documenté dans le synopsis GNU findutils mais n’est pas exécuté ici. Une suppression lancée depuis find peut viser plus de fichiers que prévu si le motif est trop large. Ce parcours utilise find uniquement pour lire.

Comment lire les métadonnées d’un fichier ?

Deux commandes couvrent l’essentiel : ls -l pour un répertoire entier, stat pour un fichier précis. Elles répondent à des questions différentes.

Utilisez ls -l pour droits, propriétaire, taille et date

ls -l archive.txt

La sortie ressemble à :

-rw------- 1 hermes-gw hermes-gw 16 Sep 14 10:11 archive.txt

Chaque colonne a un rôle. La première (-rw-------) décrit les droits : - pour un fichier régulier, puis trois groupes de trois caractères (propriétaire, groupe, autres). La taille suit en octets. La date de modification est en fin de ligne. Pour comprendre la signification détaillée de chaque droit (lecture, écriture, exécution) et la modification de ces droits avec chmod (octal et symbolique) ou chown/chgrp, voyez la page Permissions et utilisateurs Linux.

Affichez les métadonnées complètes avec stat

stat archive.txt

stat affiche plusieurs lignes : File:, Size:, Access:, Modify:, Birth:. ls -l lit un répertoire, stat lit un fichier précis. Si vous voulez l’horodatage complet d’un seul fichier, c’est stat. Pour comparer plusieurs fichiers d’un coup, restez sur ls -l.

Comprenez la différence entre taille sur disque et taille logique

ls -l et stat rapportent la taille logique du fichier, en octets. Sur certains systèmes de fichiers, l’espace réellement occupé sur disque peut être plus grand, à cause de la taille de bloc. Pour un fichier texte de quelques octets, la différence est invisible. Pour un fichier volumineux, elle peut jouer.

Comment identifier le type d’un fichier ?

file lit le contenu d’un fichier et en déduit le type, indépendamment de l’extension.

Lancez file sur un fichier de test

file archive.txt

Pour un fichier texte de quelques lignes, file affiche quelque chose comme :

archive.txt: ASCII text

file lit d’abord un nombre limité d’octets (la « magic database » du paquet file) pour deviner le type. Sur un fichier de moins d’une dizaine d’octets, la sortie devient « very short file (no magic) » au lieu d’« ASCII text », parce que la base n’a pas pu lire assez d’octets. Pour un fichier plus consistant, c’est la règle ci-dessus qui s’applique. Ne confondez pas : la nature du contenu est la même ; seule la quantité reconnue par file change avec sa taille.

file se fie au contenu, pas au suffixe .txt. Un fichier nommé archive.txt peut très bien contenir une image ; file le signalera.

Distinguez fichier régulier et répertoire dans la sortie

file .

file . affiche directory pour le répertoire courant. Pour un fichier régulier, la sortie affiche en première position ASCII text, PNG image data, ELF executable, etc. La distinction est immédiate sans ouvrir le fichier.

Pour un fichier nommé note.txt, file se fie au contenu, pas à l’extension : une image renommée note.txt serait signalée comme image, pas comme texte.

Utilisez file -b pour une sortie sans le nom de fichier

file -b archive.txt

file -b retire le nom du fichier de la sortie et ne garde que le type. Ce format est utile dans un script qui enchaîne plusieurs fichiers, mais reste hors parcours ici.

Gardez tree comme option externe

tree n’est pas installé sur l’environnement de travail de cette page. Il appartient à un paquet externe, séparé de GNU coreutils. Ne comptez pas sur tree pour ce parcours : ls -R et find couvrent la lecture d’arborescence, et ils sont disponibles partout par défaut.

Comment gérer un nom de fichier avec espaces ?

Le shell découpe les commandes sur les espaces. Un nom comme fiche avec espace.txt devient trois arguments s’il n’est pas protégé.

Créez un nom avec espace encadré de guillemets

printf 'espaces\n' > "fiche avec espace.txt"
ls

Le nom apparaît dans la liste, intact. Les guillemets préservent l’ensemble comme un seul argument.

Copiez-le en conservant les guillemets

cp "fiche avec espace.txt" "fiche avec espace-copie.txt"
ls

Les deux noms restent entiers. Sans guillemets, le shell verrait quatre mots et chercherait un fichier fiche qui n’existe probablement pas.

Reconnaissez l’erreur si vous oubliez les guillemets

Si vous tapez cat fiche avec espace.txt sans guillemets, le shell cherche un fichier nommé fiche et signale une erreur sur les arguments suivants. La correction tient en une paire de guillemets autour du nom complet, pas en une nouvelle commande.

Que signifie « No such file or directory » ?

Cette erreur arrive à tout le monde. Mieux vaut la provoquer une fois dans l’espace d’exercice pour la reconnaître ensuite.

Provoquez un cas négatif sur un nom fictif

cat fichier_qui_n_existe_pas.txt
echo $?

La commande affiche un message du type :

cat: fichier_qui_n_existe_pas.txt: No such file or directory

puis un code retour 1. Le shell n’a rien détruit : il a juste essayé de lire un fichier absent.

Lisez le message et le code de retour plutôt que de relancer au hasard

Le message indique le nom cherché et la cause probable. Le code de retour, accessible avec echo $? juste après une commande qui échoue, vaut 1 dans ce cas. Une commande qui réussit renvoie 0. Ce chiffre distingue une absence normale de sortie (succès silencieux de cd, par exemple) d’une vraie erreur.

Revenez à pwd, ls -l et find pour corriger la cause

Ne relancez pas au hasard. Vérifiez votre emplacement avec pwd, listez le dossier avec ls -l, puis comparez l’orthographe tapée à l’orthographe affichée. Pour un nom partiellement oublié, find . -name 'motif*' parcourt l’arborescence. La cause est presque toujours là.

Quelles opérations faut-il laisser de côté quand on débute ?

Trois familles d’opérations méritent un parcours séparé et ne sont pas illustrées ici.

Pourquoi rm, rm -rf, > et | restent hors du parcours nominal

rm supprime des fichiers sans confirmation par défaut ; rm -rf supprime récursivement sans confirmation. La redirection > écrase le contenu d’un fichier existant si la cible existe. Le pipe | relie deux commandes et transforme la sortie. Chacune demande son propre repère avant d’être pratiquée sur des fichiers qui comptent.

Pourquoi ne pas enchaîner avec des jokers (*, ?) sur des fichiers réels

Les jokers sont puissants mais imprévisibles sur des fichiers réels. Un * trop large peut viser plus de fichiers que prévu. Ils sont réservés à un second parcours, construit séparément, avec des sources distinctes. Dans ce guide, aucun joker n’est utilisé.

Où aller ensuite pour un parcours plus large ?

Pour un tour d’horizon plus large du terminal, partez de la section Linux et terminal de CyberSDF. Pour un parcours de survie plus structuré, le guide de survie en ligne de commande couvre l’essentiel d’un terminal GNU. Pour reprendre les premières commandes avant ce parcours, Commandes Linux de base : se repérer, créer et copier sans risque est la page qui prépare le terrain.

Questions fréquentes avant de continuer

Quelle différence entre cp, mv et rm ?

cp duplique, mv change l’emplacement ou le nom, rm supprime. Aucun ne touche au contenu d’origine sauf écrasement explicite : cp -i demande confirmation avant d’écraser, mv peut écraser silencieusement.

Pourquoi mv peut-il écraser silencieusement la cible ?

Par défaut, mv ne demande pas de confirmation avant d’écraser. C’est pourquoi ls avant mv est le seul réflexe efficace dans ce parcours. Pour une copie, cp -i illustre la collision.

Comment savoir si un fichier est un répertoire sans l’ouvrir ?

ls -l affiche d en première colonne pour un répertoire, - pour un fichier régulier. file . confirme aussi : la sortie affiche directory pour un répertoire.

Comment savoir si je peux quitter l’exercice ?

Vous pouvez fermer le terminal à tout moment. Les fichiers créés vivent dans /tmp/atelier-fichiers, qui se vide au redémarrage. Pour nettoyer vous-même, supprimez le dossier avec rm -rf /tmp/atelier-fichiers une fois revenu dans votre répertoire personnel et après un dernier ls pour confirmer son contenu. Cette commande n’est volontairement pas exécutée dans le parcours ci-dessus : elle reste à votre main, une fois la lecture terminée.

Quand utiliser find plutôt que ls ?

ls lit le contenu d’un seul répertoire. find parcourt une arborescence en appliquant un motif ou un critère. Pour un nom précis connu, ls suffit. Pour retrouver un fichier dont vous avez oublié le dossier, find est l’outil adapté.