Vous n'êtes pas identifié(e).
L'icône rouge permet de télécharger chaque page du wiki visitée au format PDF et la grise au format ODT →
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente Prochaine révision Les deux révisions suivantes | ||
doc:programmation:bash:history [24/02/2018 15:10] bendia [Sauvegarder history] Ajout import historique |
doc:programmation:bash:history [25/02/2018 16:18] bendia [Utilisation] |
||
---|---|---|---|
Ligne 44: | Ligne 44: | ||
Astuce également valable dans un shell zsh. (//dixit le// **captnfab**...) ;-) | Astuce également valable dans un shell zsh. (//dixit le// **captnfab**...) ;-) | ||
+ | |||
+ | ==== !! La dernière commande ==== | ||
+ | |||
+ | La commande ''!!'' permet de rappeler la dernière commande passée, tout comme <key>Up</key> | ||
+ | <code user>!!</code> | ||
+ | <file bash résultat de la commande précédente> | ||
+ | 4 cat base.tex | ||
+ | 5 ls -al | ||
+ | 6 cd Desktop/ | ||
+ | 7 cd Work/ | ||
+ | 8 pwd | ||
+ | 9 history | ||
+ | </file> | ||
+ | Normal, la dernière commande passée était bien ''history'' ;-) | ||
==== ! + Numero ==== | ==== ! + Numero ==== | ||
Ligne 59: | Ligne 73: | ||
==== ! + lettres ==== | ==== ! + lettres ==== | ||
- | La commande **!lettres**//_début_commande_recherchées// permet d’atteindre la commande à droite du numéro Essayez ! en tapant : | + | La commande **!lettres**//_début_commande_recherchées// permet d’atteindre la commande à droite du numéro et de l’exécuter Essayez ! en tapant : |
!ca | !ca | ||
j’obtiens ici **cat base.tex** : | j’obtiens ici **cat base.tex** : | ||
Ligne 68: | Ligne 82: | ||
/home/cobex4 | /home/cobex4 | ||
</file> | </file> | ||
+ | |||
+ | <note tip>Si on veut juste visualiser la commande sans l'executer, on ajoute '':p'' après la ou les première lettre | ||
+ | <code user>!ca:p</code> | ||
+ | <code>cat base.tex</code> | ||
+ | </note> | ||
===== Effacer history ===== | ===== Effacer history ===== | ||
Ligne 115: | Ligne 134: | ||
<note important>Cela va ajouter le contenu de **history.txt** dans le fichier **.bash_history** en cours, pas le remplacer. Ppir cela, il faudrait effacer l'historique avant.</note> | <note important>Cela va ajouter le contenu de **history.txt** dans le fichier **.bash_history** en cours, pas le remplacer. Ppir cela, il faudrait effacer l'historique avant.</note> | ||
+ | ===== Réutiliser les arguments de la commande précédente ===== | ||
+ | |||
+ | Il est possible de réutiliser les arguments de la commande précédente. Cela peut être utile en cas de faute de frappe par exemple. | ||
+ | |||
+ | Ainsi, on rappelle tous les arguments avec ''!*'', le premier avec ''!^'', le dernier avec ''!$'', le //nième// avec ''!!:n'' et des //nième// au //mième// avec ''!!:n-m''. | ||
+ | |||
+ | Par exemple, je fais une faute de frappe dans une commande | ||
+ | <code user>eco Salut les fous facile</code> | ||
+ | <code>bash: eco : commande introuvable | ||
+ | Pour corriger | ||
+ | <code user>echo !*</code> | ||
+ | <code>echo Salut les fous facile | ||
+ | Salut les fous facile</code> | ||
+ | |||
+ | Autre exemple, je me trompe d'option. Je voulais lister tous les fichiers installé par un paquet avec dpkg, mais j'utilise la mauvaise option | ||
+ | <code user>dpkg -S libsdl2-image-dev</code> | ||
+ | J'aurais du utiliser l'option **-L**. Pas besoin de tout retaper | ||
+ | <code user>dpkg -L !$</code> | ||
+ | |||
+ | Il est même possible de rappeler ces arguments en les modifiant. Imaginons que vous souhaitiez afficher le contenu de //monFichierAvec1NomSuperLong.txt// | ||
+ | <code user>cat monFichierAvec1NomSuperLong.txt</code> | ||
+ | Ventrebleu, ça n'est pas le bon fichier, vous vouliez en fait le contenu de //monFichierAvec2NomSuperLong.txt// :-/Pas besoin de tout retaper, vous pouvez réaliser l'opération avec | ||
+ | <code user>cat !!:1:s/1/2/</code> | ||
+ | |||
+ | Un poil d'explications :-p ''!!:1'' rappel l'argument 1 de la dernière commande, donc ''monFichierAvec1NomSuperLong.txt''. On demande ensuite de substituer (**s**) la première occurrence de **1** pour la remplacer par **2** | ||
+ | |||
+ | Pour aller plus loin : [[doc:systeme:sed#la-fonction-de-substitution-s|la fonction de substitution avec sed]] | ||
===== ASTUCE ===== | ===== ASTUCE ===== | ||