Fonctions C pour travailler avec des chemins sous Linux. Bases de Linux : introduction à bash. Qu'est-ce que bash

J'ai récemment décrit les commandes permettant de parcourir les répertoires dans le terminal Linux. J'ai donc décidé de continuer l'histoire des commandes de la console. Les mouvements semblent donc réglés. Je souhaite maintenant examiner un peu plus en détail les chemins de répertoire disponibles dans la console.

Examinons d'abord les chemins les plus connus vers nos fichiers et répertoires, à savoir les chemins absolus. Ouvrez un terminal et exécutez une commande qui affiche le chemin complet de votre répertoire personnel. J'ai parlé de cette équipe récemment, ici. Entrer mot de passe:


:~$pwd
/home/dante


Comme vous pouvez le voir, cette commande de console affichait le chemin complet à partir du répertoire racine. Je viens de décrire récemment ce genre de déplacement à travers des répertoires, ce déplacement utilisant un chemin absolu. Mais ce ne sont pas toutes les possibilités pour parcourir les catégories de notre système d’exploitation. Dans le système d'exploitation Linux, il y a aussi la possibilité d'utiliser des chemins relatifs.

Les chemins relatifs dans la console comptent les catégories par rapport à la catégorie dans laquelle vous vous trouvez. Ils peuvent être utilisés en utilisant ".." deux points indiqués devant le dossier auquel nous voulons accéder. Allons quelque part dans notre système d'exploitation. Par exemple, dans un dossier usr et inspecter son contenu avec l'équipe ls.

dante@dante-1001PXD:~$ cd /usr
dante@dante-1001PXD:/usr$ ls

dante@dante-1001PXD:/usr$

Ici, nous voyons une liste des répertoires disponibles. Passons maintenant au répertoire " partager».

dante@dante-1001PXD:~$ cd /usr/share


Donc maintenant nous sommes dans la catégorie /usr/partager comme nous le voyons. Passons maintenant à une catégorie qui se situe au même niveau que la catégorie dans laquelle nous nous trouvons. Par exemple, dans la catégorie " locale" Cela peut être fait en utilisant un chemin absolu comme celui-ci.

dante@dante-1001PXD:~$ cd /usr/local

dante@dante-1001PXD:/usr/share$ mot de passe
/usr/partager
dante@dante-1001PXD:/usr/share$


Comme vous pouvez le constater, je vous ai affiché dans la console le chemin complet vers l'endroit où vous vous trouvez. On sait que le répertoire " locale" est au même niveau que le répertoire " partager» et nous pouvons utiliser une commande comme celle-ci.

dante@dante-1001PXD:/usr/share$ cd ../local
dante@dante-1001PXD:/usr/local$


Comme vous pouvez le constater, la commande query est devenue beaucoup plus simple. Mais ce n'est que si vous vous souvenez des répertoires qui se trouvent au même niveau que votre répertoire de travail, et je ne me souviens pas toujours des autres répertoires de la console.

Pour passer au répertoire suivant, entrez simplement la commande dans la console concernant votre répertoire de travail. À ces fins, utilisez plutôt ".." deux points, "." d'un point et vous vous déplacerez par rapport au répertoire de la console dans lequel vous vous trouvez actuellement. Revenons au répertoire /usr et regardons à nouveau ce qu'il y a là.

dante@dante-1001PXD:/usr/local$cd /usr
dante@dante-1001PXD:/usr$ ls
les jeux bin incluent lib local sbin share src
dante@dante-1001PXD:/usr$


Passons maintenant au répertoire " partager» par rapport au répertoire dans lequel nous nous trouvons actuellement. Pour cela, entrez dans la console

dante@dante-1001PXD:/usr$ cd ./local
dante@dante-1001PXD:/usr/local$


Comme vous pouvez le constater, l'utilisation de chemins relatifs peut réduire considérablement les commandes que vous saisissez dans la console. Linux.

Tous les fichiers sous Linux ont une adresse spécifique dans le système de fichiers avec laquelle nous pouvons y accéder à l'aide d'un gestionnaire de fichiers ou d'utilitaires de console. C'est un sujet assez simple, mais de nombreux débutants ont des difficultés avec lui.

