Navigation de base Linux et gestion de fichiers

introduction

Si vous n'avez pas beaucoup d'expérience avec les systèmes Linux, vous risquez d'être submergé par la perspective de contrôler un système d'exploitation à partir de la ligne de commande. Dans ce guide, nous tenterons de vous familiariser avec les bases.

Ce guide ne couvre pas tout ce que vous devez savoir pour utiliser efficacement un système Linux. Cependant, cela devrait vous donner un bon point de départ pour de futures explorations. Ce guide vous donnera le minimum que vous devez savoir avant de passer à d'autres guides.

Prérequis et objectifs

Pour suivre ce guide, vous devez avoir accès à un serveur Linux. Si vous avez besoin d'informations sur la connexion à votre serveur pour la première fois, vous pouvez suivreour guide on connecting to a Linux server using SSH.

Vous voudrez également avoir une compréhension de base du fonctionnement du terminal et de l’apparence des commandes Linux. This guide covers terminal basics, vous devriez donc le vérifier si vous êtes nouveau dans l'utilisation des terminaux.

Tous les éléments de ce guide peuvent être utilisés avec un compte utilisateur normal, non root (non administrateur). Vous pouvez apprendre à configurer ce type de compte utilisateur en suivant le guide de configuration initiale du serveur de votre distribution (Ubuntu 14.04,CentOS 7).

Lorsque vous êtes prêt à commencer, connectez-vous à votre serveur Linux à l'aide de SSH et continuez ci-dessous.

Navigation et exploration

Les compétences les plus fondamentales que vous devez maîtriser sont les suivantes: vous déplacer dans le système de fichiers et vous faire une idée de ce qui vous entoure. Nous discuterons des outils qui vous permettent de le faire dans cette section.

Trouver où vous êtes avec la commande «pwd»

Lorsque vous vous connectez à votre serveur, vous êtes généralement placé dans leshome directory de votre compte utilisateur. Un répertoire de base est un répertoire réservé à votre utilisateur pour stocker des fichiers et créer des répertoires. C'est l'emplacement dans le système de fichiers où vous avez le plein pouvoir.

Pour savoir où se trouve votre répertoire personnel par rapport au reste du système de fichiers, vous pouvez utiliser la commandepwd. Cette commande affiche le répertoire dans lequel nous sommes actuellement:

pwd

Vous devriez obtenir des informations qui ressemblent à ceci:

/home/demo

Le répertoire de base est nommé d'après le compte utilisateur, donc l'exemple ci-dessus est ce que serait la valeur si vous étiez connecté au serveur avec un compte appelédemo. Ce répertoire se trouve dans un répertoire appelé/home, qui est lui-même dans le répertoire de niveau supérieur, qui est appelé «root» mais représenté par une seule barre oblique «/».

Regarder le contenu des répertoires avec “ls”

Maintenant que vous savez comment afficher le répertoire dans lequel vous vous trouvez, nous pouvons vous montrer comment consulter le contenu d'un répertoire.

Actuellement, votre répertoire personnel que nous avons vu ci-dessus n’a pas grand-chose à voir. Nous allons donc explorer un autre répertoire plus peuplé. Tapez le texte suivant dans votre terminal pour accéder à ce répertoire (nous expliquerons les détails du déplacement des répertoires dans la section suivante). Ensuite, nous utiliseronspwd pour confirmer que nous avons réussi à déplacer:

cd /usr/share
pwd
/usr/share

Maintenant que nous sommes dans un nouveau répertoire, voyons ce qu’il contient. Pour ce faire, nous pouvons utiliser la commandels:

ls
adduser            groff                          pam-configs
applications       grub                           perl
apport             grub-gfxpayload-lists          perl5
apps               hal                            pixmaps
apt                i18n                           pkgconfig
aptitude           icons                          polkit-1
apt-xapian-index   info                           popularity-contest
. . .

