site sans réclame GNU/LinuxDebianÉcrireS'abonner

Fichiers et répertoires en GNU/Linux

E

N Unix, et donc GNU/Linux, à peu près tout est fichier: répertoires, périphériques, processus... Il sera ici question des fichiers de données et des répertoires.

Cette page explique le minimum à connaître sur un système GNU/Linux (ligne de commande, système de fichiers...)

1. Répertoires

2. Fichiers

3. Affichage

4. Comparaison

Attention: la plupart des commandes ci-après ne fonctionnent que si vous disposez des droits suffisants sur les fichiers ou répertoires, ce qui courant concernant les fichiers et les répertoires de votre répertoire personnel.

1. Répertoires

pwd retourne l'adresse complète du répertoire courant.

ls liste les noms des fichiers et sous-répertoires du répertoire courant
ls -l donne les paramètres des fichiers et répertoires listés (les droits, possesseurs, longueurs, dates...) avant leur nom.
ls -R fait également une recherche dans les sous-répertoires, de façon récursive.
ls --help liste les options utilisables pour la commande.
dir est un alias de ls et s'emploie de la même façon.

du liste les sous-répertoires, de façon récursive et le nombre de bloc de chaque fichier ou répertoire
du images renvoie en Ko la place utilisée par chaque sous-répertoire, terminé par l'ensemble du répertoire images
du -h images renvoie la place utilisée en «K», «M» ou «G», selon le poids des répertoires
du -s images renvoie uniquement la place utilisée par l'ensemble du répertoire images

cd nom-du-repertoire (change directory) permet d'entrer dans un sous-répertoire listé par ls
cd .. permet de remonter dans le répertoire contenant le répertoire courant
cd nom1/nom2 permet d'entrer directement dans le sous-sous-répertoire nom2
cd / va dans le répertoire racine, le plus haut niveau hiérarchique
cd /home/nana/musique/chanson fixe le répertoire courant, d'où que l'on soit (adressage absolu)
cd ~/musique/chanson est synonyme du précédent pour l'utilisatrice nana uniquement, dont le répertoire personnel (~) est /home/nana

mkdir dirladada crée le sous-répertoire dirladada dans le répertoire courant
rmdir dirladada supprime le sous-répertoire dirladada seulement s'il est vide

cp un deux -R copie l'entièreté du répertoire un dans le répertoire deux

mv un deux

ncdu classe répertoires et sous-répertoires selon leur poids, en permettant la navigation

mc (à installer) est un clone de Norton Commander qui permet de naviguer dans les répertoires, éventuellement visibles en deux volets. Pour déplacer, copier ou effacer des fichiers protégés (appartenant au super-utilisateur), il faut lancer mc dans une console en mode super-utilisateur:

suEn mode super-utilisateur: su [Enter] mc

Attention! vous êtes alors capable de détruire le système: avant de modifier un fichier, il est utile d'en faire une copie dont le nom de fichier se termine par exemple par -old

mc permet également d'éditer des fichiers.

2. Fichiers

ls -l liste fichiers et répertoires et leurs attributs (propriétaire, droits...)
ls -l | sort listage de fichiers avec une mise en ordre alphabétique
ls -l | grep chaine listage avec un filtre: seuls les lignes contenant chaine sont affichées

Il est possible d'utiliser more ou less en pipe: dmesg | less

du -a liste répertoires et fichiers du répertoire courant de façon récursive

cp yeap goulp copie le fichier yeap dans le sous-répertoire goulp
cp *.txt /repertoire copie les fichiers ".txt" dans le répertoire précisé
cp -u yeap goulp copie le fichier que si un fichier du même nom ne se trouve pas encore dans le répertoire-cible ; si un tel fichier y existe déjà, il ne sera remplacé que s'il est plus ancien.

mv yeap goulp

rm fichier détruit irrémédiablement un fichier (sans passer par la «poubelle»).

echo "Kiss me" > zaza crée dans le répertoire courant le fichier zaza, contenant Kiss me.

touch fichier actualise la date et l'heure d'un fichier existant, crée sinon un fichier vide.

find *.mp3 affiche les fichiers mp3 du répertoire courant et de ses sous-répertoires
find ~ -name *.mp3 précise le répertoire (ici de l'utilisateur). Il est alors nécessaire de préciser -name avant le motif de recherche

locate *.jpg affiche les fichiers jpg du répertoire courant et ses sous-répertoires. Deux restrictions: il faut que la commande soit installée sur le système et que updatedb ait été lancé avec les privilèges du super-utilisateur.

whereis commande indique l'endroit d'un binaire exécutable, de ses sources ou de son manuel

Liens

Un lien est un alias, à savoir un autre chemin/nom désignant un même fichier. Il ne s'agit pas d'une duplication du fichier: l'édition à travers un lien modifie le contenu du fichier.

Un lien matériel (hard link) est un autre chemin/nom pointant vers le même fichier (sa localisation matérielle, par exemple sur le disque). Chaque chemin/nom (l'original et les suivants) a la même valeur, et les données du fichiers ne seront effacées que si tous ces chemins/noms (dont l'original) sont effacés.

Un lien symbolique (symbolic link) pointe vers le nom original, le seul pointant vers les données du fichier. L'effacement du nom original du fichier suffit à l'effacer, cassant tous ses liens symboliques.

ln fichier lien crée un second nom du fichier
ln -s fichier lien crée un lien symbolique
readlink lien retrouve un nom du fichier d'après son lien symbolique (pas d'un lien matériel, qui est un nom de fichier comme un autre)

