#1 Le 26/04/2010, à 19:53
- miniSeb
Terminal - Naviguer dans l'historique
Ça fait quelque temps que je cherchais un tutoriel sur l'exploitation de l'historique dans le terminal, mais je ne trouvais rien de probant. J'ai donc creusé de mon côté, par essai/erreur et avec des bribes d'informations sur différents sites.
Ne sachant si j'ai l'autorisation de modifier la doc ( http://doc.ubuntu-fr.org/terminal#l_historique_des_commandes ), je préfère écrire ça ici.
1. Comme signalé en doc, il est assez simple de naviguer dans l'historique en remontant avec la ↑ (flèche vers le haut) jusqu'à sélectionner la commande désirée.
2. On y signale également la possibilité de checker l'historique (les 500 dernières commandes) avec la commande history.
L'utilisation de !<num>, où <num> correspond à sa place dans la liste, permet de la re-sélectionner. Ceci fonctionne également avec des chiffres négatifs !-<num> donnera la -nième commande (!-1 vaut donc la dernière commande).
C'est ici que les Romains s'empoignent : la documentation n'apporte pas plus d'information. Toutefois, il existe beaucoup de moyens d'exploiter la commande ! (point d'exclamation) (à noter que, ci-après, les résultats des commandes sont supprimés, ils ne servent à rien à la compréhension ).
En effet, on retrouve tout d'abord la commande !! qui permet de sélectionner automatiquement la dernière commande effectuée, comme suit :
~$ ls -al Documents/
~$ !!
ls -al Documents/
Jusque là rien de révolutionnaire ; ça va plus vite avec ↑.
Ça devient un peu plus intéressant lorsque l'on sait qu'en tapant la(es) première(s) lettre(s) de la commande voulue, on l'obtient également. Ainsi, on peut utiliser
~$ cd
~$ ls
~$ cd
tout comme
~$ cd
~$ ls
~$ !c
indifféremment, pour le même résultat.
Toujours rien de folichon, je vous l'accorde
Nouvelle possibilité avec !* qui permet de reprendre les arguments de la dernière commande, sans la reprendre. Ceci peut être utile, comme par exemple ici :
~$ cd ~/Documents/
~/Documents$ ls !*
ls ~/Documents/
Encore et toujours rien de très neuf (mais bon, autant être complet hein !).
Il est également de récupérer une commande avec un élément de chaîne, avec l'opérateur :
!?chaine?
Avec un petit exemple :
~$ ls /Documents/
~$ cat file.txt
~$ !?ocu?
ls /Documents/
Un peu mieux ?
Dernière découverte, qui m'a donné envie d'écrire ce petit tutoriel : il est possible de réutiliser chaque section d'une commande, en fonction de sa position, grâce à !:<num> :
~$ ls -al ~/Documents/
~$ !:0
ls
~$ ls -al ~/Documents/
~$ !:1
-al
~$ ls -al ~/Documents/
~$ !:2
~/Documents/
C'est-y pas beau tout ça ?
À noter que les éléments fonctionnent comme dans une liste Perl : le 1er argument est l'élément 0. Par ailleurs, on peut utiliser !:<num> et !!:<num> indifféremment (je n'ai rien trouvé en tout cas...).
Il est possible de combiner plusieurs éléments, avec :
~$ ls -al ~/Documents/
~$ !:0-1
ls -al
Et, enfin, on peut remarquer que !:0 correspond au 1er élément et que !:$ correspond au dernier.
Alors, évidemment, avec les commandes en exemple ça ne sert strictement à rien (ou presque), mais avec des commandes plus longues ça permet un gain de temps considérable
Enfin, il me reste l'opérateur p à présenter. Il permet d'imprimer (print) la commande que l'on obtiendrait, sans l'effectuer. Ça permet d'éviter des erreurs de manipulation. Pour l'utiliser :
~$ ls -al ~/Documents/
~$ cp file1 file2
~$ !l:p
ls -al ~/Documents/
L'opérateur p est également combinable avec !:<num>.
PS : J'espère que ça n'est pas de la redite, mais comme je n'ai rien trouvé, j'en doute ;-)
En espérant que ça serve !
Dernière modification par miniSeb (Le 26/04/2010, à 19:57)
Hors ligne
#2 Le 26/04/2010, à 20:07
- ikthus
Re : Terminal - Naviguer dans l'historique
Merci sympa, j'ai appris qq truc, j'aime bien la commande !!
Sinon, tu peux améliorer la doc, c'est même vivement encouragé
http://doc.ubuntu-fr.org/wiki/participer_wiki
Salut Miniseb
Je ne serais jamais l'esclave de votre société - Assassin
Hors ligne
#3 Le 26/04/2010, à 21:59
- miniSeb
Re : Terminal - Naviguer dans l'historique
De rien
C'est d'encore plus agréable quand on sait qu'on peut tout combiner. Du genre
~$ !-5:2-$:p
Mais bon, ok, ça devient vite le bordel dans les scripts
J'irai faire un passage dans la doc à l'occasion, alors !
Dernière modification par miniSeb (Le 26/04/2010, à 21:59)
Hors ligne
#4 Le 26/04/2010, à 22:32
- nesthib
Re : Terminal - Naviguer dans l'historique
tuto très sympa miniSeb. À noter toutefois que ceci ne fonctionne que dans l'interpréteur de commandes mais pas avec un script.
GUL Bordeaux : Giroll – Services libres : TdCT.org
Hide in your shell, scripts & astuces : applications dans un tunnel – smart wget – trouver des pdf – install. auto de paquets – sauvegarde auto – ♥ awk
⃛ɹǝsn xnuᴉꞁ uʍop-ǝpᴉsdn
Hors ligne
#5 Le 27/04/2010, à 06:30
- miniSeb
Re : Terminal - Naviguer dans l'historique
Ok merci pour l'info
Je ne scripte jamais en bash (ou alors c'est minimal) et je n'avais pas essayé.
Bon à savoir !
Hors ligne
#6 Le 01/05/2010, à 12:51
- kursus
Re : Terminal - Naviguer dans l'historique
Merci pour le tuto ! super utile
Hors ligne
#7 Le 10/05/2010, à 12:33
- miniSeb
Re : Terminal - Naviguer dans l'historique
De rien
À noter : ça coince avec les accents dans les noms de fichier
~$ gnome-open fichier1
~$ !gn:0 fichié2
gnome-open fichié
Erreur à l'affichage de l'URL : Erreur de l'interrogation du fichier (...)
Hors ligne