dimanche 8 novembre 2009

Maîtriser la console sous Linux : Introduction à Bash (1/...)

Je projetais depuis la création de ce blog d'écrire des cours sur l'apprentissage des commandes Linux. Faute de temps, j'ai dû laisser les choses de coté pendant un moment. Et cette semaine, j'ai eu un très long week-end, ce qui m'a permis d'entamer les choses.

Petite note de départ,
  •  Aucune connaissance de base n'est requise pour suivre ces cours.
  • Les cours concernant la maîtrise de Linux seront scindés en deux grandes parties indépendantes: Maîtriser son environnement graphique et Maîtriser la console sous Linux.
  • Le cours sur la console sera divisé en trois grandes parties : Introduction à Bash, Tout en un (les programmes utiles, navigateurs ou lecteurs audio...) et enfin Automatiser les tâches avec les scripts.
  • Les exemples qui suivront ont été réalisés sur la distribution Linux Ubuntu (9.10 Karmic Koala). Je juge donc indispensable pour un meilleur apprentissage d'être doté du même système (Ubuntu). Ceci n'est qu'un cours théorique. Le comprendre est un grand pas en avant, mais pratiquer demeure une étape essentielle. Comme le dit si bien le dicton, "c'est en forgeant qu'on devient forgeron".
  • Étant donné le monde informatique en constante évolution, certaines données pourraient se retrouvées un jour obsolètes. Certaines corrections seront donc effectuées lorsqu'il sera nécessaire de les faire. Un billet sera dédié périodiquement aux corrections effectuées sur l'ensemble des cours.
Le cours d'aujourd'hui ne sera donc qu'une simple introduction à la console sous Linux. Quelques définitions, Un peu d'historique (désolé ), des configurations utiles et nous seront fins prêt à nous lancer dans l'aventure.
Il était une fois, un ordinateur avec des écritures blanches sur un fond noir...sans images...rien d'autres...


Qu'est ce qu'un terminal?

Commençons par le commencement, ne soyons pas pressé. Je parie que la majeure partie d'entre vous sait plus ou moins ce que c'est qu'un terminal. non? ce n'est pas grave. vous aurez le temps de le découvrir tout au long de ce cours.

Il y a une bonne trentaine d'années, les ordinateurs comme ceux d'aujourd'hui, avec une souris, pleins de jolies couleurs tout ça, il n'y en avait pas. Les ordinateurs étaient gros comme des camions et étaient souvent reliés à plusieurs écrans appelées Terminaux. Il n'y avait que du texte. Chaque terminal envoyait des instructions (comme éteint toi! ou imprime moi ça! ) à l'ordinateur distant qui retournait les informations après les avoir traitées. Les derniers modèles avaient un écran monochrome (du blanc ou du vert sur du noir, le luxe!). Juste ça.




Pffff! On a les rats souris aujourd'hui, n'est ce pas? Alors pourquoi revenir sur ces barbaries?