Éditeurs

nano est déjà installé sur le système et permet l'édition des fichiers avec nano -w fichier, mais n'est pas trop intuitif.

mc (midnight commander) permet de naviguer dans les répertoires, téléverser des pages vers Internet, et notamment d'éditer des fichiers. Pour installer:

suEn mode super-utilisateur: su [Enter] apt-get install mc

[F4] permet l'édition de fichiers (et un système de blocs pour les copier-coller). Depuis la distribution Lenny, mc utilise préférentiellement l'éditeur nano, moins intuitif. Pour revenir à l'éditeur historique, on peut désinstaller nano:

suEn mode super-utilisateur: su [Enter] apt-get remove --purge nano

À partir de Debian 8 Jessie, mc demande lequel des éditeurs on désire utiliser, entre vim, nano et l'éditeur interne à mc, le plus intuitif.

Pour modifier certains fichiers de configuration (/etc/apt/sources.list, /etc/fstab...) il faut lancer mc en tant que super-utilisateur:

suEn mode super-utilisateur: su [Enter] mc

3. Affichage de fichiers

cat fichier affiche un fichier dans la console. N'est utile que pour les fichiers-textes, où les caractères sont affichables, et n'est pratique que pour les fichiers courts, car on n'en voit que la fin s'il prend plus d'un écran. zcat et bzcat s'appliquent aux fichiers zippés.

tail fichier affiche les dix dernières lignes (ou un autre nombre si -n nombre) d'un fichier texte. tailf fichier fait la même chose, mais ne rend la main au bash que si le fichier est modifié.

more, zmore et bzmore permet le défilement par écran [Espace] ou par ligne [Enter]

less, zless et bzless (éventuellement à installer) permet également de remonter ou redescendre dans le texte avec les touches fléchées et [PgDn]/[PgUp].

Il est possible de trier les lignes d'un fichier avec | sort :

ls -l | sort

Il est possible de rediriger les sorties de la console vers un fichier avec > :

ls -l > unfichier.txt
cat fich1 fich2 fich3 > tout.txt

Il est possible de filtrer l'affichage ligne par ligne avec | grep :

cat fichier | grep "debian"

4. Comparaison de fichiers

4.1 cheksum

md5sum calcule l'empreinte checksum md5 (si pas unique, très personnelle) d'un fichier, ce qui permet de vérifier l'intégrité d'un fichier téléchargé (ou d'un cd gravé) si vous possédez la signature "checksum" qui lui est est associée, du type a57597b0d7...

md5sum votre-fichier
md5sum /dev/hdc

D'autre commandes existent pour les checksum sha: shasum, sha1sum, sha256sum, sha224sum, sha384sum, sha512sum... sha256sum, plus sécurisé que md5sum, devient la norme.

4.2 cmp

cmp fichier1 fichier2 compare deux fichiers, et retourne l'endroit du premier octet non identique.

cmp fichier1 fichier2 compare deux fichiers octet après octet, en retournant l'endroit («octet x, ligne y») du premier octet non identique. Si les fichiers sont identiques, rien n'est retourné
cmp -l fichier1 fichier2 donne trois valeurs: emplacement, valeur de l'octet du premier fichier et celle du second quand ils ne correspondent pas
cmp -i n1:n2 fichier1 fichier2 ignore les n1 premiers octets du premier fichier et les n2 premiers du second

zcmp et bzcmp concerne les fichiers zippés

4.3 diff / patch

diff fichier1 fichier2 compare deux fichiers ligne à ligne et inscrit toutes les différences dans un fichier. C'est d'ailleurs utilisé pour les patches de code-source de programmes à recompiler. zdiff et bzdiff concerne les fichiers zippés

diff renseigne les différences ligne à ligne entre deux fichiers de texte, par des informations codées. À partir de deux fichiers, old.txt (colonne de gauche) et new.txt (colonne de droite):

Linux                 GNU/Linux
Debian                Debian
Jessie                Squeeze
Utilisateur           Wheezy
depuis 2002           Jessie
!!!                   Utilisateur

diff old.txt new.txt > txt.diff fournira le fichier txt.diff suivant qui est un ensemble de règles pour transformer old.txt en new.txt:

1c1              # changer la ligne 1 (gauche) par la ligne 1 (droite)
< Linux          # à gauche: "Linux" (old)
---
> GNU/Linux      # à droite: "GNU/Linux" (new)
2a3,4            # après la ligne 2 (g.), ajouter en lignes 3 et 4 les deux suivantes
> Squeeze
> Wheezy
4,6c6            # changer les lignes 4-6 (g.) en une ligne 6 (d.)
< utilisateur
< depuis 2002
< !!!
---
> Utilisateur

patch permet de corriger/compléter un fichier à partir d'un fichier de différences généré par diff:
patch old.txt txt.diff écrase old.txt par le texte corrigé
patch -b old.txt txt.diff sauvegarde old.txt sous old.txt.orig