— page corrigée — oh!rocks 2009/05/09 18:07
Un signe $ précède les commandes qui ne nécessitent pas de droits administrateur ; un signe # précède celles qui nécessitent des droits administrateur (ces signes ne font PAS partie des commandes). Les lignes qui ne commencent pas par un signe $ ou # correspondent au résultat de la commande précédente.
Les touches utilisées sont indiquées entre crochets, exemple [ctrl] pour la touche “contrôle”
L'interpréteur de commandes “bash” possède des fonctions très pratiques à l'usage, en particulier l'auto-complétion.
Cette fonction consiste à compléter la ligne de commande que vous êtes en train de taper d'un simple appui sur la touche “tab” (tabulation).
$ sh /home/tux/Do[tab]/NV[tab]
Cela complètera la ligne en “/home/tux/Downloads/NVIDIA-Linux-x86_64-180.44-pkg2.run”, ce qui économise un nombre de caractères non négligeable (et les fautes de frappe qui vont avec…). Vous remarquerez que la touche [tab] a été utilisée deux fois pour compléter deux éléments du chemin.
$ e2[tab][tab] e2fsck e2image e2label e2pall e2undel e2undo
Tapez “e2” puis deux fois la touche [tab] renvoie la liste des commandes commençant par “e2”. Le comportement est le même pour les chemins et si aucun début de mot n'est proposé, le double [tab] renvoie la liste de toutes les possibilités comme, par exemple, tous les chemins vers des sous-répertoires de /usr pour la commande “cd /usr/” :
$ cd /usr/[tab][tab] bin/ games/ include/ lib/ lib32/ lib64/ local/ sbin/ share/ src/ X11R6/
Bash peut garder dans un historique une trace des commandes exécutées. C'est en général le comportement par défaut et un appui sur la touche [haut] (la flèche pointant vers le haut) rappelle la dernière commande exécutée. Des appuis successifs rappellent les commandes plus anciennes, par ordre d'exécution, jusqu'à atteindre la limite de l'historique.
Ce comportement est pratique mais peut-être grandement amélioré.
$ !tail tail -n 2 /var/log/syslog Apr 19 14:35:43 deb64 dhclient: Sending on Socket/fallback Apr 19 14:35:43 deb64 dhclient: DHCPRELEASE on eth0 to 192.168.0.1 port 67
La commande correspondante s'affiche et s'exécute.
$ !?ext3? dmesg | grep -i ext3 EXT3-fs: INFO: recovery required on readonly filesystem. EXT3-fs: write access will be enabled during recovery. EXT3-fs: recovery complete. EXT3-fs: mounted filesystem with ordered data mode. EXT3 FS on md0, internal journal EXT3 FS on md1, internal journal EXT3-fs: mounted filesystem with ordered data mode.
C'est plus rapide que de retaper la commande surtout si vous en avez oublié la syntaxe…
$ tail -n 3 /var/log/syslog Apr 19 14:35:43 deb64 dhclient: Sending on LPF/eth0/00:1d:60:57:cf:57 Apr 19 14:35:43 deb64 dhclient: Sending on Socket/fallback Apr 19 14:35:43 deb64 dhclient: DHCPRELEASE on eth0 to 192.168.0.1 port 67 $ ^3^5 Apr 19 14:35:43 deb64 dhclient: wmaster0: unknown hardware address type 801 Apr 19 14:35:43 deb64 dhclient: Listening on LPF/eth0/00:1d:60:57:cf:57 Apr 19 14:35:43 deb64 dhclient: Sending on LPF/eth0/00:1d:60:57:cf:57 Apr 19 14:35:43 deb64 dhclient: Sending on Socket/fallback Apr 19 14:35:43 deb64 dhclient: DHCPRELEASE on eth0 to 192.168.0.1 port 67
Le premier caractère de substitution ^ (accent circonflexe) précède la valeur à remplacer, le second la nouvelle valeur.
shopt -s histappend PROMPT_COMMAND='history -a'
“histappend” permet également d'enregistrer dans l'historique les commandes des différents shell qui seraient utilisés simultanément et pas seulement celles du dernier shell utilisé.
Et dans votre fichier “.inputrc” (à créer s'il n'existe pas) :
"\e[A": history-search-backward "\e[B": history-search-forward
De cette manière la touche [flèche_haut] garde son comportement par défaut si rien n'est tapé : elle rappelle la dernière commande effectuée. Mais si un début de commande est tapé, la touche [flèche_haut] effectue une recherche dans l'ensemble de l'historique à partir des éléments déjà tapés ([flèche_bas] effectue la recherche en arrière).
Vous devez ouvrir une nouvelle session shell pour que les changements soient effectifs.
export HISTSIZE= cette variable détermine le nombre de commandes qui seront enregistrées dans l'historique ; la valeur par défaut est souvent 500. Si vous mettez la valeur à 0 rien ne sera enregistré. Toutes les valeurs au-dessus de 500 peuvent être utilisées. Pour laisser l'historique enregistrer les 5000 dernières commandes, écrivez :
export HISTSIZE=5000
Vous pouvez connaître la valeur actuelle de la variable avec :
$ echo $HISTSIZE
export HISTCONTROL=ignoreboth:erasedups permet d'éviter les doublons dans l'historique (“ignoredups” et “ignorespace” sont des sous-ensembles de “ignoreboth”).
$ history 10
Et si vous désirez effacer une commande de l'historique, par exemple si vous venez de taper un mot de passe en clair par erreur :
$ history 1 798 mot-de-passe-ultra-secret $ history -d 798
“history 1” vous donne le numéro de ligne de la dernière commande tapée (ici “798”) et “history -d” vous permet ensuite de l'effacer.
Lorsque vous utilisez une console, vous bénéficiez de nombreux raccourcis qui peuvent vous faire économiser des frappes. Voici un petit mémo des plus courants ([maj] = “touche majuscule” ou “shift”, [ctrl] = “touche ctrl”, …etc) :
Raccourcis | Fonction | ||
---|---|---|---|
[ctrl][a] | place le curseur en début de ligne | ||
[ctrl][e] | place le curseur en fin de ligne | ||
[alt][f] | sauter de mot en mot en avant | ||
[alt][b] | sauter de mot en mot en arrière | ||
[ctrl][t] | inverser les deux caractères avant le curseur (lsmdo > lsmod) | ||
[ctrl][_] | annuler la dernière modification | ||
[alt][maj][t] | inverser les deux mots avant le curseur (modprobe sudo > sudo modprobe) | ||
[alt][maj][u] | mettre le mot suivant le curseur en majuscules | ||
[alt][maj][l] | mettre le mot suivant le curseur en minuscules | ||
[ctrl][c] | arrêter (crasher) la commande en cours d'exécution | ||
[ctrl][z] | suspendre la commande en cours d'exécution (restauration avec “fg” ou “bg”) | ||
[ctrl][d] | quitter le shell en cours (équivalent “exit”) |
Ceci n'est qu'une courte sélection personnelle. Il existe de nombreux autres raccourcis.