Dans le court article d'aujourd'hui, nous examinerons quel est le chemin d'accès à un fichier Linux, ce qu'il peut être, comment l'écrire correctement et bien plus encore. Si vous avez déjà rencontré des difficultés avec cela, après avoir lu l'article, tout deviendra complètement clair.

Chemins de fichiers sous Linux

Le système de fichiers Linux est très différent de Windows. Nous ne considérerons pas sa structure, cela a été fait plus tôt. Nous nous concentrerons sur le travail avec des fichiers.

La différence la plus importante est que l'adresse du fichier ne commence pas à partir du lecteur, par exemple C:\ ou D:\ comme cela se produit sous Windows, mais à partir de la racine, le répertoire système racine auquel tous les autres sont connectés. Son adresse - /. Et ici, nous devons parler d'adresses. Les chemins de fichiers Linux utilisent une barre oblique "/" pour séparer les répertoires dans l'adresse, ce qui est différent de ce que vous avez l'habitude de voir sous Windows - \.

Par exemple, si sous Windows le chemin complet du fichier sur le bureau ressemblait à C:\Users\Sergiy\Desktop\, alors le chemin du fichier sous Linux sera simplement /home/sergiy/desktop/. Avec cela, tout est simple et clair jusqu'à présent. Mais des problèmes surgissent encore.

Dans le système d'exploitation Linux, il peut exister plusieurs types de chemins de fichiers. Regardons quels chemins existent sous Linux :

  • Chemin Linux complet et absolu depuis la racine du système de fichiers- vous avez déjà vu ce chemin dans l'exemple ci-dessus, il part de la racine « / » et décrit le chemin complet du fichier ;
  • Chemin relatif Linux- c'est le chemin d'accès au fichier par rapport au dossier actuel ; de tels chemins prêtent souvent à confusion.
  • Chemin relatif au dossier de départ de l'utilisateur actuel.- chemin dans le système de fichiers, mais pas depuis la racine, mais depuis le dossier de l'utilisateur actuel.

Examinons maintenant de plus près à quoi ressemblent ces chemins sous Linux, et examinons également quelques exemples pour que ce soit tout à fait clair. Pour la démonstration, nous utiliserons l'utilitaire ls, conçu pour visualiser le contenu des répertoires.

Par exemple, nous avons un répertoire comme celui-ci dans notre dossier personnel contenant quatre fichiers :

Voici à quoi ressemblera le chemin Linux complet vers l'un des fichiers :

ls /home/sergiy/tmp/file1

Il s'agit déjà d'un chemin Linux relatif, qui part du dossier de départ, il est désigné ~/. Notez, pas ~, à savoir ~/. Ensuite, vous pouvez spécifier des sous-dossiers, dans notre cas tmp :

Eh bien, ou le chemin du fichier sous Linux, par rapport au dossier actuel :

Le premier lien pointe vers le dossier actuel (.), le second (..) pointe vers un dossier supérieur. Cela ouvre des possibilités encore plus grandes pour la navigation dans le catalogue. Par exemple, pour faire référence à un fichier dans le dossier actuel, vous pouvez utiliser la construction suivante :

Cela ne sert à rien lors de la visualisation du contenu d'un fichier. Mais c'est très important lors de l'exécution du programme. Parce que le programme sera d'abord recherché dans l'environnement PATH, puis seulement dans ce dossier. Par conséquent, si vous devez exécuter un programme qui se trouve dans le dossier actuel et qu'il s'appelle exactement de la même manière que celui du répertoire /bin, alors sans lien explicite dont vous avez besoin pour rechercher le fichier dans le dossier actuel, rien ne fonctionnera.

De telles constructions peuvent se produire assez souvent lors de la compilation de programmes. Vous pouvez utiliser tous ces symboles et chemins de fichiers Linux non seulement dans le terminal, mais également dans n'importe quel gestionnaire de fichiers, ce qui peut être très pratique.

Mais le terminal Linux offre encore plus d'options. Vous pouvez utiliser de simples caractères génériques directement dans les adresses de fichiers ou de répertoires. Par exemple, vous pouvez lister tous les fichiers commençant par f :

Ou vous pouvez même effectuer une recherche non seulement dans le dossier tmp, mais dans n'importe quel sous-dossier de votre dossier personnel :

