Beaucoup de choses sur Linux apparaissent dans votre système de fichiers, mais ce ne sont pas des fichiers. Il s’agit de fichiers spéciaux représentant des périphériques matériels, des informations système et d’autres éléments, notamment un générateur de nombres aléatoires.
Ces fichiers spéciaux peuvent être situés dans des pseudo-systèmes de fichiers virtuels, tels que / dev, qui contient des fichiers spéciaux représentant les périphériques, et / proc, contenant des fichiers spéciaux représentant des informations sur le système et les processus.
/ proc
Par exemple, supposons que vous souhaitiez trouver des informations sur votre CPU. Le répertoire / proc contient un fichier spécial - / proc / cpuinfo - contenant ces informations.
Vous n'avez pas besoin d'une commande spéciale qui vous indique les informations relatives à votre processeur. Vous pouvez simplement lire le contenu de ce fichier à l'aide de n'importe quelle commande standard fonctionnant avec des fichiers en texte brut. Par exemple, vous pouvez utiliser la commande cat / proc / cpuinfo imprimer le contenu de ce fichier sur le terminal - imprimer les informations de votre CPU sur le terminal. Vous pouvez même ouvrir / proc / cpuinfo dans un éditeur de texte pour afficher son contenu.
Rappelez-vous que / proc / cpuinfo n’est pas en fait un fichier texte contenant ces informations: le noyau Linux et le système de fichiers proc nous les exposent sous forme de fichier. Cela nous permet d'utiliser des outils familiers pour visualiser et utiliser les informations.
- / proc / uptime - Expose la disponibilité de votre noyau Linux - en d’autres termes, combien de temps votre système est-il allumé sans être arrêté.
- / proc / version - Expose la version de votre noyau Linux.
/ dev
Dans le répertoire / dev, vous trouverez des fichiers représentant des périphériques, ainsi que des fichiers représentant d’autres éléments spéciaux. Par exemple, / dev / cdrom est votre lecteur de CD-ROM. / dev / sda représente votre premier disque dur, alors que / dev / sda1 représente la première partition de votre premier disque dur.
Voulez-vous monter votre CD-ROM? Exécutez la commande mount et spécifiez / dev / cdrom en tant que périphérique à monter. Vous voulez partitionner votre premier disque dur? Exécutez un utilitaire de partitionnement de disque et spécifiez / dev / sda en tant que disque dur à modifier. Voulez-vous formater la première partition sur votre premier disque dur? Exécutez une commande de formatage et indiquez-lui de formater / dev / sda1.
/ dev / null, / dev / random et / dev / zero
Le système de fichiers / dev ne contient pas que des fichiers représentant des périphériques physiques. Voici trois des dispositifs spéciaux les plus remarquables qu'il contient:
- / dev / null - Supprime toutes les données qui y sont écrites - considérez-la comme une poubelle ou un trou noir. Si vous voyez un commentaire vous dire d’envoyer des plaintes à / dev / null, c’est une façon géniale de dire «jetez-les à la poubelle».
- / dev / random - Produit un caractère aléatoire en utilisant le bruit de l'environnement. C’est un générateur de nombres aléatoires auquel vous pouvez accéder.
- / dev / zero - Produit des zéros - un flux constant de zéros.
Si vous considérez ces trois fichiers comme des fichiers, vous ne verrez aucune utilisation. Au lieu de cela, pensez à eux comme des outils.
Par exemple, par défaut, les commandes Linux génèrent des messages d'erreur et d'autres sorties qu'elles impriment sur la sortie standard, généralement le terminal. Si vous voulez exécuter une commande sans vous soucier de sa sortie, vous pouvez rediriger cette sortie vers / dev / null. La redirection de la sortie d'une commande vers / dev / null la supprime immédiatement. Au lieu de faire en sorte que chaque commande implémente son propre «mode silencieux», vous pouvez utiliser cette méthode avec n'importe quelle commande.
command > /dev/null
Pour effacer le contenu d’un disque dur en y écrivant 0, vous n’avez pas besoin d’un utilitaire spécial dédié à la remise à zéro d’un disque - vous pouvez utiliser les utilitaires standard et / dev / zero. Par exemple, le jj La commande lit à partir d'un emplacement et écrit dans un autre emplacement. La commande suivante permet de lire les zéros de / dev / zero et de les écrire directement sur la première partition de disque dur de votre système, en effaçant complètement son contenu.
(Attention: Cette commande effacera toutes les données de votre première partition si vous l’exécutez. N'exécutez cette commande que si vous souhaitez détruire des données.)
dd if=/dev/zero of=/dev/sda1
Ici, nous utilisons dd avec des fichiers spéciaux (/ dev / zero et / dev / sda1), mais nous pourrions également utiliser dd pour lire et écrire dans des fichiers réels. La même commande fonctionne aussi bien pour manipuler les périphériques directement que pour travailler avec des fichiers.
Clarification
En pratique, il est plus précis de dire que «tout est un flux d’octets» que «tout est un fichier». / Dev / random n’est pas un fichier, mais c’est certainement un flux d’octets.Et, bien que techniquement, ces éléments ne soient pas des fichiers, ils sont accessibles dans le système de fichiers - le système de fichiers est un «espace de noms» universel où tout est accessible. Vous souhaitez accéder à un générateur de nombres aléatoires ou lire directement à partir d'un appareil? Vous trouverez les deux dans le système de fichiers; aucune autre forme d'adressage nécessaire.
Bien sûr, certaines choses ne sont pas réellement des fichiers - les processus en cours d'exécution sur votre système ne font pas partie du système de fichiers. «Tout est un fichier» est inexact, mais beaucoup de choses se comportent comme des fichiers.