Comme vous pouvez le voir, il y a des élémentsmany dans ce répertoire. Nous pouvons ajouter des indicateurs facultatifs à la commande pour modifier le comportement par défaut. Par exemple, pour lister tout le contenu sous une forme étendue, nous pouvons utiliser l'indicateur-l (pour une sortie «longue»):

ls -l
total 440
drwxr-xr-x   2 root root  4096 Apr 17  2014 adduser
drwxr-xr-x   2 root root  4096 Sep 24 19:11 applications
drwxr-xr-x   6 root root  4096 Oct  9 18:16 apport
drwxr-xr-x   3 root root  4096 Apr 17  2014 apps
drwxr-xr-x   2 root root  4096 Oct  9 18:15 apt
drwxr-xr-x   2 root root  4096 Apr 17  2014 aptitude
drwxr-xr-x   4 root root  4096 Apr 17  2014 apt-xapian-index
drwxr-xr-x   2 root root  4096 Apr 17  2014 awk
. . .

Cette vue nous donne beaucoup d'informations, dont la plupart sont plutôt inhabituelles. Le premier bloc décrit le type de fichier (si la première colonne est un «d», l'élément est un répertoire, s'il s'agit d'un «-», il s'agit d'un fichier normal) et des autorisations. Chaque colonne suivante, séparée par un espace, décrit le nombre de liens physiques, le propriétaire, le propriétaire du groupe, la taille de l'élément, l'heure de la dernière modification et le nom de l'élément. Nous en décrirons quelques-uns à un autre moment, mais pour l'instant, sachez simplement que vous pouvez afficher ces informations avec l'indicateur-l dels.

Pour obtenir une liste de tous les fichiers, y compris les fichiers et répertoireshidden, vous pouvez ajouter l'indicateur-a. Puisqu'il n'y a pas de vrais fichiers cachés dans le répertoire/usr/share, retournons dans notre répertoire personnel et essayons cette commande. Vous pouvez revenir au répertoire personnel en tapantcd sans argument:

cd
ls -a
.  ..  .bash_logout  .bashrc  .profile

Comme vous pouvez le voir, il y a trois fichiers cachés dans cette démonstration, ainsi que. et.., qui sont des indicateurs spéciaux. Vous constaterez que souvent, les fichiers de configuration sont stockés en tant que fichiers cachés, comme c'est le cas ici.

Pour les entrées à points et à points doubles, ce ne sont pas exactement des répertoires autant que des méthodes intégrées de référence à des répertoires apparentés. Le point unique indique le répertoire en cours et le point double indique le répertoire parent de ce répertoire. Cela sera utile dans la section suivante.

Se déplacer dans le système de fichiers avec “cd”

Nous avons déjà effectué deux déplacements de répertoires afin de démontrer certaines propriétés dels dans la dernière section. Voyons un peu mieux la commande ici.

Commencez par retourner dans le répertoire/usr/share en tapant ceci:

cd /usr/share

Voici un exemple de changement de répertoire en donnant unabsolute path. Sous Linux, chaque fichier et répertoire se trouve sous le répertoire le plus haut, appelé répertoire «racine», mais désigné par une seule barre oblique «/». Un chemin absolu indique l'emplacement d'un répertoire par rapport à ce répertoire de niveau supérieur. Cela nous permet de faire référence aux répertoires de manière non ambiguë à partir de n’importe quel endroit du système de fichiers. Chaque chemin absolumust commence par une barre oblique.

L'alternative consiste à utiliserrelative paths. Les chemins relatifs font référence aux répertoires par rapport au répertoirecurrent. Pour les répertoires proches du répertoire en cours dans la hiérarchie, cela est généralement plus simple et plus rapide. Tous les répertoires du répertoire en cours peuvent être référencés par leur nom sans barre oblique. Nous pouvons passer au répertoirelocale dans/usr/share depuis notre emplacement actuel en tapant:

cd locale