Et tout cela fonctionnera, peut-être que ce n'est pas toujours nécessaire et pratique. Mais dans certaines situations, cela peut être très utile. Ces fonctions sont implémentées au niveau du shell Bash, vous pouvez donc les utiliser dans n'importe quelle commande. Le shell examine combien de fichiers ont été trouvés et appelle une commande pour chacun d'eux.

conclusions

C'est tout. Vous savez maintenant tout ce dont vous avez besoin non seulement pour écrire le chemin correct vers un fichier Linux, mais également pour effectuer des actions plus complexes, telles que rechercher des fichiers ou naviguer dans des répertoires à l'aide de la commande cd. Si vous avez des questions, posez-les dans les commentaires !

Articles Similaires:


Après avoir lu cet article, vous découvrirez de quoi il s'agit frapper(interpréteur de commandes Linux standard), apprenez à utiliser les commandes standards : ls, CP, mv... comprendre le but des inodes, des liens physiques et symboliques, et bien plus encore.

Ce didacticiel est destiné à ceux qui découvrent Linux et à ceux qui souhaitent revoir ou améliorer leur compréhension des principes de base de Linux, tels que la copie et le déplacement de fichiers, la création de liens, l'utilisation de commandes Linux standard ainsi que de redirections et de canaux. Dans cet article, vous trouverez de nombreux exemples qui expliquent le matériel présenté. Pour les débutants, la plupart des informations seront nouvelles, mais pour les utilisateurs plus avancés, ce matériel peut être un excellent outil pour résumer les connaissances et compétences existantes.

Introduction à bash

Coquille

Si vous utilisez Linux, vous savez qu'après vous être connecté, vous êtes accueilli par une invite d'interpréteur de commandes. Par exemple ceci :

\$

Si après la connexion, le shell graphique est chargé, alors pour accéder à l'interpréteur de commandes, vous devez lancer un émulateur de terminal (gnome-terminal, xfce4-terminal, konsole, xterm, rxvt...) ou passer à l'un des terminaux virtuels. en cliquant CtrlAltF1 ou CtrlAltF2 etc.

L'invite du shell sur votre ordinateur peut différer de celle affichée dans l'exemple. Il peut contenir le nom d'utilisateur, le nom de l'ordinateur et le nom du répertoire de travail actuel. Mais malgré toutes ces différences, le programme qui imprime cette invitation s'appelle " coquille"(shell), et très probablement votre shell de commande est un programme appelé frapper.

Est-ce que vous utilisez bash ?

Vous pouvez vérifier si bash est en cours d'exécution avec la commande suivante :

\$ écho \$SHELL/bin/bash

Si vous recevez une erreur à la suite de l'exécution de cette commande ou si son résultat diffère de celui de l'exemple, il est alors possible que votre système n'utilise pas bash comme shell de commande. Malgré cela, la plupart du matériel sera pertinent, mais nous vous recommandons tout de même de passer à bash. Cela peut être fait (si bash est installé sur le système) avec la commande :

\$ frapper

Qu'est-ce que bash

Bash (un acronyme pour " B notre- un gagner SH ell") est l'interpréteur de commandes standard sur la plupart des systèmes Linux. Ses responsabilités incluent le traitement et l'exécution des commandes avec lesquelles l'utilisateur contrôle l'ordinateur. Une fois que vous avez terminé, vous pouvez quitter le processus shell. Après avoir appuyé sur les touches CtrlD, équipes sortie ou Se déconnecter Le processus shell sera terminé et vous serez invité à saisir à nouveau votre nom d'utilisateur et votre mot de passe.

Utiliser "cd"

Commençons par utiliser bash pour naviguer dans le système de fichiers. Pour commencer, tapez la commande suivante :

$ CD/

Avec cette commande, nous avons indiqué à bash que nous souhaitions nous déplacer vers le répertoire racine - / . Tous les répertoires du système sont organisés dans une structure arborescente et / c'est son début (ou sa racine). Équipe CD sert à changer le répertoire de travail actuel.

Chemins

Pour savoir où vous vous trouvez actuellement dans le système de fichiers (répertoire de travail actuel), tapez :

\$ mot de passe /

