adplus-dvertising

Manipulation des fichiers et répertoires (création et modification)

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.

Partager ce cours avec tes amis :
Rédigé par ESSADDOUKI Mostafa
ESSADDOUKI
The education of the 21st century opens up opportunities to not merely teach, but to coach, mentor, nurture and inspire.