Nous pouvons également déplacer plusieurs niveaux de répertoire avec des chemins relatifs en fournissant la partie du chemin qui suit le chemin du répertoire en cours. De là, nous pouvons accéder au répertoireLC_MESSAGES dans le répertoireen en tapant:

cd en/LC_MESSAGES

Pour remonter vers le parent du répertoire en cours, nous utilisons l'indicateur spécial à double point dont nous avons parlé précédemment. Par exemple, nous sommes maintenant dans le répertoire/usr/share/locale/en/LC_MESSAGES. Pour monter d'un niveau, on peut taper:

cd ..

Cela nous amène au répertoire/usr/share/locale/en.

Un raccourci que vous avez vu précédemment et qui vous ramènera toujours à votre répertoire personnel est d'utilisercd sans fournir de répertoire:

cd
pwd
/home/demo

Pour en savoir plus sur l'utilisation de ces trois commandes, vous pouvez consulterour guide on exploring the Linux filesystem.

Visualiser des fichiers

Dans la dernière section, nous avons appris un peu comment naviguer dans le système de fichiers. Vous avez probablement vu des fichiers lors de l'utilisation de la commandels dans divers répertoires. Dans cette section, nous aborderons différentes manières d’afficher des fichiers. Contrairement à certains systèmes d’exploitation, Linux et d’autres systèmes d’exploitation de type Unix reposent sur des fichiers texte pour de vastes parties du système.

La principale façon dont nous afficherons les fichiers est d'utiliser la commandeless. C'est ce que nous appelons un "pager", car il nous permet de faire défiler les pages d'un fichier. Alors que les commandes précédentes s'exécutaient immédiatement et vous renvoyaient à la ligne de commande,less est une application qui continuera à s'exécuter et à occuper l'écran jusqu'à ce que vous quittiez.

Nous allons ouvrir le fichier/etc/services, qui est un fichier de configuration contenant des informations de service connues du système:

less /etc/services

Le fichier sera ouvert enless, vous permettant de voir la partie du document qui correspond à la zone de la fenêtre du terminal:

# Network services, Internet style
#
# Note that it is presently the policy of IANA to assign a single well-known
# port number for both TCP and UDP; hence, officially ports have two entries
# even if the protocol doesn't support UDP operations.
#
# Updated from http://www.iana.org/assignments/port-numbers and other
# sources like http://www.freebsd.org/cgi/cvsweb.cgi/src/etc/services .
# New ports will be added on request if they have been officially assigned
# by IANA and used in the real-world or are needed by a debian package.
# If you need a huge list of used numbers please install the nmap package.

tcpmux          1/tcp                           # TCP port service multiplexer
echo            7/tcp
. . .

Pour faire défiler, vous pouvez utiliser les flèches haut et bas de votre clavier. Pour parcourir un écran entier d'informations, vous pouvez utiliser soit la barre d'espace, le bouton «Page suivante» de votre clavier, ou le raccourciCTRL-f.

Pour faire défiler vers le haut, vous pouvez utiliser le bouton «Page précédente» ou le raccourci clavierCTRL-b.

Pour rechercher du texte dans le document, vous pouvez taper une barre oblique "/" suivie du terme recherché. Par exemple, pour rechercher «mail», nous tapons:

/mail

Cela fera une recherche dans le document et s'arrêtera au premier résultat. Pour obtenir un autre résultat, vous pouvez taper la clé minusculen:

n

Pour revenir au résultat précédent, utilisez plutôt une majusculeN:

N

Lorsque vous souhaitez quitter le programmeless, vous pouvez taperq pour quitter:

q

Alors que nous nous sommes concentrés sur l'outilless dans cette section, il existe de nombreuses autres façons de visualiser un fichier qui sont utiles dans certaines circonstances. La commandecat affiche le contenu d’un fichier et vous renvoie immédiatement à l’invite. La commandehead, par défaut, affiche les 10 premières lignes d'un fichier. De même, la commandetail affiche les 10 dernières lignes par défaut. Ces commandes affichent le contenu du fichier d’une manière utile pour «canaliser» vers d’autres programmes. Nous discuterons de ce concept dans un futur guide.

