Manipulation des fichiers et répertoires (création et modification)
Le shell fournit de nombreuses commandes de manipulation de fichiers sur le système de fichiers Linux.
Gestion des fichiers
Création de fichiers
Pour créer un fichier, on utilise la commande touch. La commande touch crée le nouveau fichier que vous spécifiez et attribue votre nom d'utilisateur en tant que propriétaire du fichier.
devinfo@ubuntu:~$ touch test devinfo@ubuntu:~$ ls -l test -rw-rw-r-- 1 devinfo devinfo 0 oct. 17 10:20 test
Copier des fichiers
Copier des fichiers et des répertoires d'un emplacement du système de fichiers à un autre est une pratique courante pour les administrateurs système. La commande cp offre cette fonctionnalité.
syntaxe
cp source destination
Lorsque les paramètres source et destination sont tous deux des noms de fichiers, la commande cp copie le fichier source vers un nouveau fichier de destination. Le nouveau fichier se comporte comme un tout nouveau fichier, avec un temps de modification mis à jour :
devinfo@ubuntu:~$ cp test linux devinfo@ubuntu:~$ ls -l total 56 -rw-rw-r-- 1 devinfo devinfo 0 oct. 17 10:22 linux -rw-rw-r-- 1 devinfo devinfo 0 oct. 17 10:20 test ...
Si le fichier de destination existe déjà, la commande cp peut ne pas vous en avertir. Il est préférable d'ajouter l'option -i pour forcer le shell à vous demander si vous voulez écraser un fichier :
devinfo@ubuntu:~$ cp -i test linux cp : voulez-vous écraser 'linux' ? o
Si vous ne répondez pas, la copie du fichier ne se fait pas. Vous pouvez également copier un fichier dans un répertoire existant :
devinfo@ubuntu:~$ cp test info/ devinfo@ubuntu:~$ ls -l info total 0 -rw-rw-r-- 1 devinfo devinfo 0 oct. 17 10:25 test
Le nouveau fichier se trouve maintenant dans le sous-répertoire info, avec le même nom de fichier que l'original.
Le paramètre -R est une option puissante de la commande cp. Elle vous permet de copier de manière récursive le contenu d'un répertoire entier en une seule commande :
devinfo@ubuntu:~$ cp -R info informatique devinfo@ubuntu:~$ ls -l informatique total 0 -rw-rw-r-- 1 devinfo devinfo 0 oct. 17 10:29 test
Lier des fichiers
Lier des fichiers est une excellente option disponible dans le système de fichiers Linux. Si vous devez conserver deux (ou plus) copies du même fichier sur le système, au lieu d'avoir des copies physiques séparées, vous pouvez utiliser une copie physique et plusieurs copies virtuelles, appelées liens. Un lien est un espace réservé dans un répertoire qui pointe vers l'emplacement réel du fichier. Deux types de liens de fichiers sont disponibles sous Linux :
- Un lien symbolique
- Un lien dur
Un lien symbolique est simplement un fichier physique qui pointe vers un autre fichier quelque part dans la structure du répertoire virtuel. Les deux fichiers liés symboliquement ne partagent pas le même contenu.
Pour créer un lien symbolique vers un fichier, le fichier d'origine doit déjà exister. On peut alors utiliser la commande ln avec l'option -s pour créer le lien symbolique :
devinfo@ubuntu:~/info$ ln -s test lien devinfo@ubuntu:~/info$ ls -l total 0 lrwxrwxrwx 1 devinfo devinfo 4 oct. 17 10:32 lien -> test -rw-rw-r-- 1 devinfo devinfo 0 oct. 17 10:25 test
Un lien dur crée un fichier virtuel distinct qui contient des informations sur le fichier d'origine et l'endroit où le trouver. Cependant, il s'agit physiquement du même fichier. Lorsque vous faites référence au fichier de lien dur, c'est comme si vous faisiez référence au fichier d'origine. Pour créer un lien dur, il faut à nouveau que le fichier d'origine existe déjà, sauf que cette fois, aucun paramètre n'est nécessaire à la commande ln :
devinfo@ubuntu:~/info$ ln test copie devinfo@ubuntu:~/info$ ls -l total 0 -rw-rw-r-- 2 devinfo devinfo 0 oct. 17 10:25 copie lrwxrwxrwx 1 devinfo devinfo 4 oct. 17 10:32 lien -> test -rw-rw-r-- 2 devinfo devinfo 0 oct. 17 10:25 test
Soyez prudent lorsque vous copiez des fichiers liés. Si vous utilisez la commande cp pour copier un fichier lié à un autre fichier source, vous ne faites qu'une nouvelle copie du fichier source. Cela peut vite devenir confus. Au lieu de copier le fichier lié, vous pouvez créer un autre lien vers le fichier original. Vous pouvez avoir plusieurs liens vers le même fichier sans problème. Cependant, vous ne voulez pas non plus créer des liens logiciels vers d'autres fichiers liés. Cela crée une chaîne de liens qui peut être confuse - et facilement cassée - causant toutes sortes de problèmes.
Renommer des fichiers
Dans le monde Linux, renommer des fichiers s'appelle déplacer des fichiers. La commande mv est disponible pour déplacer les fichiers et les répertoires vers un autre emplacement ou un nouveau nom :
devinfo@ubuntu:~/info$ mv copie linux devinfo@ubuntu:~/info$ ls -l total 0 lrwxrwxrwx 1 devinfo devinfo 4 oct. 17 10:32 lien -> test -rw-rw-r-- 2 devinfo devinfo 0 oct. 17 10:25 linux -rw-rw-r-- 2 devinfo devinfo 0 oct. 17 10:25 test
Avec la même syntaxe, vous pouvez renommer un répertoire, déplacer un fichier vers un autre répertoire et ainsi de suite.
Suppression de fichiers
Il est fort probable qu'à un moment donné, vous souhaitiez pouvoir supprimer des fichiers existants. Que ce soit pour nettoyer un système de fichiers ou pour supprimer un logiciel, vous aurez toujours la possibilité de supprimer des fichiers.
La commande pour supprimer des fichiers dans le shell bash est rm. La forme de base de la commande rm est simple :
devinfo@ubuntu:~/info$ rm -i linux rm : supprimer 'linux' du type fichier vide ? o devinfo@ubuntu:~/info$ ls -l total 0 lrwxrwxrwx 1 devinfo devinfo 4 oct. 17 10:32 lien -> test -rw-rw-r-- 1 devinfo devinfo 0 oct. 17 10:25 test
Remarquez que le paramètre de commande -i vous invite à vous assurer que vous êtes bien décidé à supprimer le fichier. Le shell ne dispose pas de corbeille ou de poubelle. Une fois que vous avez supprimé un fichier, il est parti pour toujours. Par conséquent, une bonne habitude consiste à toujours ajouter le paramètre -i à la commande rm.
Vous pouvez également utiliser des métacaractères génériques pour supprimer des groupes de fichiers. Cependant, encore une fois, utilisez cette option -i pour vous protéger :
devinfo@ubuntu:~/info$ ls -l total 0 lrwxrwxrwx 1 devinfo devinfo 4 oct. 17 10:32 lien -> test -rw-rw-r-- 1 devinfo devinfo 0 oct. 17 10:38 livres -rw-rw-r-- 1 devinfo devinfo 0 oct. 17 10:25 test devinfo@ubuntu:~/info$ rm -i l* rm : supprimer 'lien' du type lien symbolique ? o rm : supprimer 'livres' du type fichier vide ? o devinfo@ubuntu:~/info$ ls test
Gestion des répertoires
Linux a quelques commandes qui fonctionnent à la fois pour les fichiers et les répertoires (comme la commande cp), et certaines qui ne fonctionnent que pour les répertoires.
Création de répertoires
La création d'un nouveau répertoire sous Linux est simple — utilisez simplement la commande mkdir :
devinfo@ubuntu:~/info$ mkdir sri devinfo@ubuntu:~/info$ ls -l total 4 drwxrwxr-x 2 devinfo devinfo 4096 oct. 17 10:42 sri -rw-rw-r-- 1 devinfo devinfo 0 oct. 17 10:25 test
Le système crée un nouveau répertoire nommé ubuntu. Notez que ls -l le nouveau répertoire commence par un d. Cela indique que ubuntu n'est pas un fichier, mais un répertoire.
Pour créer plusieurs répertoires et sous-répertoires en même temps, vous devez ajouter le paramètre -p :
devinfo@ubuntu:~/info$ mkdir -p sri/bts/g1 devinfo@ubuntu:~/info$ ls -R .: sri test ./sri: bts ./sri/bts: g1 ./sri/bts/g1:
L'option -p de la commande mkdir crée les répertoires parents manquants si nécessaire. Un répertoire parent est un répertoire qui contient d'autres répertoires au niveau suivant de l'arborescence des répertoires.
Supprimer des répertoires
La suppression de répertoires peut s'avérer délicate, et ce pour une bonne raison. Il y a beaucoup d'opportunités pour que de mauvaises choses se produisent lorsque vous commencez à supprimer des répertoires. L'interpréteur de commandes essaie de nous protéger autant que possible des catastrophes accidentelles. La commande de base pour supprimer un répertoire est rmdir :
devinfo@ubuntu:~/info$ rmdir sri rmdir: impossible de supprimer 'sri': Le dossier n'est pas vide
Par défaut, la commande rmdir ne fonctionne que pour supprimer les répertoires vides. Parce que nous avons créé un fichier, g1, dans le répertoire sri, la commande rmdir refuse de le supprimer.
Vous pouvez également utiliser la commande rm sur des répertoires entiers non vides. L'utilisation de l'option -r permet à la commande de descendre dans le répertoire, de supprimer les fichiers, puis de supprimer le répertoire lui-même :
devinfo@ubuntu:~/info$ rm -r sri devinfo@ubuntu:~/info$ ls -l total 0 -rw-rw-r-- 1 devinfo devinfo 0 oct. 17 10:25 test
Afficher le contenu d’un fichier
Vous pouvez utiliser plusieurs commandes pour rechercher à l'intérieur des fichiers sans avoir un utilitaire d'éditeur de texte.
Afficher le type d'un fichier
Avant d'essayer d'afficher un fichier, essayez de savoir de quel type de fichier il s'agit. Si vous essayez d'afficher un fichier binaire, vous obtenez beaucoup de charabia sur votre écran et pouvez même bloquer votre émulateur de terminal.
La commande file est un petit utilitaire pratique à avoir. Il peut regarder à l'intérieur d'un fichier et déterminer de quel type de fichier il s'agit :
devinfo@ubuntu:~/info$ file sri sri: directory devinfo@ubuntu:~/info$ file test test: ASCII text
La commande file a déterminé non seulement que le fichier contient du texte mais aussi le format de code de caractère du fichier texte, ASCII dans notre cas.
Si vous avez un gros fichier texte, vous voudrez peut-être voir ce qu'il contient. Linux dispose de trois commandes différentes qui peuvent vous aider.
Commande cat
La commande cat est un outil pratique pour afficher toutes les données d'un fichier texte :
devinfo@ubuntu:~$ cat etudiants 1, mostafa, 33, Meknes, 18 2, ismail, 27, Rabat, 16 3, Sara, 25, Paris, 18 4, Alex, 38, Lyon, 15 5, Adam, 48, Fes
Rien d'excitant, juste le contenu du fichier texte. Cependant, la commande cat a quelques paramètres qui peuvent vous aider.
Le paramètre -n numérote toutes les lignes. Le paramètre -n, numérote également les lignes vides.
devinfo@ubuntu:~$ cat -n etudiants 1 1, mostafa, 33, Meknes, 18 2 2, ismail, 27, Rabat, 16 3 3, Sara, 25, Paris, 18 4 4, Alex, 38, Lyon, 15 5 6 5, Adam, 48, Fes 7 8
Si vous voulez seulement numéroter les lignes qui contiennent du texte, le paramètre -b est fait pour vous.
devinfo@ubuntu:~$ cat -b etudiants 1 1, mostafa, 33, Meknes, 18 2 2, ismail, 27, Rabat, 16 3 3, Sara, 25, Paris, 18 4 4, Alex, 38, Lyon, 15 5 5, Adam, 48, Fes
Enfin, si vous ne voulez pas que les caractères de tabulation apparaissent, utilisez le paramètre -T. Le paramètre -T remplace toute tabulation dans le texte par la combinaison de caractères ^I.
Pour les fichiers volumineux, la commande cat peut être quelque peu ennuyeuse. Le texte du fichier défile simplement rapidement hors de l'écran sans s'arrêter. Heureusement, nous avons un moyen simple de résoudre ce problème.
Commande more
Le principal inconvénient de la commande cat est que vous ne pouvez pas contrôler ce qui se passe après l'avoir lancée. Pour résoudre ce problème, les développeurs ont créé la commande more. La commande more affiche un fichier texte, mais s'arrête après avoir affiché chaque page de données.
Commande less
D'après son nom, il semble qu'il ne devrait pas être aussi avancé que la commande more. Cependant, le nom de la commande less est en fait un jeu de mots et est une version avancée de la commande more (le nom de la commande less vient de l'expression « moins c'est plus »). Il fournit plusieurs fonctionnalités très pratiques pour faire défiler un fichier texte vers l'avant et vers l'arrière, ainsi que des capacités de recherche assez avancées.
La commande less peut également afficher le contenu d'un fichier avant d'en terminer la lecture. Les commandes cat et more ne peuvent pas faire cela.
La commande less fonctionne de la même manière que la commande more, en affichant un seul écran de texte d'un fichier à la fois. Elle prend en charge le même jeu de commandes que la commande more, ainsi que de nombreuses autres options.
L'une de ces caractéristiques est que la commande less reconnaît les touches de déplacement vers le haut et vers le bas ainsi que les touches de déplacement vers le haut et vers le bas. Cela vous donne un contrôle total lorsque vous visualisez un fichier.
Afficher des parties d'un fichier
Souvent, les données que vous voulez visualiser se trouvent soit tout en haut, soit au fond d'un fichier texte. Si l'information se trouve en haut d'un grand fichier, vous devez attendre que les commandes cat ou more chargent le fichier entier avant de pouvoir le visualiser. Si l'information se trouve au bas d'un fichier (comme un fichier journal), vous devez parcourir des milliers de lignes de texte pour atteindre les dernières entrées. Heureusement, Linux dispose de commandes spécialisées pour résoudre ces deux problèmes.
commande tail
La commande tail affiche les dernières lignes d'un fichier (la "queue" du fichier). Par défaut, elle affiche les 10 dernières lignes du fichier.
devinfo@ubuntu:~$ tail etudiants 1, mostafa, 33, Meknes, 18 2, ismail, 27, Rabat, 16 3, Sara, 25, Paris, 18 4, Alex, 38, Lyon, 15 5, Adam, 48, Fes 6, Dounia, 30, casablanca, 17
Vous pouvez modifier le nombre de lignes affichées à l'aide de tail en incluant le paramètre -n. Dans cet exemple, seules les deux dernières lignes du fichier sont affichées, en ajoutant -n 2 à la commande tail :
devinfo@ubuntu:~$ tail -n 2 etudiants 5, Adam, 48, Fes 6, Dounia, 30, casablanca, 17
Le paramètre -f est une fonctionnalité assez intéressante de la commande tail. Il vous permet de jeter un coup d'œil à l'intérieur d'un fichier pendant que le fichier est utilisé par d'autres processus. La commande tail reste active et continue d'afficher les nouvelles lignes telles qu'elles apparaissent dans le fichier texte. C'est un excellent moyen de surveiller les fichiers journaux du système en mode temps réel.
Commande head
La commande head fait ce que vous attendez ; il affiche le premier groupe de lignes d'un fichier (la "tête" du fichier). Par défaut, il affiche les 10 premières lignes de texte :
devinfo@ubuntu:~$ head etudiants 1, mostafa, 33, Meknes, 18 2, ismail, 27, Rabat, 16 3, Sara, 25, Paris, 18 4, Alex, 38, Lyon, 15 5, Adam, 48, Fes 6, Dounia, 30, casablanca, 17
Comme la commande tail, la commande head prend en charge le paramètre -n afin que vous puissiez modifier ce qui est affiché.
evinfo@ubuntu:~$ head -n 2 etudiants 1, mostafa, 33, Meknes, 18 2, ismail, 27, Rabat, 16
En général, le début d'un fichier ne change pas, c'est pourquoi la commande head ne prend pas en charge le paramètre -f comme le fait la commande tail. La commande head est un moyen pratique de jeter un coup d'œil au début d'un fichier.