Trucs et astuces pour la console

De Le Wiki du Forum-Debian.fr
Aller à la navigation Aller à la recherche

Utiliser la ligne de commande rebute souvent les débutants. C'est pourtant une manière puissante et rapide de réaliser toutes sortes de tâches. Quelques petits trucs permettent d'utiliser la console avec une efficacité redoutable.

Accéder à une console

Il y a 2 manières de pouvoir accéder à la ligne de commande.

Depuis votre interface graphique, avec un émulateur de terminal, installé automatiquement par votre environnement de bureau. Suivant celui que vous utilisez, ce peut être gnome-terminal, konsole, lxterminal...etc. Ce terminal est disponible depuis un menu ( Applications ⇨ Accessoires ⇨ Terminal pour Gnome ). Votre Debian vous propose aussi 6 consoles virtuelles qui sont accessibles avec le raccourci clavier Ctrl+Alt suivi de F1,F2,F3,F4,F5 ou F6.

Essayez ! Tapez Ctrl+Alt+F2, votre bureau vient de disparaître... Rassurez-vous, il est encore là, et vous pouvez y retourner en tapant Ctrl+Alt+F7.

En accédant à une console virtuelle, on vous demande un nom d'utilisateur suivi d'un mot de passe. Vous pouvez taper le vôtre et votre propre mot de passe. Vous pouvez aussi, si c'est vraiment indispensable vous "logger" en tant qu'administrateur en tapant "root" suivi du mot de passe adéquat.

Lorsque vous ouvrez un émulateur de terminal, aucun "login" ne vous est demandé, puisque vous l'ouvrez depuis votre session... c'est donc vous qui êtes connecté.

Pourquoi 2 façons d'accéder à une console ? me direz vous !... Imaginez que votre bureau se fige... vous serez content d'avoir une console virtuelle sous les doigts !

Raccourcis clavier

racourci description
Flèches haut et bas Navigation dans l'historique des commandes.
Ctrl + flèche droite ou gauche Se déplacer de mot en mot.
Tab ( ⇆ ) Autocomplétion des commandes, noms de fichiers ou chemins.
Ctrl + A Se déplacer en début de ligne.
Ctrl + E Se déplacer en fin de ligne.
Ctrl + W ou Alt + Backspace Effacer le mot avant le curseur.
Alt + D Effacer le mot qui suit le curseur.
Ctrl + U Effacer du début de ligne jusqu'au curseur.
Ctrl + K Effacer du curseur à la fin de ligne.
Ctrl + Y Restaurer ce que vous venez d'effacer.
Ctrl + L Faire défiler l'écran pour que le curseur soit en haut.
Ctrl + C Arrêter la commande en cours d'exécution.
Ctrl + Z Mettre la commande en cours en arrière-plan.
Ctrl + R Recherche dans l'historique.
Ctrl + D Déconnexion, ferme le terminal si simple utilisateur.
Ctrl + T Intervertir les 2 lettres avant le curseur.
Shift + PageUp/PageDown se déplacer de haut en bas, comme avec la barre de défilement d'un terminal graphique.

Effacement du terminal

Pour y voir un peu plus clair, vous pouvez utiliser les commandes :

clear : efface le terminal (équivalent de Ctrl+L)
reset : réinitialise complètement le terminal (on ne peut plus remonter via Shift+PgUp ou avec la barre de défilement).

Aide de bash

Les commandes internes de bash (cd, umask, export, history,...) n'ont pas de pages de manuel. Elles sont documentées dans la page de manuel de bash. Vous pouvez y avoir accès sans avoir à faire une longue recherche dans la page de manuel en utilisant la commande help. Par exemple :

$ help umask
umask: umask [-p] [-S] [mode]
   Display or set file mode mask.
   
   Sets the user file-creation mask to MODE.  If MODE is omitted, prints
   the current value of the mask.
   
   If MODE begins with a digit, it is interpreted as an octal number;
   otherwise it is a symbolic mode string like that accepted by chmod(1).
   
   Options:
     -p	if MODE is omitted, output in a form that may be reused as input
     -S	makes the output symbolic; otherwise an octal number is output
   
   Exit Status:
   Returns success unless MODE is invalid or an invalid option is given.

Historique des commandes

Lorsque vous entrez une commande au clavier, celle-ci est automatiquement mémorisée. Vous pouvez ainsi accéder aux 500 dernières en tapant history. Vous pouvez aussi restreindre votre recherche en tapant history suivi du nombre désiré ; history 18 affichera ainsi les 18 dernières commandes entrées. history -c efface tout l'historique.

history vous présente une liste des dernières commandes tapées précédées d'un numéro d'ordre. Pour ré-utiliser une commande particulière il suffit de paper un point d'exclamation suivi de son numéro. Ainsi !362 relancera la 362ème commande de l'historique.

Imaginez que vous vouliez de nouveau utiliser la commande copier ( cp ) sur un fichier avec un nom à rallonge, taper !cp ré-utilisera la dernière commande de copie.

De même taper !! vous permet de ré-utiliser la dernière commande que vous venez de taper.

Plus fort encore : taper !? suivi d'une partie quelconque d'une commande recherchera dans l'historique la dernière commande qui utilisait cette partie de commande et vous là proposera. Par exemple !?gra pourrait vous proposer aptitude full-upgrade.

Ctrl + R n'est pas mal non plus, car taper Ctrl + R suivi du début d'une commande recherchera en arrière les commandes déja tapées qui correspondent au début que vous venez d'entrer. Il vous proposera la première trouvée, si elle ne convient pas, retapez Ctrl + R il vous proposera la suivante, et ainsi de suite.