Je comprend parfaitement votre réaction, mais si les terminaux sont encore utilisés aujourd'hui, c'est qu'il y a certaines raisons qui en valent vraiment la peine. La preuve, aujourd'hui la majeur partie des serveurs (de gros ordinateurs offrant un service, comme par exemple les sites-web) sont administrés via un terminal.
  • La rapidité : C'est un des éléments clés pour lesquels plusieurs personnes préfèrent faire certaines tâches avec la console plutôt qu'en environnement graphique.
  • La stabilité : On rencontre beaucoup moins de crash du système sur le terminal que sur les environnements graphiques (l'écran bleu de la mort :D pour ceux qui ont souvent utilisé Windows).
  • La gestion des ressources : Votre processeur n'est pas chargé inutilement et comme cela, en utilisation normale, vous gagnez facilement une heure de batterie sur un terminal plutôt que sur un environnement graphique.
  • Le contrôle à distance : Vous pourrez contrôler n'importe quel ordinateurs à partir du votre. (Ceci fera l'objet d'un prochain chapitre mais vous pouvez d'ores et déjà jeter un coup d'œil ici)
Voilà pour la petite introduction, j'espère vous avoir convaincu sur l'utilité de la console.
un...deux...Et hop...Nous voici dans un monde plein de surprises et d'émois.

Une panoplie de Shell (Encore un nouveau mot!)

Ne vous affolez pas, le Shell, c'est juste l'interface qui permet d'entrer les commandes sur le terminal.



Et oui sous Linux, il existe une panoplie de Shell différents qui changent souvent  par quelques simples commandes. Parmi les plus célèbres sous Linux nous avons le Bash, le Ksh (Korn Shell) et le Csh (Le C shell). Mais ne vous inquiétez pas, nous n'en étudieront qu'un seul: Bash (Bourne again Shell), l'un des Shells les plus utilisés dans le monde de Linux (Sur les systèmes Mac OS et même sur Windows). Il se trouve par défaut sur les toutes les distributions GNU/Linux. Vous n'aurez donc pas besoin de le télécharger avant.
Bash a été crée par 1988 par Brian Fox de la Free Software Foundation (Fondation pour les logiciels libres) (des Héros barbus venus de nulle part pour libérer le monde ). Il fourni plusieurs commandes pour permettre de contrôler et d'exécuter des tâches sur l'ordinateur et aussi pour automatiser des tâches par le biais de certains fichiers (appelés scripts chez nos barbus, on y reviendra).

Dans la suite du cours, nous allons remplacer le terme terminal par console.

Ok! Mais tu nous montres enfin cette console!

Pas de panique, on y arrivais justement. Si vous êtes sous Windows fermez votre navigateur (Firefox , IE ) et redémarrez sur Ubuntu. Si vous ne disposez pas d'Ubuntu, voici un tutoriel très bien écrit pour vous aider à l'installer.
Vous y êtes? Cliquez sur l'icône Applications au coin à gauche de votre écran. ensuite sur Accessoires. Vous verrez une application Terminal (oui oui, c'est bien l'icône qui ressemble à une ardoise) dans la liste des applications. Cliquez la dessus. Une fenêtre apparaît.





Pas tout à fait comme dans vos rêves :D. Ce n'est pas la fenêtre noire à laquelle vous vous attendiez? A la place vous avez une fenêtre blanche anodine, comme un simple éditeur de texte. Ne vous en faites pas, on va y remédier tout à l'heure. Ce n'est juste qu'une question de couleur :D. On aura dans très peu de temps notre console noire de zélés d'informatique. Peut-être même avec des écritures vertes comme dans Matrix ;) . N'oubliez pas que sous Linux, TOUT est configurable, de A à Z!!!

Vous voyez à l'écran un curseur qui clignote (naturel) et une ligne comme celle-ci: peace@kamagatos:~$ c'est l'invite de commande (vous invite à entrer une commande)
Je vous explique ce que tout ce ci veut dire.
  • Peace : C'est le nom d'utilisateur. A la place de peace, vous devriez voir apparaître normalement votre Pseudo (Celui que vous avez entré pour vous connecter à l'ordinateur).
  • @ (arobase): Qui veut dire "chez".
  • kamagatos: Est quant à lui le nom de l'ordinateur.
  • ~ : Signifie que nous nous trouvons dans le dossier maison (home). Correspond au dossier Mes documents sous Windows.
  • $ : Le dollar par opposition au symbole # (dièse) indique que nous n'avons pas les droits du grand patron, l'utilisateur root...chez les barbus (encore eux!!!)
Donc si on essaie de transformer notre suite de symboles en phrase compréhensible par les humains normaux :D, on se retrouve avec ça :  Peace est chez Kamagatos, il se trouve dans son bureau et il n'a surtout pas le droit de toucher à tout (le pauvre!).
Si votre nom est Gabriel et votre ordi s'appelle Léa (ma sœur avait une araignée qui portait le même nom), vous vous retrouverez avec un truc du genre Gabriel@lea:~$
Il est toujours possible de changer ces informations. Nous verront comment faire dans un exemple plus tard.

Une console très maniable

On va maintenant configurer notre console pour la rendre beaucoup plus agréable.
cliquez sur Édition puis sur Préférences du profil dans le menu de votre console.




Une nouvelle fenêtre apparaît. Vous pourrez configurer à votre aise votre console ici.
Le premier onglet Général traite des configurations générales de votre console.
Vous pourrez définir un nouveau profil, activé l'affichage en gras ou encore décider que les nouveaux terminaux n'aient pas de barre de menu.



Ensuite sautez le deuxième onglet (On verra ce qui nous est utile pour le moment), rendez vous directement sur le troisième. C'est là qu'on va définir les couleurs de notre console.



Décochez d'abord la case utiliser les couleurs du thème système. Ensuite choisissez les couleurs qui vous conviennent pour l'arrière plan et pour la couleur du texte. Moi j'opte pour du gris sur du noir (classe B-) ). Si une seule couleur ne vous convient pas en arrière plan, vous pouvez vous rendre sur le quatrième onglet et choisir une image d'arrière plan avec même des effets de transparence. (Je reste avec mon gris/noir).






Finalement ce n'est plus si moche que ça!

Cette partie est facultative!!!
Si vous ne réussissez pas la manipulation, ce n'est pas grave. D'ailleurs ça ne sert pas à grand chose, c'est juste pour le fun :)

Pour finir comme je vous avais promis on va changer les informations affichées par l'invite de commande. On va remplacer les infos qu'on a vu plus haut par votre nom par exemple. A la place de Gabriel@lea:~$ on aura juste IloveLinux$. Ça vous tente? Rendez vous d'abord dans le dossier personnel. C'est dans Raccourcis -> Dossier personnel (En haut, à gauche sur le tableau de bord).



Ensuite dans Affichage, cliquez sur Afficher les fichiers cachés.



Une tonne de fichiers et dossiers commençant par un point (.) devraient apparaître. Cherchez le fichier .bashrc. Vous l'avez trouvé?



Faites en une copie (Juste au cas où) et ouvrez le.
Ne faites surtout pas attention à tout ce qui y est écrit. Recherchez ces deux phrases (appelons les ainsi ;) )


PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '


et


PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '


Remplacez les par celle-ci:


PS1='${debian_chroot:+($debian_chroot)}X\$ '


changez le X par votre nom. Relancez votre console et voilà!!!

Vous avez en face de vous une belle console pleinement fonctionnelle ;) .
Vous avez effectué le grand saut, c'est bien mais je ne cesserais de le répéter pratique, pratique, pratique, sinon tout ces cours ne serviront pas à grand chose.
Les prochains chapitres seront un poil plus difficile que celui-ci mais vous ne serez jamais seuls, vous pouvez poser des questions sur le forum francophone d'Ubuntu. Il y aura toujours quelqu'un pour répondre à vos préoccupations.

