Un fichier dans Linux peut être expliqué en plusieurs aspects clés :
Définition fondamentale : Dans Linux, un fichier est une collection de données stockées sur le disque. La philosophie Linux considère que "tout est fichier", y compris les périphériques matériels et les processus.
Fichiers ordinaires : Ce sont les fichiers les plus courants, qui peuvent contenir du texte, des images, des données, etc. Les fichiers ordinaires peuvent être édités avec des éditeurs de texte tels que vim et nano.
Fichiers binaires : Ce sont des fichiers qui contiennent des données binaires (code machine) et sont exécutés par le système d'exploitation. Les exécutables sont un exemple de fichiers binaires.
Fichiers de répertoire : Ce sont des fichiers spéciaux qui représentent les répertoires dans le système de fichiers. Les fichiers de répertoire ne peuvent pas être modifiés directement, mais peuvent être manipulés en utilisant des commandes telles que ls et mkdir.
Fichiers de lien symbolique (raccourci): Ce sont des fichiers spéciaux qui contiennent une référence à un autre fichier ou répertoire. Les liens symboliques peuvent être utilisés pour accéder à un fichier ou répertoire à partir de plusieurs emplacements différents.
Fichiers de périphérique (pilote): Ce sont des fichiers spéciaux qui représentent les périphériques tels que les disques durs, les imprimantes, etc. Les fichiers de périphérique peuvent être utilisés pour accéder aux périphériques du système en utilisant des commandes telles que dd et cat.
Fichiers de socket : Ce sont des fichiers spéciaux qui représentent les sockets réseau, qui sont utilisés pour les communications entre les programmes sur un réseau.
Fichiers FIFO : Ce sont des fichiers spéciaux qui représentent les files d'attente de messages, qui peuvent être utilisées pour communiquer entre des processus en utilisant des commandes telles que mkfifo et cat.
Les métacaractères sont utilisés dans les expressions régulières et dans les shells pour représenter des concepts plus larges que des caractères simples. Ceux couramment utilisés comprennent :
* (étoile) : représente zéro ou plusieurs occurrences de n'importe quel caractère.
? (point d'interrogation) : représente zéro ou une occurrence d'un caractère.
[ ] (crochets) : définit un ensemble de caractères pour la correspondance.
- (tiret) : utilisé à l'intérieur des crochets pour définir une plage de caractères.
. (point) : représente n'importe quel caractère sauf un retour à la ligne.
^ (circonflexe) : représente le début de la ligne.
$ (dollar) : représente la fin de la ligne.
\ (antislash) : utilisé pour échapper des métacaractères.
Voici des exemples:
1. L'astérisque (*)
*.txt : tous les fichiers avec extension .txt
doc* : tous les fichiers commençant par "doc"
*2023* : tous les fichiers contenant "2023" dans leur nom
2. Le point d'interrogation (?)
fichier?.txt : correspond à fichier1.txt, fichierA.txt, etc.
????.txt : tous les fichiers avec exactement 4 caractères avant .txt
photo_??.jpg : photos numérotées de 00 à 99
3. Les crochets ([])
[abc]* : fichiers commençant par a, b ou c
fichier[0-9].txt : fichier suivi d'un chiffre
[A-Z]*.pdf : fichiers PDF commençant par une majuscule
# Trouve les fichiers image numérotés
ls photo[1-9]*.{jpg,png}
# Fichiers de logs par date
ls log_[2023-2024]*.txt
# Documents avec numéro de version
find . -name "doc_v[0-9]?.*"
touch fichier.txt # Crée un fichier vide
nano fichier.txt # Édite avec l'éditeur Nano
vim fichier.txt # Édite avec l'éditeur Vim
> fichier.txt # Crée ou vide un fichier
cat fichier.txt # Affiche le contenu complet
less fichier.txt # Affiche page par page
head fichier.txt # Affiche les premières lignes
tail fichier.txt # Affiche les dernières lignes
file fichier.txt # Affiche le type du fichier
Un répertoire dans Linux peut être expliqué de la façon suivante :
Définition de base Un répertoire est un type spécial de fichier qui sert de conteneur pour d'autres fichiers et répertoires, créant ainsi une structure hiérarchique pour organiser les données. Dans l'interface utilisateur, on l'appelle souvent "dossier".
Caractéristiques principales
Commence toujours à la racine (/) dans la hiérarchie Linux
Peut contenir des fichiers et d'autres répertoires
A des permissions spécifiques (rwx)
Est représenté par un '.' pour le répertoire courant
Il y aune notion très importante dans Linux: celle des chemin d'accès. Il existe 2 notions:
Chemin absolu
Commence toujours par la racine (/)
Donne l'emplacement complet depuis la racine
Exemple : /home/utilisateur/Documents/fichier.txt
Fonctionne quel que soit le répertoire courant
Chemin relatif
Dépend du répertoire courant
Ne commence pas par /
Utilise . (répertoire actuel) et .. (répertoire parent)
Exemple : Documents/fichier.txt ou ../fichier.txt
Raccourcis spéciaux
~ # Répertoire personnel de l'utilisateur
. # Répertoire courant
.. # Répertoire parent
- # Dernier répertoire visité
Exemples pratiques
# Chemin absolu
cd /home/user/Documents
# Chemin relatif
cd ../Documents
cd ./projet/src
# Avec raccourcis
cd ~/Documents
cd - # Retourne au précédent répertoire
Points importants
Linux est sensible à la casse (MAJ/min)
Le séparateur est le slash (/) et non le backslash ()
Les espaces dans les noms doivent être échappés ou entre guillemets
Le chemin peut être utilisé avec presque toutes les commandes (cp, mv, rm, etc.)
En Linux, les liens sont des mécanismes pour créer un accès rapide à un fichier ou à un dossier. Il existe deux types de liens : les liens durs et les liens symboliques.
Lien dur (Hard Link)
Un lien dur est essentiellement une référence additionnelle à un fichier existant sur le disque.
Il pointe directement vers l'emplacement du fichier sur le système de fichiers, partageant le même inode que le fichier d'origine. Cela signifie que si vous supprimez le fichier original, le lien dur fonctionnera toujours, car l'information sur le disque n'est pas effacée tant qu'il existe une référence vers elle.
Les liens durs ne peuvent pas traverser les systèmes de fichiers ; ils sont limités à un seul système de fichiers.
On ne peut pas créer de lien dur pour un dossier pour éviter des boucles infinies et des complications avec la structure du système de fichiers.
Lien symbolique (Symlink ou Soft Link)
Un lien symbolique est un fichier spécial qui pointe vers un autre fichier ou répertoire.
Contrairement à un lien dur, un lien symbolique ne partage pas l'inode avec le fichier original. Il contient simplement le chemin d'accès au fichier ou au dossier qu'il référence.
Si vous supprimez le fichier original, le lien symbolique devient un lien rompu, car il pointe vers un chemin qui n'existe plus.
Les liens symboliques peuvent pointer à travers les systèmes de fichiers et peuvent également référencer des dossiers.