Muffin 1/Utilisation de la ligne de commande

De Magazine fedora-fr
Aller à : navigation, rechercher
Par : MatthieuRondeau

Introduction

Un exemple de Téléscripteur.

D'un point de vue historique, la ligne de commande est l'interface la plus ancienne des interfaces développées sur ordinateur. Cet interface, permettant un dialogue entre l'ordinateur et l'utilisateur, a vu le jour à partir des années 60 avec l'apparition des téléscripteurs, qui sont des appareils permettant la génération et la réception de messages via des signaux électriques, le plus souvent via ligne filaire, et qui s'est vraiment développé à partir des années 70 avec l'invention des consoles.

D'un point de vue fonctionnel, la console interprète la commande que tape l'utilisateur, le procédé fonctionnant ainsi : la console analyse la commande rentrée pour ensuite l'exécuter si cette dernière est syntaxiquement correcte, puis passe à la commande suivante (si elle existe) selon l'opérateur de contrôle.

A notre époque, où les interfaces graphiques font la loi, la majorité des utilisateurs ne consacre que peu de temps à l'apprentissage, et encore moins à l'utilisation de la ligne de commande.

Je vais tenter dans cet article de vous montrer la puissance de son utilisation, sans bien sûr aller trop loin, ce qui vous permettra ensuite de vous renseigner et d'apprendre par vous même ce que vous offre cette manière d'utiliser son ordinateur.

Mise en garde

Bien sûr, on ne peut commencer un article sur la ligne de commande sans mettre en garde les nouveaux utilisateurs. Tout d'abord n'oublions pas que l'interface que nous donne la ligne de commande peut être vraiment rebutante au départ. Nous avons pris l'habitude de voir nos fichiers, ici ce ne sera que des titres. De même, ici, bannie la souris, tout se fait au clavier (exception faite pour les copier/coller).

De plus cela vous demande un certain esprit d'abstraction, pouvoir voir au-delà des quelques lignes qui s'affichent, et un effort de mémoire, à savoir connaître les formules principales. Mais heureusement vous verrez que ces formules s'apprennent facilement au fur et à mesure de leur utilisation.

Par contre, les avantages sont nombreux dans l'utilisation de la ligne de commande, que j'espère mettre en avant au fil de cet article. Nous pourrons toute fois citer en tout premier lieu la légèreté de ce procédé, sa rapidité, et surtout le fait que c'est la seule chose qui fonctionne lorsque vous n'avez plus de serveur graphique.

Première approche

Maintenant que vous êtes mis en garde, passons dans le vif du sujet. Le gros avantage de la ligne de commande est le faible besoin en ressource de son utilisation, ainsi vous pouvez facilement faire tourner plusieurs programmes, ou faire plusieurs tâches, sans voir le moindre ralentissement.

Vous connaissez sûrement les commandes principales :

$ cd le dossier où aller
Vous permet de vous déplacer dans l'arborescence
$ pwd
Vous écrit le nom du répertoire où vous êtes
$ ls
Liste les éléments du répertoire courant

Consultez le lien [1] pour une liste complète.

Interface de ligne de commande.

L'interface de la ligne de commande marche de manière très simple, vous aurez à taper quelque chose de la forme :

$ commande <option> arguments

Les options sont trouvable la plupart du temps en tapant :

$ commande --help

ou simplement en faisant un :

$ commande

sans mettre ni d'arguments ou d'option. Si vous voulez une description complète de la commande, vous aurez à taper :

$ man commande

Le principe de la ligne de commande est le suivant, lorsque vous tapez une commande, l'ordinateur va chercher dans la variable PATH le chemin des dossiers contenant les commandes. Cette variable d'environnement est affichable en faisant :

$ echo $PATH

Le fait d'avoir plusieurs dossiers contenant les commandes permet d'utiliser l'auto-complétion, à savoir lorsque vous commencez à taper une commande, vous pouvez utiliser la touche [Tab] qui vous terminera la commande, si il existe plusieurs possibilités, en appuyant deux fois sur cette touche, vous aurez les différentes commandes possibles qui s'afficheront.

Cela fonctionne aussi avec les noms de fichiers ou dossier en argument, mais pas pour les options.

Certaines commandes ne sont utilisables que par un utilisateur particulier, l'utilisateur root. Pour pouvoir s'identifier en tant que cet utilisateur, vous aurez à taper :

$ su -
 votre mot de passe root

Le tiret est important, car il permet de charger le PATH du root.

Passons maintenant à quelques exemples.

Exemple n°1

Bon maintenant voyons un des premier avantage de la ligne de commande, imaginons que vous ayez des fichiers à classer, avec différents type. En mode graphique, vous devriez classer selon le type, et sélectionner les différents fichiers, faire couper puis coller dans le répertoire voulu.

Voila comment le faire en ligne de commande :