N'hésitez pas à voir comment ces commandes affichent le fichier/etc/services différemment.

Manipulation de fichiers et de répertoires

Nous avons appris dans la dernière section comment afficher un fichier. Dans cette section, nous montrerons comment créer et manipuler des fichiers et des répertoires.

Créer un fichier avec "touch"

De nombreuses commandes et programmes peuvent créer des fichiers. La méthode la plus élémentaire pour créer un fichier consiste à utiliser la commandetouch. Cela créera un fichier vide en utilisant le nom et l'emplacement spécifiés.

Tout d’abord, nous devons nous assurer que nous sommes dans notre répertoire personnel, car c’est un emplacement où nous avons l’autorisation de sauvegarder des fichiers. Ensuite, nous pouvons créer un fichier appeléfile1 en tapant:

cd
touch file1

Maintenant, si nous visualisons les fichiers dans notre répertoire, nous pouvons voir notre fichier nouvellement créé:

ls
file1

Si nous utilisons cette commande sur un fichier existant, la commande met simplement à jour les données stockées par notre système de fichiers à l'heure à laquelle le fichier a été accédé et modifié pour la dernière fois. Cela ne nous servira pas beaucoup pour le moment.

Nous pouvons également créer plusieurs fichiers en même temps. Nous pouvons aussi utiliser des chemins absolus. Par exemple, si notre compte utilisateur s'appelledemo, nous pourrions taper:

touch /home/demo/file2 /home/demo/file3
ls
file1  file2  file3

Créer un répertoire avec “mkdir”

Similaire à la commandetouch, la commandemkdir nous permet de créer des répertoires vides.

Par exemple, pour créer un répertoire dans notre répertoire personnel appelétest, nous pourrions taper:

cd
mkdir test

On peut faire d'un répertoirewithin le répertoiretest appeléexample en tapant:

mkdir test/example

Pour que la commande ci-dessus fonctionne, le répertoiretest doit déjà exister. Pour dire àmkdir qu'il doit créer tous les répertoires nécessaires pour construire un chemin de répertoire donné, vous pouvez utiliser l'option-p. Cela vous permet de créer des répertoires imbriqués en une seule étape. Nous pouvons créer une structure de répertoires qui ressemble àsome/other/directories en tapant:

mkdir -p some/other/directories

La commande créera d'abord le répertoiresome, puis elle créera le répertoireother à l'intérieur de celui-ci. Enfin, il créera le répertoiredirectories dans ces deux répertoires.

Déplacer et renommer des fichiers et des répertoires avec «mv»

Nous pouvons déplacer un fichier vers un nouvel emplacement en utilisant la commandemv. Par exemple, nous pouvons déplacerfile1 dans le répertoiretest en tapant:

mv file1 test

Pour cette commande, nous donnons tous les éléments que nous souhaitons déplacer, avec l’emplacement pour les déplacer à la fin. Nous pouvons déplacer ce fichierback vers notre répertoire personnel en utilisant la référence de point spéciale pour faire référence à notre répertoire actuel. Nous devons nous assurer que nous sommes dans notre répertoire de base, puis exécuter la commande suivante:

cd
mv test/file1 .

Cela peut sembler peu intuitif au début, mais la commandemv est également utilisée pour les fichiers et répertoiresrename. En substance, le déplacement et le changement de nom ne font qu'ajuster l'emplacement et le nom d'un élément existant.

Donc, pour renommer le répertoiretest entesting, nous pourrions taper:

mv test testing

Note: Il est important de réaliser que votre système Linux ne vous empêchera pas de certaines actions destructrices. Si vous renommez un fichier et choisissez un nom quealready existe, le fichier précédent seraoverwritten par le fichier que vous déplacez. Il n’existe aucun moyen de récupérer le fichier précédent si vous l’écrasez par inadvertance.

