Document en construction ! (document de travail à usage interne : lpi_linux_essential)
Le document proposé sur ces pages est également disponible sur le wiki de l'ASBL LoLiGrUB, et bénéficie de l'apport d'autres auteurs membres de l'ASBL (Thierry G.,…)
Cf. la page du cours libre Initiation à l'informatique
Pour ce qui concerne les systèmes d'exploitation accessibles au grand public, l'éditeur de logiciel Microsoft propose son OS propriétaire, Windows, qui domine en terme de parts de marché. A côté, le constructeur d'ordinateurs Apple propose son OS, OS X, sur ses Mac et ses systèmes nomades.
En dehors de ces systèmes propriétaires, Linux est un OS sous licence libre, absolument indépendant des constructeurs, et fonctionnant sur la plupart des matériels. Une communauté assez complexe allant des développeurs aux utilisateurs s'est crée autour de ce projet libre, gérant un écosystème particulièrement complexe d'applications, des plus simples aux très complexes. Ces projets peuvent être élaborés dans un cadre purement communautaire et bénévole, ou dans des entités fonctionnant sur des principes d'entreprises, incluant des aspects commerciaux, et par conséquent des perspectives de carrières professionnelles.
La naissance de Linux date de 1991, grâce à l'impulsion de son créateur, Linus Torvalds, qui a été très vite aidé par de nombreux volontaires séduits par le mode de développement communautaire de ce noyau de système d'exploitation respectant les fonctionnalités de UNIX et par sa licence de distribution libre, la GNU GPL. Pour constituer véritablement un système d'exploitation complet, il fallait adjoindre d'autres éléments à ce noyau, qui était précisément la pièce manquante du projet GNU, porté par Richard Stallman depuis 1983, qui comportait déjà les autres éléments essentiels : le compilateur GCC, l'éditeur de texte Emacs, un interface en ligne de commande (shell), des bibliothèques logicielles, les commandes Unix, des outils réseau, le serveur graphique X … finalement, en réunissant ces deux projets, le système d'exploitation libre GNU/Linux était né, et il entamait alors une formidable progression au milieu des années nonantes.
Dès cette époque, Linux est devenu un OS principalement utilisé pour des serveurs. L'utilisation sur le poste utilisateur était limitée à une catégorie d'utilisateurs férus d'informatique, de geeks.
Plus tard, le développement d'environnements de bureau suffisamment matures a simplifié l'accès à Linux pour de nombreux “profanes”, l'administration et les réglages du système devenant accessibles par des interfaces utilisateurs graphiques. Dès les années 2005, il devenait clair que Linux pouvait satisfaire les besoins d'un utilisateur lambda. Nombre d'entre eux n'ont pas hésité à faire le pas, déçus par le système d'exploitation qui s'était imposé lors de l'achat de leur ordinateur.
A l'aube des années 2010 Linux a encore franchi une étape supplémentaire dans la popularité, en prenant au travers du système Android une place de leader sur le marché des smartphones et des tablettes. Connaissant aussi ses nombreuses utilisations dans des appareillages spécifiques : routeurs, décodeurs, télévisions, GPS, mediacenter, on peut à présent affirmer que Linux est présent de manière significative dans chaque foyer.
Pour celui qui voudra installer, utiliser et comprendre un système Linux complet, le choix d'une distribution est un passage obligé. Les distributions proposent non seulement un environnement complet, mais aussi les moyens de l'étendre par l'ajout de programmes, ou de la mettre à jour. Des communautés d'utilisateurs et de développeurs lui sont souvent associées, ainsi que des sociétés prestataires de services commerciaux.
Toutes semblables, toutes différentes, elles se distinguent entre elles par divers critères, dont ceux-ci :
Les principales distributions :
Pour un comparatif des distributions, cf. le site Distrowatch.
Les applications sont innombrables, aussi nous nous limiterons à préciser les types de programmes très souvent présents par défaut dans la plupart des distributions, en indiquant les catégories de classement utilisées.
Différents outils permettent d'ajouter des programmes parmi un très large choix. Les téléchargements et l'installation s'opèrent en utilisant des dépôts reconnus.
Les utilisateurs de Windows qui passent à Linux risquent d'être déstabilisés à la vue de l'interface «ligne de commandes».
Toutefois les versions récentes de Linux intègrent également une interface graphique équivalente à celle utilisée dans Windows, Mac OSX ….
L'objectif est de vous familiariser avec l'interface texte ( ou terminal ) pour utilisateur, connue sous le nom «Shell».
Le « Shell » est un moyen pratique pour réaliser des opérations qui peuvent être difficile à exprimer graphiquement.
Les utilisateurs ne peuvent pas communiquer directement avec le noyau du système d'exploitation. En fait cela n'est seulement possible qu'à travers des programmes, comme le «Shell», qui y accède via les «appels systèmes (system call interface)». Le Shell est donc un programme spécial pour utilisateur. Il va lire les commandes introduites au clavier et les interpréter comme commandes a être exécutées. Le Shell agit donc comme «interface» vis à vis de l'ordinateur qui enferme le système d'exploitation un peu comme une coquille et le cache ainsi de l'utilisateur. Le « Shell » est un des nombreux programmes qui accèdent au système d'exploitation.
La courbe d’apprentissage du Shell est plus longue parce que moins intuitive, mais sur certains points comme le traitement par lots de plusieurs fichiers, la ligne de commande conserve un avantage évident.
Types de Shell :
le /bin/sh shell Bourne
le /bin/bash shell Bourne Again Shell
le /bin/csh C shell
le /bin/ksh Korn shell
le /bin/tcsh C shell amélioré
Le principe de base est toujours resté le même : Les shells sont des interpréteurs, ils lisent chaque commande saisie par l’utilisateur, vérifient et traitent la syntaxe pour l’exécuter.
La plupart des Shells peuvent également lire des fichiers contenant des séquences de commandes préparées. De tels fichiers sont appelé des « scripts shell ».
Un Shell utilise les étapes suivantes :
1 lire une commande du terminal ( ou d'un fichier)
2 valider la commande
3 lancer directement la commande ou démarrer le programme correspondant
4 afficher le résultat à l'écran ( ou autre part )
5 continuer à l'étape 1.
En plus de cette boucle standard, un shell contient un langage de programmation qui inclut des structures plus complexes comme les boucles, conditions et variables.
Ici, nous utiliserons le Shell Bash, l’un des plus couramment utilisé sur les systèmes GNU/Linux. Bash est un logiciel libre publié sous GNU GPL.
Plusieurs possibilités sont offertes :
Depuis l'interface graphique, il est possible de se connecter à une console virtuelle en utilisant la combinaison de touches Ctrl+Alt+FN, où N est un chiffre de 1 à 6. Pour revenir au mode graphique depuis une console virtuelle, utiliser la combinaison de touches ALT+F7.
Pourquoi des commandes?
Le fonctionnement d'un ordinateur, indépendamment de son système d’exploitation, peut être décrit en trois étapes :
Dans un système Linux, le Shell affiche un chemin (prompt), indiquant ainsi qu'une commande peut être introduite.
Ce « prompt » contient le nom de l'utilisateur, le nom de l'ordinateur sur lequel l'utilisateur est connecté, le nom du répertoire et un caractère final.
utilisateur@machine ~ $
une commande est essentiellement un suite de mots (inspirés vaguement de l'anglais) qui se terminent par l'appui sur la touche ↩ (enter).
Pour que le Shell puisse interpréter cette suite de mots, ceux-ci doivent suivre une syntaxe.
Le premier mot de la ligne est souvent le nom de la commande et les autres mots sont les paramètres qui expliquent ce qui est demandé en détail.
A ce stade il est important de savoir que le shell fait la distinction entre les majuscules et les minuscules !
Le séparateur entre le nom de la commande et les paramètres peut être un espace ou une tabulation.
Notez que vous pouvez également utiliser ↩ (Enter) comme séparateur, à condition de le faire précéder immédiatement de \ afin que le Shell
ne l'interprète pas comme une fin de commande.
Les paramètres d'une commande peuvent être divisées en deux types :
la structure générale d'une commande peut être expliquée comme suit :
• Command—“Que faut-il faire?”
• Options—“Comment le faire?”
• Arguments—“Sur quoi faut-il agir?”
Dans les shells il y a essentiellement deux types de commandes :
En tant qu'utilisateur, vous pouvez utilisez vos propres programmes que le Shell exécutera en tant que commande externe.