Introduction à Linux

De Wiki de Calcul Québec
Aller à : Navigation, rechercher
Autres langues :anglais 100% • ‎français 100%

Cet article s'adresse aux utilisateurs de systèmes Windows ou Mac qui n'ont pas ou peu d'expérience sous environnement UNIX. Il devrait vous donner les bases nécessaires pour accéder aux serveurs de calcul et être rapidement capable de les utiliser.

La connexion aux serveurs utilise le protocole SSH, en mode texte (voir la section Se connecter et transférer des fichiers). Vous ne disposez pas d'une interface graphique, mais d'une console. Notez que les exécutables Windows ne fonctionnent pas sur nos serveurs, à moins d'utiliser un émulateur.

Sommaire

Obtenir de l'aide

En général, les commandes sont documentées dans les manuels de références disponibles sur les serveurs. Vous pouvez y accéder à partir du terminal :

[nom@serveur $] man commande


man utilise less (voir section Visualiser et éditer des fichiers), il faut appuyer sur q pour quitter le programme.

Pour trouver des pages de manuel se rapportant à un sujet ou mot clef, vous pouvez taper :

[nom@serveur $] apropos sujet


Par convention, les exécutables contiennent eux-même une aide sur la façon dont ils doivent être utilisés.

En général, on invoque cette aide en passant -h ou --help en argument à la commande et, dans certains cas, -help.

S'orienter sur le système

Au moment de la connexion, vous serez dirigé dans le répertoire $HOME de votre compte utilisateur. Lors de la création d'un compte, le $HOME ne contient en général que des fichiers de configuration, qui sont cachés (fichiers préfixés par un « . »).

Dans un système Linux, il est fortement déconseillé de créer des fichiers ou répertoires dont les noms contiennent des espaces ou des caractères spéciaux. Ces caractères spéciaux incluent les accents.

Lister le contenu d'un répertoire

Pour lister les fichiers d'un répertoire dans un terminal, on utilise la commande ls (list) :

[nom@serveur $] ls


Pour inclure dans la liste les fichiers cachés :

[nom@serveur $] ls -a


Pour trier les résultats par date (du plus récent au plus ancien) plutôt qu'en ordre alphabétique :

[nom@serveur $] ls -t