Copier des fichiers et des répertoires avec “cp”

Avec la commandemv, nous pourrions déplacer ou renommer un fichier ou un répertoire, mais nous ne pouvions pas le dupliquer. La commandecp peut faire une nouvelle copie d'un élément existant.

Par exemple, nous pouvons copierfile3 dans un nouveau fichier appeléfile4:

cp file3 file4

Contrairement à une opérationmv, après laquellefile3 n'existerait plus, nous avons maintenant à la foisfile3 etfile4.

Note: Comme pour la commandemv, il est possible deoverwrite un fichier si vous ne faites pas attention au nom de fichier que vous utilisez comme cible de l'opération. Par exemple, sifile4 existait déjà dans l'exemple ci-dessus, son contenu serait complètement remplacé par le contenu defile3.

Pour copier des répertoires, vous devez inclure l'option-r dans la commande. Cela signifie «récursif», car il copie le répertoire, ainsi que tout son contenu. Cette option est nécessaire avec les répertoires, qu’ils soient vides ou non.

Par exemple, pour copier la structure de répertoiressome dans une nouvelle structure appeléeagain, nous pourrions taper:

cp -r some again

Contrairement aux fichiers, avec lesquels une destination existante entraînerait un écrasement, si la cible est unexisting directory, le fichier ou le répertoire est copiéinto la cible:

cp file1 again

Cela créera une nouvelle copie defile1 et la placera dans le répertoireagain.

Suppression de fichiers et de répertoires avec «rm» et «rmdir»

Pour supprimer un fichier, vous pouvez utiliser la commanderm.

Note: soyez extrêmement prudent lorsque vous utilisez une commande destructive telle querm. Il n'y a pas de commande «annuler» pour ces actions, il est donc possible de détruire accidentellement des fichiers importants de façon permanente.

Pour supprimer un fichier normal, passez-le simplement à la commanderm:

cd
rm file4

De même, pour supprimer les répertoiresempty, nous pouvons utiliser la commandermdir. Cela ne réussira que s'il n'y a rien dans le répertoire en question. Par exemple, pour supprimer le répertoireexample dans le répertoiretesting, nous pouvons taper:

rmdir testing/example

Si vous souhaitez supprimer un répertoirenon-empty, vous devrez utiliser à nouveau la commanderm. Cette fois, vous devrez passer l’option-r, qui supprime tout le contenu du répertoire de manière récursive, plus le répertoire lui-même.

Par exemple, pour supprimer le répertoireagain et tout ce qu'il contient, nous pouvons taper:

rm -r again

Encore une fois, il convient de rappeler qu'il s'agit d'actions permanentes. Assurez-vous que la commande que vous avez saisie est celle que vous souhaitez exécuter.

Modification de fichiers

Actuellement, nous savons manipuler des fichiers en tant qu'objets, mais nous n'avons pas appris à les éditer et à leur ajouter du contenu.

La commandenano est l'un des éditeurs de texte Linux en ligne de commande les plus simples et constitue un excellent point de départ pour les débutants. Il fonctionne à peu près de manière similaire au programmeless discuté ci-dessus, en ce qu'il occupe tout le terminal pendant la durée de son utilisation.

L'éditeurnano peut ouvrir des fichiers existants ou créer un fichier. Si vous décidez de créer un nouveau fichier, vous pouvez lui donner un nom lorsque vous appelez l'éditeur denano, ou plus tard, lorsque vous souhaitez enregistrer votre contenu.

Nous pouvons ouvrir le fichierfile1 pour le modifier en tapant:

cd
nano file1

L'applicationnano ouvrira le fichier (qui est actuellement vide). L'interface ressemble à ceci:

  GNU nano 2.2.6                 File: file1








                                  [ Read 0 lines ]