^ancien^nouveau permet de relancer la dernière commande en remplaçant « ancien » par « nouveau » dans le texte. Par exemple :

mount /media/cdrom
^mount^cd # lancera : cd /media/cdrom

Redirection, pipeline et autres amusements

Redirection

Il est parfois utile de conserver le résultat d'une commande. Par exemple le résultat de dmidecode qui répertorie votre matériel est un texte relativement long. Vous pouvez, bien entendu, copier le texte, créer un fichier et y coller ce que vous venez de copier. Il existe pourtant une méthode qui vous fera gagner un peu de temps, la redirection.

En tapant :

 # dmidecode > listing_matériel

vous venez de créer un fichier " listing_matériel " qui contient le résultat de la commande.

En tapant >> au lieu de > , le résultat sera ajouté à la suite du texte déja existant dans le fichier.

Il existe aussi une redirection inverse, avec <, utilisable avec certaines commandes. Prenons un exemple :

Vous venez de créer un fichier disques.txt qui contient, dans le désordre, la liste des centaines de CD que comporte votre discothèque. Vous aimeriez bien trier cette liste par ordre alphabétique.

Vous avez de la chance ! La commande sort réalise cela. Il vous suffira de faire :

$ sort < disques.txt

... et le tour sera joué !

Pipeline

Le "pipe", symbolisé par une barre verticale "|" ( AltGr-6 sur un clavier Français ), permet de renvoyer le résultat d'une première commande vers une deuxième commande.

Par exemple en tapant ls vous obtenez la liste des répertoire et fichiers contenus dans le répertoire courant... Si maintenant vous faites ls | sort, vous obtiendrez toujours cette même liste, mais triée par ordre alphabétique : sort a utilisé le résultat de ls pour le faire.

Une façon très courante d'utiliser le pipe est de l'associer à grep, qui permet de filtrer le résultat d'une commande en n'affichant que ceux comportant le ou les mots ( en fait une expression rationnelle ) suivant grep.

Par exemple :

ls | grep rapport

n'affichera que les dossiers ou fichiers comportant le mot "rapport" dans leur nom.

Noms comportant des espaces

Imaginons que vous vouliez créer dans votre dossier personnel un dossier nommé "Rapport de juin". Un mkdir Rapport de juin risque fort de ne pas donner le résultat escompté : Vous allez vous retrouver avec 3 dossiers nommés Rapport, de et juin.

Pour créer ce dossier il y a deux manières de procéder :

  • mettre le nom entre guillemets : mkdir "Rapport de juin"
  • échapper les caractères en les précédant d'un backslash ( \ ) : mkdir Rapport\ de\ juin

De même, pour l'effacement, un rm -r Rapport de juin vous donnera :

rm: impossible de supprimer « Rapport »: Aucun fichier ou dossier de ce type
rm: impossible de supprimer « de »: Aucun fichier ou dossier de ce type
rm: impossible de supprimer « juin »: Aucun fichier ou dossier de ce type


Il faut donc, comme précédemment utiliser les guillemets ou le backslash :

rm -r "Rapport de juin"

ou

rm -r Rapport\ de\ juin

Noms commençant par -

Les fichiers commençants par le caractère "-" (moins) peuvent être gênant à gérer en ligne de commande, car ils sont reconnus comme des options du programme. La solution pour les utiliser consiste à ajouter -- entre les options du programme et les fichiers que vous souhaitez passer en paramètre.

Accolades

L'utilisation des accolades {...} dans une commande permet souvent de se faciliter la tâche. Prenons un exemple :

A votre retour de vacances, vous avez décidé de classer les centaines de photos que vous avez prises dans des dossiers correspondant à chacune de vos destinations. Vous pourriez faire :


$ mkdir photos_Bahamas
$ mkdir photos_Hawai
$ mkdir photos_Antilles
$ mkdir photos_Japon

en créant chaque dossier individuellement... fastidieux !

Il y a une manière plus rapide de réaliser cela :


$ mkdir photos_{Bahamas,Hawai,Antilles,Japon}

... étonnant ! non ?

Les accolades fonctionnent avec toutes les commandes, si vos photos des Bahamas et du Japon sont ratées et que vous vouliez effacer les dossiers correspondant, un simple :

$ rm -r photos_{Bahamas,Japon}

suffira !

Si, au lieu de créer des dossiers avec les noms de vos destinations, vous vouliez plutot photos_1, photos_2, photos_3...jusqu'à photos_12, il suffit de faire :

$ mkdir photos_{1..12}

... et ça marche aussi avec des lettres :

$ mkdir photos_{A..Z}

créera 26 dossiers de photos_A jusqu'à photos_Z.

Jokers

Les jokers sont des caractères spéciaux qui peuvent se substituer à n'importe quel autre. Les plus utilisés sont :

  • L'astérisque ( * ) qui peut remplacer n'importe quelle combinaison ou nombre de caractères. Ainsi rm * effacera tous les fichiers du dossier courant. Pour revenir à nos vacances, un rm -r photos_* effacera tous les dossiers de photos de vos derniers congés que vous avez créé précédemment... C'est votre chère et tendre qui va être contente !
  • Le point d'interrogation ( ? ), lui sert à remplacer un seul et unique caractère. Ainsi rm -r photos? effacera photos1, photos2,photosA...etc, mais ne touchera pas aux autres dossiers commençant par photos et comportant à la suite plus d'un caractère. Le dossier nommé "photos" ne sera pas non plus touché.
  • Une autre façon d'indiquer un joker est d'utiliser les crochets [..]. Ainsi rm -r photos[158] effacera photos1, photos5 et photos8, mais laissera les autres en place.