Dans l'exemple ci-dessus / - argument de commande CD- appelé chemin. C'est l'emplacement du système de fichiers où nous voulons nous déplacer. Dans ce cas / - chemin absolu, cela signifie que le chemin est relatif au répertoire racine.

Chemins absolus

Voici quelques exemples de chemins absolus

/dev /usr /usr/bin /usr/local/bin

Comme vous l'avez peut-être déjà remarqué, tous ces chemins ont en commun de commencer par / . En spécifiant le chemin /usr/local/bin comme argument de la commande CD nous lui disons d'aller dans le répertoire racine / , puis dans le répertoire usr, puis dans local et bin. Les chemins absolus commencent toujours par /

Chemins relatifs

Le deuxième type de chemin est dit relatif. Frapper, équipe CD et d'autres commandes comptent ces chemins par rapport au répertoire courant. Les chemins relatifs ne commencent jamais par / . Par exemple, si nous sommes dans /usr

\$ cd/usr

Ensuite, nous pouvons aller dans /usr/local/bin en utilisant le chemin relatif

\$ cd local/bin \$ mot de passe/usr/local/bin

Utilisation ".."

Les chemins relatifs peuvent contenir un ou plusieurs répertoires «..» . ".." indique le répertoire parent de notre répertoire de travail. Exemple:

\$ mot de passe/usr/local/bin\$ CD.. \$ mot de passe/usr/local

Comme vous pouvez le constater, l'équipe CD..« nous élève à un niveau supérieur ».

Peut ajouter .. au chemin relatif. Cela nous permettra de passer à un répertoire qui se trouve au même niveau que celui dans lequel nous nous trouvons. Exemple:

\$ mot de passe/usr/local\$ cd ../partage \$ mot de passe/usr/partager

Exemples utilisant des chemins relatifs

Les chemins relatifs peuvent être assez délicats. Voici quelques exemples. Le résultat de l'exécution des commandes n'est pas affiché, essayez de déterminer dans quel répertoire vous vous trouverez en utilisant bash.

\$ cd/bin \$ cd ../usr/share/zoneinfo \$ cd /usr/X11R6/bin \$ cd ../lib/X11 \$ cd /usr/bin \$ cd ../bin/../bin

Directeur de travail "."

Avant de finir de parler de l'équipe CD, il y a quelques autres choses qui méritent d'être mentionnées. Premièrement, il existe un autre répertoire spécial «.» , qui pointe vers le répertoire courant. Ce répertoire est utilisé pour exécuter les fichiers exécutables situés dans le répertoire courant.

\$ ./monprog

Dans le dernier exemple, myprog est un fichier exécutable situé dans le répertoire courant qui sera lancé pour exécution.

cd et répertoire personnel de l'utilisateur

Pour accéder à votre répertoire personnel, vous devez taper

\$ CD

Sans argument, cd vous déplacera vers votre répertoire personnel. Pour un superutilisateur, le répertoire personnel est généralement /root, et pour les utilisateurs réguliers - /home/username/. Mais que se passe-t-il si nous voulons spécifier un fichier spécifique situé dans le répertoire personnel. Par exemple, comme argument du programme 'monprog'? Tu peux écrire:

\$ ./monprog /home/user/monfichier.txt

Cependant, utiliser des chemins absolus vers les fichiers n’est pas toujours pratique. La même opération peut être effectuée en utilisant ~ –tildes :

\$ ./monprog ~/monfichier.txt

~ - un nom spécial qui pointe vers le répertoire personnel de l'utilisateur dans bash.

Répertoires personnels des autres utilisateurs

Mais que se passe-t-il si nous devons pointer vers un fichier dans le répertoire personnel d'un autre utilisateur ? Pour ce faire, après le tilde vous devez indiquer le nom de cet utilisateur. Par exemple, pour pointer vers le fichier fredsfile.txt situé dans le répertoire personnel de l'utilisateur fred :

\$ ./monprog ~fred/fredsfile.txt

Commandes Linux

Introduction à LS

Vous connaissez probablement déjà l'équipe ls, qui, appelé sans arguments, affiche une liste des fichiers stockés dans le répertoire de travail :

\$ cd/usr \$ ls X11R6 doc i686-pc-linux-gnu lib man sbin ssl bin gentoo-x86 inclut libexec portage share tmp distfiles i686-linux info local portage.old src

