[[console]]
Piste: » console
Les applications en lignes de commande
L'intérêt de ces applications
Même si Ubuntu est clairement orienté interface graphique (et tant mieux) il peut être intéressant d'utiliser malgré tout des applications console, comprendre celles qui se lancent dans un terminal. En effet, certaines applications sont beaucoup plus rapides à exécuter qu'avec la traditionnelle souris, comme l'installation d'applications (apt-get), etc.
Introduction
Avantages de la ligne de commande
Pour ceux qui nous rejoignent du monde de chez Microsoft Windows ou de chez Apple Macintosh, vous devez être certainement habitués aux interfaces graphiques classiques qui consistent à cliquer sur telle ou telle partie d'une fenêtre, ce qui aura pour but d'effectuer une action. Prenons un exemple simple : vous souhaitez copier le fichier "mon_fichier" d'un répertoire à un autre.
Avec Windows et d'autres systèmes comprenant une interface graphique (Linux en fait bien sûr partie), vous devez :
- Naviguer jusqu'au dossier où se trouve le fichier
- Cliquer sur le fichier en question
- Cliquer Édition → Copier
- Vous rendre dans le dossier où vous souhaitez copier le fichier
- Cliquer sur Édition → Coller
Eh bien sachez qu'un utilisateur Linux pourra se contenter de taper ceci et de faire Entrer :
cp ~/mon_fichier ~/mon_dossier/mon_fichier
dans un terminal (ce dernier terme vous est expliqué ci-après).
Il a ainsi exécuté une ligne de commande qui sera interprétée en vue d'effectuer une ou plusieurs opérations.
Notion de terminal
Nous avons vu dans le chapitre précédent comment exécuter une commande, mais ce que nous n'avons pas encore précisé, c'est que ces commandes doivent être entrées dans un terminal. Pour voir à quoi ressemble un terminal, cliquez sur Applications → Accessoires → Terminal, et ceci devrait apparaître :
Différence entre terminal et console
En réalité, un terminal n'est qu'une émulation d'une console.
Il y a sur ubuntu 7 consoles disponibles : 6 en mode texte et 1 graphique. Elles sont accessible via Ctrl+Alt+Fx ou x est le numéro de la console à laquelle vous voulez vous rattacher. Il peut y avoir plus de consoles, notamment si plusieurs personnes sont connectées graphiquement en même temps, mais on y accède de la même façon Ctrl+Alt+F9, etc. (à noter que Ctrl+Alt+F8 est en général une console spéciale où s'affichent des informations sur le démarrage de l'ordinateur).
Il est en général préférable d'utiliser le terminal pour lancer des lignes de commandes, mais les consoles peuvent se révéler indispensables si, par exemple, l'interface graphique plante.
Explications
Commandes et paramètres
Nous allons maintenant vous expliquer ce que signifie cette ligne barbare qui, au premier coup d'oeil, semble pleine de choses qui ne veulent rien dire.
cp est une commande qui correspond, pour les non anglophones, à l'abréviation de copy file (copier le fichier).
Une commande admet généralement des paramètres, c'est-à-dire des informations complémentaires lui permettant d'effectuer telle ou telle opération. Dans notre exemple, la commande cp nécessite deux paramètres : le fichier source, et le fichier cible. Pour résumer, la commande s'utilise de la façon suivante :
$ cp <fichier_source> <fichier_cible>
Notations : les éléments désignés entre les caractères "<" et ">" doivent être adaptés pour votre usage. Pour ce qui est du signe « $ », voir les notes.
Ainsi, la commande copiera le fichier source (premier paramètre) vers le fichier cible (deuxième paramètre).
Ce principe s'applique à la plupart des commandes.
Une commande ne nécessite pas forcement de paramètres (la commande ls par exemple, qui affiche le contenu d'un dossier).
Aide sur une commande
Lorsque vous ne connaissez pas une commande ou que vous n'êtes pas sûr de la syntaxe à utiliser (la signification des paramètres), deux solutions s'offrent à vous :
- Entrer le nom de la commande, suivie du paramètre
–helpou-h, comme ceci :
$ commande --help
Ceci vous indiquera comment utiliser la commande, avec les paramètres requis et/ou optionnels.
- Afficher la documentation de la commande, en entrant
mansuivi du nom de la commande, comme ceci :
$ man commande
Notez que man est elle-même une commande, et permet d'afficher la documentation de la commande indiquée en paramètre. L'avantage de cette méthode est que le texte affiché est souvent plus complet, et la plupart du temps dans la langue du système (c'est-à-dire en français si votre système supporte cette langue).
Applications
- Apprendre Linux en 10 minutes Un petit tutoriel expliquant les principales commandes unix, si vous avez 10 minutes devant vous...
- Ligne de commandes Un autre tutoriel traitant du même sujet
- Screen : Utilitaire agissant directement sur le terminal
- Irssi : Client IRC en ligne de commande
- Apt-get : Gestion des paquets en mode texte
- Script Shell : Comment créer des scripts shell
Premiers exemples
cd
Définition :
cd est LA commande basique que tout utilisateur doit connaître. Comme indiqué dans le premier chapitre de cette page, cette commande sert à naviguer d'un répertoire à un autre.
Syntaxe :
$ cd REPERTOIRE
Ne génère pas d'affichage, sauf en cas d'erreur.
Exemple :
$ cd /home/utilisateur/
ls
Définition :
ls permet d'afficher la liste des fichiers et dossiers présents dans le dossier indiqué en paramètre.
Syntaxe :
$ ls REPERTOIRE
Le paramètre REPERTOIRE n'est pas obligatoire si vous souhaitez afficher la liste du dossier en cours.
Exemple :
$ ls #Affiche la liste des fichiers du répertoire en cours $ ls /home/utilisateur/ #Affiche les fichiers de /home/utilisateur/ $ ls -l #Affiche la liste détaillée des fichiers du répertoire en cours
Commandes courantes
Voici un petit récapitulatif des différentes commandes courantes disponibles dans un terminal (certaines sont spécifiques aux systèmes Debian / Ubuntu) :
Carte de Référence Debian GNU/Linux (les commandes les plus utiles à imprimer en A4)
| Commande | Description | Exemple / Syntaxe |
|---|---|---|
| apt-get | Effectue une opération sur une application (installation / suppression) | apt-get install application |
| bunzip2 | Extrait les fichiers d'une archive de type GZIP | bunzip2 archive.gz |
| bzip2 | Crée une archive de type GZIP | bzip2 fichier |
| cat | Affiche le contenu d'un fichier de type texte | cat fichier.txt |
| cd | Change de répertoire courant (change directory en anglais) | cd dossier/ |
| chmod | Définit les droits d'accès à un fichier | chmod +x fichier |
| chown | Définit le nom du propriétaire d'un fichier | chown utilisateur:utilisateur fichier |
| chgrp | Définit le nom du groupe propriétaire d'un fichier | chgrp utilisateur fichier |
| cp | Copie un fichier vers un autre fichier (cp abréviation de copy) | cp fichier_source fichier_cible |
| date | Affiche la date courante | date |
| diff | Compare deux fichiers | diff fichier1 fichier2 |
| dpkg | Extrait / Installe un paquet de type Debian (*.deb) | dpkg -i paquet.deb |
| find | Cherche un fichier dans l'emplacement voulu | find chemin -name fichier |
| echo | Affiche un texte dans le terminal | echo "Bonjour" |
| export | Indique au système la valeur d'une variable d'environnement | export VARIABLE=VALEUR |
| ftp | Se connecte à un serveur FTP | ftp ftp.serveur.com |
| grep | Recherche une chaîne de caractères dans un fichier de type texte | grep fichier.txt |
| gunzip | Extrait les fichiers d'une archive de type GZIP | gunzip archive.gz |
| gzip | Crée une archive de type GZIP | gzip fichier |
| head | Affiche les premières lignes d'un fichier de type texte | head fichier.txt |
| insmod | Insère un module dans le système | insmod module.ko |
| kill | Tue un processus d'après son numéro PID | kill numero |
| pkill | Tue un processus d'après son nom | kill nom_proc |
| ln | Crée un lien (symbolique ou non) vers un fichier / répertoire (link signifie lien en anglais) | ln -s dossier_existant/ lien_a_creer/ |
| logname | Affiche le nom de l'utilisateur en cours | logname |
| ls | Affiche la liste des fichiers présents dans un répertoire | ls dossier/ |
| Crée un e-mail | mail destinataire@serveur.com | |
| man | Affiche la documentation d'une application | man programme |
| mkdir | Crée un répertoire (make a directory en anglais) | mkdir dossier |
| more | Affiche un fichier de type texte de façon progressive | more fichier.txt |
| mv | Déplace un fichier vers une autre destination (move en anglais), ou renomme un fichier | mv fichier_source fichier_cible |
| nano | Editeur de fichier en mode texte très simple | nano fichier.txt |
| printenv | Affiche la valeur d'une variable d'environnement | printenv VARIABLE |
| ps | Affiche les processus en cours | ps -ef |
| pwd | Affiche le nom du répertoire courant | pwd |
| rm | Supprime un fichier / répertoire (remove , en anglais) | rm fichier |
| rmmod | Supprime un module système (remove module) | rmmod module |
| sleep | Bloque le terminal pendant un nombre de secondes déterminé | sleep nombre_de_secondes |
| sort | Trie par ordre ASCII les lignes d'un fichier de type texte | sort fichier.txt |
| sudo | Effectue une commande en bénéficiant des droits super-utilisateur (superuser do, le super-utilisateur fait) | sudo commande |
| tail | Affiche les dernières lignes d'un fichier de type texte (tail signifie la queue, l'arrière en anglais) | tail fichier.txt |
| tar | Décompresse les fichiers d'une archive type UNIX | tar zxvf archive.tar.gz |
| telnet | Etablit une connexion vers une machine distante | telnet machine |
| tty | Affiche le nom du terminal utilisé | tty |
| vi | Edite le contenu d'un fichier de type texte | vi fichier.txt |
Raccourcis clavier en mode console
Il existe des raccourcis clavier spécifiques à la console, et permettant de nombreuses actions intéressantes (source : Tux-planet) :
Déplacement
- Ctrl + a : aller au début de la ligne
- Ctrl + e : aller à la fin de la ligne
- Alt + b : se déplacer mot par mot dans la ligne de commande en arrière (b pour backward)
- Alt + f : se déplacer mot par mot dans la ligne de commande en avant (f pour forward)
- Ctrl + xx : positionner le curseur au début du mot ou à la fin
- Ctrl + XL : position 69
Couper / Coller
- Ctrl + k : couper la chaîne du curseur jusqu'à la fin de la ligne
- Ctrl + u : couper la chaîne du curseur jusqu'au début de la ligne
- Ctrl + w : couper le mot avant le curseur
- Ctrl + y : coller une chaîne
Modification
- Ctrl + t : inverser la position des deux caractères avant le curseur (pratique quand on tape par exemple, sl au lieu de ls)
- Alt + t : inverser la position des deux mots avant le curseur
- Alt + c : mettre une lettre en majuscule
- Alt + l : mettre un mot en en minuscule (l pour lowercase)
- Alt + u : mettre un mot en majuscule (u pour uppercase)
- Alt + . : réécrire le paramètre de la dernière commande
Divers
- Ctrl + l : effacer le contenu de l'écran
- Ctrl + _ : annuler la dernière modification
- Ctrl + c : arrêter la commande en cours
- Ctrl + z : interrompt temporairement un processus, qui peut être relancé avec la commande fg (au premier plan) ou bg (en arrière-plan)
- Ctrl + d : quitter le shell en cours
- Ctrl + r : permet de rechercher une commande dans l'historique de la console
Optimiser la console
La touche Tab permet de compléter le nom des commandes. Elle permet aussi de compléter le chemin vers un fichier mais cela n'est pas toujours très pertinent. Par exemple, il serait préférable que l'argument après apt-get soit complété en fonction des paquets disponibles, et non des fichiers dans le répertoire courant. Cette fonction est prévue : il suffit d'éditer le fichier /etc/bash.bashrc et de décommenter les lignes concernant l'auto-complétion.
Les alias
La ligne de commande est très efficace, mais taper au clavier prend du temps : vous pouvez raccourcir vos commandes grâce aux alias. Il suffit d'ajouter dans votre fichier ~/.bashrc, juste après some more ls aliases, une ligne du type :
alias monalias='macommandetreslongue'
Lorsque vous taperez monalias dans votre terminal, la commande réellement exécutée sera macommandetreslongue.
À titre d'exemple, voici des alias pratiques :
Exemple
Voici deux exemples concernant l'usage de apt :
alias acs='apt-cache search'
alias agu='sudo apt-get update'
alias agg='sudo apt-get upgrade'
alias agd='sudo apt-get dist-upgrade'
alias agi='sudo apt-get install'
alias agr='sudo apt-get remove'
alias search='apt-cache search' alias show='apt-cache show' alias install='sudo apt-get install' alias remove='sudo apt-get remove' alias update='sudo apt-get update' alias upgrade='sudo apt-get upgrade -uy'
A l'usage ça donne :
update && upgrade
et on n'en parle plus
Notes
Maintenant, lançons-nous dans la fabuleuse histoire de la ligne de commande...
Le signe « $ »
Toutes les commandes de cette page seront précédées du signe $ (dollar), pour deux raisons fondamentales :
- La plupart des commandes affichent du texte lors de leur exécution, reprenons l'exemple de la commande
lsqui vous affichera le contenu d'un dossier. C'est pourquoi il faut différencier ce que vous devez entrer, et ce que vous ne devez pas entrer. Exemple :
Autre formulation : (il faut récupérer le meilleur des deux). Un objectif du signe$est de distinguer la commande en elle-même du résultat que l'on obtient en sortie, c'est-à-dire après son exécution. → Dans le cas de la commandels, la sortie (donc non précédée du signe "$") est la liste des fichiers (au sens large) du répertoire courant.
$ ls ati-driver-installer-8.20.8-x86_64.run Desktop fglrx-installer_8.20.8-1_amd64.changes Images libdri.a.gz ls.txt rt2570-cvs-2006010913 rt2570-cvs-daily.tar.gz
- Lors de vos péripéties dans le monde de Linux, vous serez sûrement amené à lire d'autres documentations que celle-ci. Or les commandes inscrites dans ces dernières pourront se révéler beaucoup plus fastidieuses qu'un simple
ls, et vous aurez tendance à recopier bêtement (sauf votre respect) le contenu de cette commande. Or ce n'est pas comme cela que vous apprendrez à être autonome dans le monde de Linux. Ainsi, le caractère$vous obligera à réécrire la commande en tentant de comprendre sa signification. Celui-ci est aussi utilisé pour spécifier explicitement que ce qui suit est une commande à lancer dans le terminal, même si sur ce wiki la mise en forme le montre explicitement.
Autre formulation : Un deuxième avantage découle de la présence du signe "$" : celle-ci empêche un copier/coller pur et simple d'une série de commandes consécutives (ce que vous rencontrerez probablement en parcourant ce wiki). En effet, l'objectif de ce wiki n'est pas seulement de vous apporter des solutions mais aussi de vous permettre de les comprendre et ainsi d'accroître votre connaissance, donc votre maîtrise, dans les systèmes GNU/linux. C'est pourquoi les rédacteurs de ce wiki font l'effort de vous donner les explications des commandes à exécuter. Notez bien que, sans cette volonté d'expliquer, ce wiki ne serait pas ce qu'il est aujourd'hui : vous ne trouveriez sans doute pas autant de solutions, les contributeurs ayant aussi leurs vies à côté. A la place vous utiliseriez des "scripts" (à définir) préconfigurés qui vous rapprocheraient d'un certain manque de possibilités que l'on constate dans le monde capitaliste où les industriels tentent de brider les logiciels pour lesquels l'utilisateur ne paye pas de licence. (Mais ceci est un autre débat, d'ailleurs le projet DADVSI l'alimente beaucoup de nos jours !).
Notion de Shell
L'interpréteur de commandes est l'interface entre l'utilisateur et le système d'exploitation, d'où son nom anglais « shell », qui signifie « coquille ».
Le shell est ainsi chargé de faire l'intermédiaire entre le système d'exploitation et l'utilisateur grâce aux lignes de commandes saisies par ce dernier. Son rôle consiste à lire la ligne de commande, interpréter sa signification, exécuter la commande, puis retourner le résultat sur les sorties.
Source : Commentcamarche.net
