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 [08/08/2015 18:47] milou [history] |
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 107: | Ligne 126: | ||
//[[matt_chile@yahoo.fr|MaTTuX_]] 2009/01/14 16:30// | //[[matt_chile@yahoo.fr|MaTTuX_]] 2009/01/14 16:30// | ||
+ | ===== Importer une sauvegarde dans history ===== | ||
+ | |||
+ | Par exemple, pour importer votre fichier **history.txt** précédemment | ||
+ | |||
+ | <code user>history -r history.txt</code> | ||
+ | |||
+ | <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 ===== | ||
Ligne 118: | Ligne 172: | ||
//Qu'il est mignon de nous donner cela... Merci //**phlinux**// !// | //Qu'il est mignon de nous donner cela... Merci //**phlinux**// !// | ||
- | Habituellement, nous pouvons **remonter l'historique** de nos commandes dans le terminal avec le "flèche-haut" du clavier... Simple. \\ | + | Habituellement, nous pouvons **remonter l'historique** de nos commandes dans le terminal avec <key>Up</key>... Simple. \\ |
Pourquoi ne pas remonter en utilisant les lettres alphatétiques débutant ces commandes ? Yop ! | Pourquoi ne pas remonter en utilisant les lettres alphatétiques débutant ces commandes ? Yop ! | ||
Ligne 145: | Ligne 199: | ||
=== Recherche par thème === | === Recherche par thème === | ||
- | Pour rechercher une commande par thème avec la flèche haut, vous écrivez dans ~/.inputrc (à créer au lieu d'utiliser /etc/inputrc) ceci : | + | Pour rechercher une commande par thème avec <key>Up</key> vous écrivez dans ~/.inputrc (à créer au lieu d'utiliser /etc/inputrc) ceci : |
<code> | <code> | ||
"\e[A": history-search-backward | "\e[A": history-search-backward | ||
Ligne 152: | Ligne 206: | ||
set completion-ignore-case on</code> | set completion-ignore-case on</code> | ||
- | Il vous suffit alors d'autocompléter par la touche flèche-haut du clavier les 3 premières lettres de la commande recherchée et il ne sera proposé par history que toutes les commandes commençant __uniquement par ces lettres__ à chaque appui. \\ | + | Il vous suffit alors d'autocompléter par la touche <key>Up</key> les 3 premières lettres de la commande recherchée et il ne sera proposé par history que toutes les commandes commençant __uniquement par ces lettres__ à chaque appui. \\ |
Exemple : | Exemple : | ||
<code user> | <code user> |