Si vous spécifiez l'option -un, vous pourrez voir tous les fichiers, y compris ceux cachés (dont les noms commencent par un point).

\$ ls-a. bin gentoo-x86 inclut libexec portage share tmp .. distfiles i686-linux info local portage.old src X11R6 doc i686-pc-linux-gnu lib man sbin ssl

Liste détaillée des répertoires

Après la commande elle-même ls un ou plusieurs fichiers ou répertoires peuvent être spécifiés comme argument. Si vous spécifiez un nom de fichier, la commande ls affichera des informations uniquement sur ce fichier. Et si vous spécifiez le nom du répertoire, ls affichera tout son contenu. Option '-l'équipes ls peut être très utile si vous souhaitez, en plus des noms de fichiers, connaître des informations plus détaillées à leur sujet (droits du fichier, nom du propriétaire, heure de la dernière modification du fichier et sa taille).

L'exemple suivant montre l'utilisation de l'option '-l' pour afficher des informations sur les fichiers stockés dans le répertoire /usr

\$ ls -l /usr drwxr-xr-x 7 racine racine 168 24 novembre 14:02 X11R6 drwxr-xr-x 2 racine racine 14576 27 décembre 08:56 bin drwxr-xr-x 2 racine racine 8856 26 décembre 12:47 distfiles lrwxrwxrwx 1 racine racine 9 22 décembre 20:57 doc -> share/doc drwxr-xr-x 62 root root 1856 27 décembre 15:54 gentoo-x86 drwxr-xr-x 4 root root 152 12 décembre 23:10 i686-linux drwxr-xr-x 4 racine racine 96 24 novembre 13:17 i686-pc-linux-gnu drwxr-xr-x 54 racine racine 5992 24 décembre 22:30 inclure lrwxrwxrwx 1 racine racine 10 décembre 22 20:57 info -> partage/info drwxr-xr -x 28 racine racine 13552 26 décembre 00:31 lib drwxr-xr-x 3 racine racine 72 25 novembre 00:34 libexec drwxr-xr-x 8 racine racine 240 22 décembre 20:57 local lrwxrwxrwx 1 racine racine 9 décembre 22 20 :57 man -> share/man lrwxrwxrwx 1 root root 11 décembre 8 07:59 portage -> gentoo-x86/ drwxr-xr-x 60 root root 1864 8 décembre 07:55 portage.old drwxr-xr-x 3 root root 3096 22 décembre 20:57 sbin drwxr-xr-x 46 racine racine 1144 24 décembre 15:32 partage drwxr-xr-x 8 racine racine 328 26 décembre 00:07 src drwxr-xr-x 6 racine racine 176 24 novembre 14 : 25 ssl lrwxrwxrwx 1 racine racine 10 décembre 22 20:57 tmp -> ../var/tmp

La première colonne affiche des informations sur les droits d'accès de chaque fichier de la liste. (Un peu plus tard, j'expliquerai quelle lettre signifie quoi) La colonne suivante montre le nombre de liens vers chaque élément de la liste. Les troisième et quatrième colonnes correspondent respectivement au propriétaire et au groupe du fichier. La cinquième colonne est la taille. Le sixième est l’heure à laquelle le fichier a été modifié pour la dernière fois (« heure de la dernière modification » ou mtime). La dernière colonne est le nom du fichier ou du répertoire (s'il s'agit d'un lien, alors après le ' –> ‘ représente le nom de l’objet auquel il fait référence).

Comment afficher uniquement les répertoires

Parfois, il est nécessaire d'afficher uniquement des informations sur les répertoires, et non sur l'ensemble de leur contenu. L'option vous aidera à faire face à cette tâche '-d', qui indique à la commande d'afficher uniquement les informations sur les répertoires. Exemple:

\$ ls -dl /usr /usr/bin /usr/X11R6/bin ../share drwxr-xr-x 4 racine racine 96 18 décembre 18:17 ../share drwxr-xr-x 17 racine racine 576 24 décembre 09:03 /usr drwxr-xr-x 2 racine racine 3192 26 décembre 12:52 /usr /X11R6/bin drwxr-xr-x 2 racine racine 14576 27 décembre 08:56 /usr/bin

Liste récursive et informations sur les inodes