Enfin, pour obtenir des informations détaillés sur les fichiers (permissions d'accès, propriétaire, groupe, taille et date de dernière modification) :

[nom@serveur $] ls -l


L'option -h donne la taille des fichiers dans un format aisément lisible par les humains.

Les options peuvent être combinées, par exemple :

[nom@serveur $] ls -alth


Naviguer dans le système de fichier

Pour se déplacer dans le système de fichier, on utilise la commande cd (change directory).

Ainsi, pour se déplacer dans mon_répertoire on tapera :

[nom@serveur $] cd mon_répertoire


Pour revenir au dossier parent on tapera :

[nom@serveur $] cd ..


Enfin, pour revenir à la racine de son compte utilisateur ($HOME) :

[nom@serveur $] cd


Créer et supprimer des répertoires

Pour créer un répertoire, on utilise la commande mkdir (make directory) :

[nom@serveur $] mkdir mon_répertoire


Pour supprimer un répertoire, on utilise la commande rmdir (remove directory) :

[nom@serveur $] rmdir mon_répertoire


La suppression d'un répertoire avec cette méthode ne fonctionnera que si celui-ci est vide.

Supprimer des fichiers

On efface des fichiers grâce à la commande rm (remove) :

[nom@serveur $] rm mon_fichier


On peut effacer un répertoire récursivement :

[nom@serveur $] rm -r mon_répertoire


L'option (potentiellement dangereuse!) -f peut être utile pour passer outre les demandes de confirmation de suppression et poursuivre l'opération après une erreur.

Copier et renommer des fichiers ou répertoires

Pour copier un fichier on utilise la commande cp (copy) :

[nom@serveur $] cp fichier_source fichier_destination


Pour copier récursivement un répertoire :

[nom@serveur $] cp -R dossier_source dossier_destination


Pour renommer un fichier ou un dossier, on utilise la commande mv (move) :

[nom@serveur $] mv fichier_source fichier_destination


Cette commande permet également de déplacer un fichier ou un dossier. Le fichier_destination est alors remplacé par le répertoire_destination.

Les permissions associées aux fichiers

Le système comporte trois niveaux de permissions : lecture (r), écriture (w) et exécution (x). Pour un fichier, il faut que le fichier soit accessible en lecture pour être lu, en écriture pour qu'on puisse le modifier et en exécution pour l'exécuter (si c'est un exécutable ou un script). Pour un répertoire, il faut la permission de lecture pour en lister le contenu, la permission d'écriture pour en modifier le contenu (ajouter ou supprimer un fichier) et la permission d'exécution pour entrer dans le répertoire.

Les permissions s'appliquent à trois types de personnes. Le propriétaire (u), le groupe (g) et les autres personnes (o). Pour connaître les permissions associées aux fichiers et sous-répertoires du répertoire courant, on utilise la commande :

[nom@serveur $] ls -la


Les 10 caractères au début de chaque ligne indiquent les permissions. Le premier caractère indique le type de fichier :

  • - : un fichier normal
  • d : un répertoire
  • l : un lien symbolique

Ensuite, on retrouve, dans l'ordre, les permissions en lecture, écriture et exécution du propriétaire, du groupe et des autres usagers. Voici quelques exemples :

  • drwxrwxrwx : un répertoire accessible en lecture et en écriture par tout le monde
  • drwxr-xr-x : un répertoire qui peut être listé par tout le monde, mais où seul le propriétaire peut ajouter ou supprimer des fichiers
  • -rwxr-xr-x : un fichier exécutable par tout le monde, mais qui ne peut être modifié que par son propriétaire
  • -rw-r--r-- : un fichier lisible par tout le monde, mais qui ne peut être modifié que par son propriétaire
  • -rw-rw---- : un fichier qui peut être lu et modifié par son propriétaire ou par son groupe
  • -rw------- : un fichier qui ne peut être lu ou modifié que par son propriétaire
  • drwx--x--x : un répertoire qui ne peut être listé ou modifié que par son propriétaire, mais au travers duquel tous peuvent passer pour se rentre à un sous-répertoire plus profond
  • drwx-wx-wx : un répertoire dans lequel tous peuvent écrire, mais dont seul le propriétaire peut lister le contenu

Il est important de noter que pour pouvoir lire ou écrire dans un répertoire, il est nécessaire d'avoir l'accès en exécution (x) dans tous les répertoires parents, jusqu'à la racine / du système de fichiers. Ainsi, si mon répertoire personnel a les permissions drwx------ et qu'il contient un sous-répertoire avec les permissions drwxr-xr-x, les autres usagers ne pourront pas lire le contenu de ce sous-répertoire car ils n'ont pas l'accès en exécution au répertoire parent.

La commande ls -la donne ensuite un nombre, suivit du nom du propriétaire du fichier, du nom du groupe du fichier, de sa taille, de sa date de dernière modification et de son nom.

La commande chmod permet de modifier les permissions associées à un fichier. La manière simple de l'utiliser est de spécifier quelles permissions on veut ajouter ou enlever à quel type d'usager. Ainsi, on spécifie la liste des usagers (u pour le propriétaire, g pour le groupe, o pour les autres usagers, a pour tout le monde), suivi d'un + pour ajouter une permission ou d'un - pour retirer une permission, et suivi de la liste des permissions à modifier (r pour lecture, w pour écriture, x pour exécution). Les permissions non spécifiées ne sont pas affectées. Voici quelques exemples :

  • Empêcher les membres du groupe et les autres utilisateurs de lire ou de modifier le fichier secret.txt :
[nom@serveur $] chmod go-rwx secret.txt


  • Permettre à tous de lire le fichier public.txt :
[nom@serveur $] chmod a+r publique.txt


  • Rendre le fichier script.sh exécutable :
[nom@serveur $] chmod a+x script.sh


  • Permettre aux membre du groupe de lire et d'écrire dans le répertoire partage :
[nom@serveur $] chmod g+rwx partage


  • Empêcher d'autres utilisateurs de lire le contenu de son répertoire personnel :
[nom@serveur $] chmod go-rw ~


Visualiser et éditer des fichiers

Visualiser un fichier

Pour visualiser un fichier en lecture seule on utilise la commande less :

[nom@serveur $] less fichier_a_visualiser


On utilise alors les flèches du clavier ou la molette de la souris pour se déplacer dans le document. On peut rechercher un terme dans le document en entrant /terme_a_rechercher. On quitte la commande en appuyant sur q.

Comparer deux fichiers

La commande diff permet de comparer deux fichiers :

[nom@serveur $] diff fichier1 fichier2


L'option -y permet d'afficher les fichiers côte à côte.

Rechercher dans un fichier

La commande grep permet de recherche une expression donnée dans un

[nom@serveur $] grep 'tata' fichier1


ou plusieurs fichiers.

[nom@serveur $] grep 'tata' fich*


Notez que, sous linux, le caractère « * » permet de remplacer zéro, un, ou une série de caractères. Le caractère « ? » remplace (exactement) un caractère.

Le texte recherché peut également contenir des variables. Par exemple, pour rechercher le texte « No. 10 » ou « No. 11 », etc. avec n'importe quel nombre entre 10 et 29, on peut utiliser la commande

[nom@serveur $] grep 'No. [1-2][0-9]' fichier


Le texte recherché doit être sous la forme d'une expression régulière. Pour en connaître plus sur les expressions régulières, vous pouvez visitez l'un des sites suivants :
Cybercity donne une liste très complète des expressions régulières. Gb.png
Exemples de base des expressions régulières Fr.png

Éditer un fichier

Pour éditer un fichier texte, vous devez utiliser un éditeur de texte. Plus de détails sont disponibles sur la page Les éditeurs de texte.

Outils personnels
Espaces de noms

Variantes
Actions
Navigation
Ressources de Calcul Québec
Outils
Partager