A bientôt!

9 commentaires:

erdnaxeli a dit…

Sympa ce cours. Bon, sans vous vouloir me vanter, je ne pense pas que je vais apprendre grand chose (je suis sous archlinux avec awesome et urxvt), mais j'aime bien quand même.
Concernant l'invite de commande (ou prompt), on peut encore plus la personnaliser.
Enfin, si vous voulez tester votre magnifique console, voici comment faire le célèbre "Hello wolrd !" : echo 'Hello world !' (pas trop dur).

Anonyme a dit…

Karmic Koala, c'est la 9.10.

Kamagatos a dit…

@Anonyme: Erreur de frappe, merci! :)

Jérémie a dit…

>>
* Le contrôle à distance : Vous pourrez contrôler n'importe quel ordinateurs à partir du votre. (Ceci fera l'objet d'un prochain chapitre mais vous pouvez d'ores et déjà jeter un coup d'œil ici)
<<

Non. D'abord, VNC (ou équivalent) pourrait faire de meme. Ensuite, il faut un serveur SSH (ou équivalent) installé.

>>
Parmi les plus célèbres sous Linux nous avons le Bash, le Ksh (Korn Shell) et le Csh (Le C shell).
<<

Et zsh ? J'aurais mis Zsh et Sh bien avant ksh et csh ...

>>
@ (arobase): Qui veut dire "chez".
[...]
$ : Le dollar par opposition au symbole # (dièse) indique que nous n'avons pas les droits du grand patron, l'utilisateur root...chez les barbus (encore eux!!!)
<<

Ce ne sont que des notation, ou plutot des conventions, rien de figé dans leur signification.
On peut très bien avoir: "root@google.com#" sans etre connecté aux machines de google.

"
PS1='${debian_chroot:+($debian_chroot)}X\$ '
changez le X par votre nom. Relancez votre console et voilà!!!
"

C'est absolument immonde, confus et atypique, mais comme j'ai dit plus haut, ce n'est qu'une fonctionnalité laissée à la discrétion de leur utilisateur, donc soit, donne de mauvaise habitudes avec un prompt dégueulasse car non "automatisé/portable".


Changer le PS1 en guise d'introduction à bash, ça me semble assez réducteur et fortement improductif. On aurait pu expliquer directement comment lancer quelques commandes simples, sur le listage des dossiers, ça aurait été plus concret.

Pour quelqu'un qui ne connait pas bash, ton intro lui montre que bash est un logiciel permettant d'afficher un texte coloré dans une fenêtre noire. Libre à toi de penser que bash se résume de la sorte.


Bon, je suis méchant (je sais et je l'assume !), mais ne prends pas ça personnellement, améliore juste ton billet.

Bisous d'un assidu lecteur de ton blog :-)

Anonyme a dit…

"Les exemples qui suivront ont été réalisés sur la distribution Linux Ubuntu (9.10 Karmic Koala). Je juge donc indispensable pour un meilleur apprentissage d'être doté du même système (Ubuntu)."

Ha oué, quand même... Ça montre tout le sérieux de ce "cours"...

mimiTux a dit…

A quand le prochain cours, J'ai trouvé celui ci super sympa. Moi qui voulait me mettre depuis longtemps à la console, voici l'occasion revé.

Saïmon a dit…

Je juge donc indispensable pour un meilleur apprentissage d'être doté du même système (Ubuntu).

dommage de dire ça alors que Bash est disponible partout (y compris sous Mac, et même sous Windows avec Cygwin !) ...
http://fr.wikipedia.org/wiki/Bourne-Again_shell

Anonyme a dit…

Bonjour, Merci KamagatOs, je débute sur Linux et tu as le mérite de traiter le sujet. Pas facile pour celui qui vient du coté Obscur sans avoir appris a maitriser les commandes clavier. Quand à ceux qui critiquent, je l'ai invite a faire mieux..c'est quand la suite sur la console ? Bonne continuation..

Anonyme a dit…

Comme je maîtrise bien Linux en ce moment grâce à des vidéos sur http://www.alphorm.com/tutoriel/formation-en-ligne-linux-lpic-2, je vais étudier votre article pour me faire encore plus de connaissance sur sa manipulation. Merci pour ce partage.