Action optionnelle '-R' le contraire de l'action '-d'. Il permet d'afficher de manière récursive des informations sur les fichiers situés dans un répertoire. Tout d'abord, le contenu du répertoire de niveau supérieur est affiché, puis le contenu de tous les sous-répertoires tour à tour, et ainsi de suite. Le résultat de cette commande peut être assez long, nous ne fournissons donc pas d'exemple, mais vous pouvez l'essayer vous-même en tapant ' ls-R' ou ' ls-Rl‘.

Et enfin, l'option '-je' utilisé pour imprimer les inodes de chaque objet du système de fichiers.

\$ ls -i /usr 1409 X11R6 314258 i686-linux 43090 libexec 13394 sbin 1417 bin 1513 i686-pc-linux-gnu 5120 local 13408 partage 8316 distfiles 1517 include 776 man 23779 src 43 doc 1386 info 9389 2 portage 36737 ssl 70744 gentoo-x86 1585 lib 5132 portage. vieux 784 tmp

Que sont les inodes ?

Chaque objet du système de fichiers (fichier, répertoire...) possède son propre numéro unique, appelé inode(numéro d'inode). Ces informations peuvent sembler insignifiantes, mais comprendre la fonction des inodes vous aidera à comprendre de nombreuses opérations du système de fichiers. Par exemple, regardons «.» Et «..» comme les liens présents dans chaque répertoire. Comprendre ce qu'est un répertoire «..» , recherchez l'inode du répertoire /use/local

\$ ls -id /usr/local 5120 /usr/local

Comme nous pouvons le voir, l’inode du répertoire /usr/local est 5120. Voyons maintenant quel inode le répertoire /usr/local/bin/.. possède :

\$ ls -id /usr/local/bin/.. 5120 /usr/local/bin/..

Il s'avère que les inodes des répertoires /usr/local et /usr/local/bin/.. sont les mêmes ! Cela signifie que l'inode 5120 est référencé par deux noms : /usr/local et /usr/local/bin/.. Autrement dit, ce sont deux noms différents pour le même répertoire. Chaque inode pointe vers un emplacement spécifique sur le disque.

Chaque inode peut être associé à plusieurs noms d'objets de système de fichiers. Le nombre de « synonymes » de fichiers (objets du système de fichiers faisant référence au même inode) est indiqué par le numéro dans la deuxième colonne de la sortie de la commande ' ls-l‘.

\$ ls -dl /usr/local drwxr-xr-x 8 racine racine 240 22 décembre 20:57 /usr/local

Cet exemple montre (deuxième colonne) que le répertoire /usr/local est référencé par 8 objets de système de fichiers différents. Voici leurs noms :

/usr/local /usr/local/. /usr/local/bin/.. /usr/local/games/.. /usr/local/lib/.. /usr/local/sbin/.. /usr/local/share/.. /usr/local/ src/..

mkdir

Regardons la commande mkdir. Il est utilisé pour créer de nouveaux répertoires. L'exemple suivant montre la création de trois nouveaux répertoires (tic, tac, toe) dans le répertoire /tmp

\$ cd/tmp $ mkdir tic tac toe

Commande par défaut mkdir ne peut pas créer une structure de répertoires imbriquée. Par conséquent, si vous devez créer plusieurs répertoires imbriqués ( merveilleux), vous devrez alors appeler cette commande trois fois de suite :

\$ mkdir gagné/der/ful mkdir : impossible de créer le répertoire "won/der/ful" : aucun fichier ou répertoire de ce type \$ mkdir a gagné \$ mkdir a gagné/der \$ mkdir gagné/der/ful

Vous pouvez simplifier cette opération en ajoutant l'option '-p'à la commande mkdir. Cette option vous permet de créer une structure de répertoires imbriquée :

\$ mkdir -p facile/comme/tarte

Pour en savoir plus sur les capacités de cet utilitaire, lisez l'aide appelée par la commande homme mkdir. Il existe une aide pour presque toutes les commandes de ce manuel (par exemple mec, c'est), sauf CD, parce que il est intégré à bash (pour de telles commandes, l'aide est appelée comme ceci : CD d'aide)

touche

Passons à l'étude des commandes CP Et mv, utilisé pour copier, renommer et déplacer des fichiers et des répertoires. Mais avant cela, créons un fichier vide dans le répertoire /tmp à l'aide de la commande touche:

\$ cd/tmp \$ touche moi

Équipe touche met à jour l'heure du dernier accès au fichier (sixième colonne de la sortie de la commande ls-l) s'il existe déjà ou crée un nouveau fichier vide s'il n'existe pas encore. Après cette opération nous devrions avoir un fichier vide /tmp/copieme.

écho

Maintenant que nous avons un fichier vide, écrivons-y une chaîne de texte à l'aide de la commande écho, qui imprime l'argument qui lui est transmis sur le périphérique de sortie standard (un terminal texte dans notre cas).

\$ echo "premier fichier" premier fichier

Pour écrire une ligne dans notre fichier, redirigeons-y la sortie de la commande écho:

\$ echo "premier fichier" > copier-moi

Signe > (more) indique au shell de rediriger la sortie de la commande de gauche vers le fichier dont le nom est à droite. Si un fichier du même nom n'existe pas, il sera créé automatiquement. Et si un tel fichier existe déjà, il sera écrasé (tout son contenu sera effacé avant d'écrire notre ligne). Équipe 'ls-l' montrera que la taille de notre fichier est maintenant de 10 octets - neuf octets sont occupés par le mot « firstfile » et un octet par le caractère de saut de ligne.

\$ ls -l copie moi-rw-r--r-- 1 racine racine 10 décembre 28 14:13 copie

chat et cp

Pour afficher le contenu d'un fichier sur le terminal, utilisez la commande chat:

\$ copie de chat premier fichier

Nous pouvons maintenant commencer à analyser les fonctionnalités de base de la commande CP. Cette commande prend deux arguments. Le premier est le nom du fichier existant (« copyme »), le second est le nom de la nouvelle copie que nous voulons faire (« copiedme »).

\$ cp copie moi copié moi

Nous pouvons nous assurer que la nouvelle copie du fichier a un numéro d'inode différent (cela signifie que nous avons effectivement reçu un nouveau fichier séparé, et pas seulement un lien vers l'ancien)

\$ ls -i copie-moi copie-moi 648284 copie moi 650704 copie moi

mv

Utilisons maintenant la commande mv pour renommer le fichier (« copiéme » -> « movedme »). Le numéro d'inode ne change pas après cette opération, seul le nom du fichier change.

\$ mv m'a copié m'a déplacé \$ ls -je m'ai déplacé 648284 m'a ému

Le numéro d'inode ne change pas uniquement si le fichier renommé reste dans le système de fichiers où se trouvait le fichier d'origine. Nous examinerons de plus près la structure des systèmes de fichiers dans l'une des parties suivantes de ce didacticiel.

Équipe mv vous permet non seulement de renommer des fichiers, mais aussi de les déplacer. Par exemple, pour déplacer un fichier /var/tmp/monfichier.txt au répertoire /accueil/utilisateur vous devez donner la commande :

\$ mv /var/tmp/monfichier.txt /home/user

Le fichier sera déplacé vers le répertoire personnel de l'utilisateur utilisateur même s'il se trouve sur un système de fichiers différent (dans ce cas, le fichier sera copié vers un nouvel emplacement après quoi l'original sera supprimé). Comme vous l'avez peut-être deviné, déplacer un fichier vers un autre système de fichiers modifie son inode. Cela se produit parce que chaque système de fichiers possède son propre ensemble d'inodes distincts.

Il convient de noter qu'il est possible que le nouveau numéro d'inode attribué coïncide avec l'ancien, mais il est extrêmement faible.

Pour déplacer plusieurs fichiers en même temps vers un même répertoire, vous devez écrire :

\$ mv /var/tmp/monfichier1.txt /var/tmp/monfichier2.txt /home/user \$ mv -t /home/user /var/tmp/monfichier1.txt /var/tmp/monfichier2.txt

Si vous ajoutez l'option '-v', un rapport sur l'opération effectuée s'affichera à l'écran :

\$ mv -vt /home/user /var/tmp/monfichier1.txt /var/tmp/monfichier2.txt"/var/tmp/monfichier1.txt" -> "/home/user/monfichier1.txt" "/var/tmp/monfichier2.txt" -> "/home/user/monfichier2.txt"