Imaginons que le dossier /media/canon contienne des fichiers en .jpg à placer dans /home/Matt/Image/Photo et des .mpg à placer dans /home/Matt/Video, nous pourrions faire comme en mode graphique, à savoir prendre chaque photo et chaque vidéo, et les déplacer dans le dossier voulu. Bien que [Tab] peut être utile dans ce cas, le faire fichier par fichier peut être rapide, mais beaucoup plus lente qu'en mode graphique, pour peu que vous ayez classé vos fichiers selon type.

Nous allons donc utiliser une des fonctionnalité de bash, à savoir le caractère * (joker), ce caractère permet de représenter n'importe quel caractère, à savoir que si l'on tape *.jpg, on parle ici de tous les fichiers terminant par .jpg, donc tous nos fichiers photos. Il suffit alors de taper :

$ cd /media/canon
$ mv *.jpg /home/Matt/Image/Photo 
$ mv *.mpg /home/Matt/Video
mv est la commande pour déplacer ou renommer les fichiers/dossiers

On peut ajouter les commandes les unes après les autres en utilisant l'opérateur de contrôle ;, qui permet de terminer la commande et de passer à la suivante, ce qui fait que l'on peut taper directement :

$ mv *.jpg /home/Matt/Image/Photo; mv *.mpg /home/Matt/Video


Exemple n°2

Imaginons que vous lanciez un programme tel que amsn par votre menu, et le programme plante, il vous faudra l'arrêter, mais comment faire cela simplement?