^G Get Help   ^O WriteOut   ^R Read File  ^Y Prev Page  ^K Cut Text   ^C Cur Pos
^X Exit       ^J Justify    ^W Where Is   ^V Next Page  ^U UnCut Text ^T To Spell

En haut, nous avons le nom de l'application et le nom du fichier que nous sommes en train de modifier. Au milieu, le contenu du fichier, actuellement vide, est affiché. En bas, nous avons un certain nombre de combinaisons de touches qui indiquent quelques contrôles de base pour l'éditeur. Pour chacun d'eux, le caractère^ signifie la toucheCTRL.

Pour obtenir de l'aide de l'éditeur, tapez:

CTRL-G

Lorsque vous avez terminé de parcourir l'aide, tapezCTRL-X pour revenir à votre document.

Tapez ou modifiez le texte de votre choix. Pour cet exemple, nous allons simplement taper ces deux phrases:

Hello there.

Here is some text.

Pour sauvegarder notre travail, nous pouvons taper:

CTRL-O

C'est la lettre «o», pas un zéro. Il vous demandera de confirmer le nom du fichier que vous souhaitez enregistrer dans:

File Name to Write: file1
^G Get Help          M-D DOS Format       M-A Append           M-B Backup File
^C Cancel            M-M Mac Format       M-P Prepend

Comme vous pouvez le constater, les options en bas ont également changé. Celles-ci sont contextuelles, ce qui signifie qu'elles changeront en fonction de ce que vous essayez de faire. Sifile1 est toujours le fichier dans lequel vous souhaitez écrire, appuyez sur «ENTER».

Si nous apportons des modifications supplémentaires et souhaitons enregistrer le fichier et quitter le programme, nous verrons une invite similaire. Ajoutez une nouvelle ligne, puis essayez de quitter le programme en tapant:

CTRL-X

Si vous n'avez pas sauvegardé après la modification, il vous sera demandé si vous souhaitez sauvegarder les modifications apportées:

Save modified buffer (ANSWERING "No" WILL DESTROY CHANGES) ?
 Y Yes
 N No           ^C Cancel

Vous pouvez taper «Y» pour enregistrer vos modifications, «N» pour les ignorer et quitter, ou «CTRL-C» pour annuler l'opération de sortie. Si vous choisissez de sauvegarder, vous recevrez le même message que vous avez reçu auparavant, confirmant que vous souhaitez enregistrer les modifications dans le même fichier. Appuyez sur ENTER pour enregistrer le fichier et quitter l'éditeur.

Vous pouvez voir le contenu du fichier que vous avez créé en utilisant soit le programmecat pour afficher le contenu, soit le programmeless pour ouvrir le fichier pour le visualiser. Après avoir visionné avecless, rappelez-vous que vous devez appuyer surq pour revenir au terminal.

less file1
Hello there.

Here is some text.

Another line.

Un autre éditeur que vous pouvez voir référencé dans certains guides estvim ouvi. C'est un éditeur plus avancé qui est très puissant, mais avec une courbe d'apprentissage très raide. Si jamais on vous dit d'utiliservim ouvi, n'hésitez pas à utilisernano à la place. Si vous souhaitez apprendre à utiliservim, lisez nosguide to getting started with vim.

Conclusion

A présent, vous devriez avoir une compréhension de base de la manière de contourner votre serveur Linux et de voir les fichiers et répertoires disponibles. Vous devez également connaître certaines commandes de base de manipulation de fichiers qui vous permettront de visualiser, copier, déplacer ou supprimer des fichiers. Enfin, vous devriez être à l'aise avec quelques modifications de base à l'aide de l'éditeur de texte denano.

Avec ces quelques compétences, vous devriez pouvoir continuer avec d'autres guides et apprendre à tirer le meilleur parti de votre serveur. Dans notre prochain guide, nous discuterons dehow to view and understand Linux permissions.