Grimoire-
Command
.es

GNU+Linux command memo

Memo_2 : gérer les dossiers, bouger les fichiers

D’après l’édition 11 des travaux d’Alain Leaper, 2018-04-10
Licence GPL

1. mkdir : création d’un répertoire (make directory)

$ mkdir monRepertoire
$ ls -l
drwxr-xr-x 2 alain alain 4096 mai  9 12:12 monRepertoire

L’option -p permet de créer, si nécessaire, les répertoires intermédiaires.

$ mkdir -p sousRep1/sousRep2/sousRep3

Si sousRep1 et sousRep2 étaient inexistants avant la commande, ils sont créés.

2. rmdir : suppression d’un répertoire vide (remove directory)

$ rmdir monRepertoire

Si le répertoire est vide, il est supprimé, sinon :

rmdir: failed to remove \`monRepertoire/': Le répertoire n'est pas vide.

3. rm : suppression d’un fichier / dossier (remove)

La commande rm permet de supprimer des fichiers. Il est également possible de supprimer des dossiers en précisant l’option -r, qui déclenche une suppression récursive.

$ ls
monFichier monRep
$ rm -r monRep
$ ls
monFichier
Le répertoire monRep est supprimé, qu’il soit vide ou non. Tout son contenu est également supprimé sinon.

L’option -f (force) indique à rm de supprimer sans poser de questions, ou de ne rien dire si le fichier est inexistant.

$ rm toto

rm: ne peut enlever \`toto': Aucun fichier au répertoire de ce type

$ rm -f toto

Aucun message d’erreur.

☙❦❧

Le caractère * est un joker qui vaut tour à tour tous les noms de fichier existant dans le répertoire courant. L’interpréteur de commande (bash, dash, zsh) le remplace par la liste des fichiers contenu dans le répertoire courant.

$ rm -f *

Supprime tout le contenu d’un dossier sans demander de confirmation.

Il n’a pas de méthode fiable et officielle de récupérer un fichier supprimé. Quelques solutions ont été évoquée ici : link:/tag/repair.html

# rm -rf /

Effectivement lancé en tant qu’utilisateur root (voir Memo_3), cette commande supprimerait tout le contenu accessible sans poser de question. Vous seriez étonné de voir à quelle vitesse ça va…

4. mv : renommer et/ou déplacer un fichier / dossier (move)

$ mv ancienNom nouveauNom

Le fichier ou dossier ancienNom devient nouveauNom.

$ mv ancienNom nouveauChemin/nouveauNom

Le fichier ou le répertoire est déplacé et, éventuellement renommé.

5. cp : copier un ficher / dossier (copy)

$ cp ancienNom nouveauNom

Les 2 fichiers existent dans le même répertoire ou dans des répertoires différents, si un nouveauChemin est spécifié.

Quelques options :

  • -f : écrase, sans avertissement, nouveauNom s’il existait déjà, même s’il était protégé en écriture

  • -r : copie récursive des fichiers ou dossiers avec leur contenu (y compris pour les fichiers de périphériques)

  • -R : idem à -r mais ne recopie pas le contenu des fichiers de périphériques (/dev/…​), dans le doute c’est préférable

  • -p : préserve les métadonnées : propriétaire, groupe, droits et date de création

  • -d : recopie les liens symboliques en tant que tels

6. cat : concaténation de fichiers

$ cat fichier fichier2 fichier3 > fichier4

fichier4 est alors constitué du contenu successif des trois premiers fichiers. Si fichier4 existait déjà, il est écrasé et son contenu est remplacé par le résultat de la commande.

Sans la redirection >, le fichier par défaut est celui du terminal, le contenu est alors affiché dans votre console. La commande cat est donc souvent utilisée pour voir le contenu d’un fichier.

Voir le Memo_4 pour plus de détails sur cat.

7. dd : copie par blocs (en général d’un fichier…)

$ dd if=Origine of=Destination bs=tailleDeBloc [] autres options possibles

Il est utile de préciser une taille de bloc importante (comme 1M) car la taille par défaut est très petite (512 octets) et grève les performances avec le matériel actuel (2020). Plus d’info : dd buffer size (en anglais).

Autres options :

  • count=nombre nombre de blocs à copier, pour ne pas copier toute la source

  • conv=notrunc,noerror ne pas tronquer le fichier de sortie, continuer malgré les erreurs de lecture

dd peut être utilisé en tant que simple utilisateur, à condition, pour certaines opérations, d’être membre du groupe floppy.

dd est sans /bin, il est donc possible de l’invoquer via : /bin/dd if=… […]