La première chose à connaitre est ce que l'on appelle le pipe (un opérateur de contrôle), sans rentrer dans les détails des entrées/sorties en shell, il faut savoir que les commandes ont une sortie, qui va donc s'afficher ( l'erreur est aussi une sortie, mais qui est différente ), il serait alors utile de pouvoir rediriger cette sortie, c'est là que le pipe, que l'on écrit avec le caractère "|" en shell intervient. Le pipe prend la sortie de la commande de gauche comme entrée de la commande se trouvant à droite.

Voyons cela dans l'exemple suivant :

Si je tape

$ ps ax
ps liste les processus actifs, l'option ax donne tous les processus

et que je cherche amsn, je risque de perdre beaucoup de temps, mais si maintenant, je fais :

$ ps ax | grep amsn
grep vous donne les lignes contenant le mot voulu, ici amsn

Je ne perds pas de temps et je peux directement faire :

$ kill -9 pid_amsn
le pid, ou processus ID, est le numéro donnée au processus


Exemple n°3

Un ami vous a donné un lien vers un ftp où il a mis les photos de vos dernières vacances, le problème c'est qu'il y a d'autre fichiers tels que des vidéos, et que vous aimeriez bien télécharger directement toutes les photos en .jpg.

Voila la procédure :

$ cd Où vous voulez mettre ces photos
$ wget -r -l1 --no-parent -A.jpg trucmuche.free.fr
wget vous permet de télécharger les contenus d'un site

Je vous laisse un peu chercher pour savoir ce que veulent dire toutes ces options.

Passons maintenant à une utilisation plus avancée de la ligne de commande.

Maîtrisons la ligne de commande

Maintenant que nous avons vu quelques commandes utiles, nous allons essayer de voir quelques petites choses plus intéressantes. Comment faire pour personnaliser notre interface de ligne de commande, pouvoir utiliser au mieux cet outil pour automatiser des tâches souvent peu intéressantes.

Nous allons voir tout cela, bien sûr il va de soi que je ne peux en un article vous faire l'étalage de toutes ces choses, et le plus gros travail sera de chercher et découvrir de nouvelles manière d'utiliser la ligne de commande au mieux.

Les logiciels en ligne de commandes

Le sujet étant très vaste, je vais essayer de rester généraliste, en vous présentant les exemples les plus significatifs.

La première chose à maîtriser est l'éditeur de texte en ligne de commande, d'abord parce qu'il est toujours utilise de pouvoir ouvrir un fichier éditable en ligne de commande, et ensuite parce que vous pourrez avoir l'occasion de modifier certains fichier uniquement en ligne de commande, comme par exemple le très célébre xorg.conf.

Le plus célébre est sans aucun doute Vim, qui est directement inspiré de vi, éditeur très répandu sur les systèmes UNIX, donc il est le clone le plus populaire. Son nom signifie Vi Improved, que l'on peut traduire par « Vi AMélioré », ou éventuellement « VI Meilleur ».[4]

Contrairement à vi, Vim est un logiciel libre, son code source a été publié pour la première fois en 1991 par Bram Moolenaar, son principal développeur. Depuis ce dernier a continué à l'améliorer, avec l'aide de nombreux contributeurs.

Vim possède son propre langage d’extension, ce qui lui permet la prise en charge de tâches évoluées, telles que la production de code source. Malgré de nombreuses fonctionnalités, il conserve un temps de démarrage court et reste ainsi adapté pour des modifications simples et ponctuelles (fichiers de configuration par exemple).

Le lancement de Vim est très simple, vous pouvez taper :

$ vim lance directement vim
$ vim nom du fichier à éditer lance vim en éditant le fichier voulu

Vous pouvez consulter un petit résumé des commandes en [3].

Pouvoir ajouter des logiciels dans Linux est une chose très intéressante, car le nombre de logiciels auxquels vous avez accès ne cesse d'augmenter. Vous pouvez toujours utiliser des outils graphiques pour ceci, mais sachant que l'installation consomme déjà une partie importante des ressources, le faire en ligne de commande permet d'alléger le processus. Fedora utilise Yum comme gestionnaire de paquets, YUM (Yellow dog Upadater Modified) est un gestionnaire de paquet, créé par yellow dog et utilisé par Fedora pour la gestion des paquets.

Il permet de gérer l'installation et la mise à jour des logiciels sur une distribution GNU/Linux. C'est une surcouche à RPM gérant les téléchargements et les dépendances, de la même manière que APT de Debian ou Urpm* de Mandriva.

L'utilisation de Yum est très simple, vous aurez une syntaxe du type :

# yum <option> commande argument

Le plus souvent en root.

/*faire le renvoi vers l'article sur Yum?*/

Les alias

Voyons, vous avez des commandes que vous aimeriez bien pouvoir lancer de manière la plus rapide possible, prenons par exemple :

$ vlc --fullscreen mavdeio.avi lancer vlc en plein écran
$ rpm -ivh monpaquet.rpm installe un paquet rpm en mode verbose
$ rpm -Uvh mon paquet met à jour un logiciel à partir d'un paquet rpm en mode verbose

Et ainsi de suite, vous pouvez lancer vos commandes comme ceci, mais par gain de rapidité, pourquoi ne pas les implanter vous même, et c'est pour cela que les alias sont là.

Prenons par exemple le "vlc --fullscreen", que vous voudriez pouvoir lancer en faisant "vlcfs". Tout d'abord ouvrez votre fichier ~/.bashrc, qui devrait ressembler à ceci :

# .bashrc
# Source global definitions
 if [ -f /etc/bashrc ]; then
       . /etc/bashrc
 fi
# User specific aliases and functions

Vous comprendrez bien sûr qu'il est recommandé de noter les alias en dessous de la ligne # User specific aliases and functions, simplement pour une meilleur lisibilité, avec la syntaxe alias <votre commande> = <commande existante> votre .bashrc deviendra donc :

# .bashrc
# Source global definitions
 if [ -f /etc/bashrc ]; then
       . /etc/bashrc
 fi
# User specific aliases and functions
alias vlcfs = 'vlc --fulscreen'
alias rpmi = 'rpm -ivh'
alias rpmU = 'rpm -Uvh'

Il va de soi qu'il ne faut surtout pas utiliser de commandes déjà utilisées par le système.

Script

Les scripts permettent une automatisation du système, ils peuvent être écrit en différent langages. L'exemple suivant est un script en bash (Bourne Shell) pour nous donner l'heure en francais.

Pour cela, créons donc le fichier heure, ce que nous pouvons faire en utilisant Vim :

#! /bin/sh ordonne l'interprétation par le bourne shell
#
# le # en début de ligne indique un commentaire
#
# Shell-script de mise en application de la récupération du résultat 
# d une commande. Affiche l'heure en français.

heures=$(date +%H) nous donne l'heure prise à partir de la commande date
minutes=`date +%M` nous donne les minutes, en interprétant la commande, rôle des `
echo "Il est $heures heures $minutes minutes et $(date +%S) secondes"

Voila ce qui devrait s'afficher à l'écran, après lancement :

$ ./heure
Il est 14 heures 08 minutes et 23 secondes 

Voila, cet exemple est très simple, mais essayons de voir plus loin, vous voulez automatiser une suppression de certains fichier, un encodage vidéo, ou autre, tout cela est possible, de manière rapide.

Conclusion

Nous avons pu voir que la ligne de commande permet, lorsqu'elle est maîtrisée, de vous rendre la vie beaucoup plus facile, mais il va de soi qu'il vous faut prendre le temps de se faire à ce genre d'outil, mais prendre le temps de pouvoir l'utiliser peut grandement vous aider.

Cet article est généraliste, et n'est pas là pour vous donner toutes les réponses à vos questions, mais bien pour vous permettre d'avoir un aperçu de cet outil.

La ligne de commande devient plus compliquée.

Il est bon de noter que la ligne de commande est indispensable dans beaucoup de cas, par exemple tout simplement lorsque votre serveur graphique ne fonctionne pas, et que vous devez alors éditer votre xorg.conf à la main, mais aussi pour des tâches plus simples, comme l'exécution de scripts d'installation, la compilation de logiciel, puisque l'utilisation du script configure, et des commandes make, make install, ne se fait qu'à la ligne de commande.

Il tient maintenant à vous de prendre le temps de bien assimiler la ligne de commande, et de vous renseigner le plus possible pour pouvoir l'utiliser au mieux.

Références