logo Debian Debian Debian-France Debian-Facile Debian-fr.org Forum-Debian.fr Debian ? Communautés logo inclusivité

Debian-facile

Bienvenue sur Debian-Facile, site d'aide pour les nouveaux utilisateurs de Debian.

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 → ODT PDF Export

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
doc:programmation:bash:history [08/08/2015 18:44]
milou [Utilisation]
doc:programmation:bash:history [24/10/2022 22:28] (Version actuelle)
Jean-Pierre Pinson [Lister history]
Ligne 8: Ligne 8:
     * Création par [[user>​MaTTuX_]] //​Mattuxalhem...//​     * Création par [[user>​MaTTuX_]] //​Mattuxalhem...//​
     * Testé par [[user>​smolski]] //pareil// :-P     * Testé par [[user>​smolski]] //pareil// :-P
-  * Commentaires sur le forum : [[http://​debian-facile.org/​viewtopic.php?​id=1031 | Lien vers le forum concernant ce tuto]]((N'​hésitez pas à y faire part de vos remarques, succès, améliorations ou échecs !)) FIXME+  * Commentaires sur le forum : [[http://​debian-facile.org/​viewtopic.php?​id=1031 | Lien vers le forum concernant ce tuto]]((N'​hésitez pas à y faire part de vos remarques, succès, améliorations ou échecs !))
  
  
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//
  
-===== ASTUCE ​=====+===== 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]] 
 +===== ASTUCES ​=====
  
 ==== Affichage ​ alphabétique de l'​historique des commandes ==== ==== Affichage ​ alphabétique de l'​historique des commandes ====
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 125: Ligne 179:
 Par exemple tu écris : Par exemple tu écris :
 <code user>​g</​code>​ <code user>​g</​code>​
-puis tu utilises la touche ​flèche-haut+puis tu utilises la touche ​<​key>​Up</​key>​
 et s'​affichent à la suite toutes les commandes qui commencent par "​g" ​ et qui se trouvent dans ton ~/​.bash_history.. et s'​affichent à la suite toutes les commandes qui commencent par "​g" ​ et qui se trouvent dans ton ~/​.bash_history..
  
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>
Ligne 162: Ligne 216:
 Redémarrer le terminal pour que //​l'​effet se passe//... ;) Redémarrer le terminal pour que //​l'​effet se passe//... ;)
  
 +==== Inhiber ou valider l'​historique des commandes dans une session shell ====
 +
 +Vous ne souhaitez pas qu'une commande ou une liste de commandes se retrouve dans l'​historique des commandes.
 +
 +Pour faire cela il suffit de taper la commande suivante :
 +
 +<code user>set +o history</​code>​
 +
 +A partir de là plus aucune commande ne sera enregistré dans l'​historique.
 +
 +C'est pratique par exemple si vous tapez en clair un mot de passe.
 +
 +Pour valider à nouveau l'​enregistrement de l'​historique des commandes, il suffit de taper la commande :
 +
 +<code user>set -o history</​code>​
 ===== Remerciements ===== ===== Remerciements =====
  
Ligne 178: Ligne 247:
 //Oui c'est du pur geek façon l'​patron //​**MaTTuX_**//​ !// :-D //Oui c'est du pur geek façon l'​patron //​**MaTTuX_**//​ !// :-D
  
 +===== Rechercher dans l’historique Bash avec Ctrl+R =====
 +
 +Exemple :
 +Dans votre terminal si vous tapez Ctrl + r, vous obtiendrez :
 +
 +[romain@arch_machine ~]$
 +(reverse-i-search)`':​
 +Ensuite tapez un mot clé correspondant à ce que vous pourriez avoir envié de rechercher dans l’historique :
 +
 +Ces derniers jours, j’ai utilisé des lignes de commandes qui comportées « gcc », si je tape « gcc » il m’affiche :
 +
 +[romain@arch_machine ~]$
 +(reverse-i-search)`':​ gcc -g test.c
 +Ci-dessus, on peut voir qu’il m’affiche une ligne commande entière (avec les arguments) qui contient l’expression « gcc ». Cette ligne de commande correspond à la dernière ligne de commande que j’ai tapé et qui contenait le mot clé gcc.
 +
 +En appuyant une deuxième fois sur Ctrl + R, je remonte dans l’historique Bash enregistré. Il m’affiche :
 +
 +[romain@arch_machine ~]$
 +(reverse-i-search)`':​ gcc test.c
 +Ci-dessus, il m’affiche une autre ligne de commande que j’ai tapé dernièrement et qui contient également l’expression « gcc ».
 +
 +En appuyant successivement sur CTRL + r vous pouvez remonter dans l’historique des commandes.
 +
 +Un autre exemple, si je tape Ctrl +r vfat, il m’affiche :
 +
 +[romain@arch_machine ~]$
 +(reverse-i-search)`':​ cd /mnt/vfat
 +Il a trouvé la dernière commande que j’avais tapé et qui comprenait le mot clé vfat.
 +
 +Si vous souhaitez sélectionner la ligne de commande qu’il vous propose, rien de plus simple, soit vous appuyez sur la touche entrée pour éxecuter la commande, soit vous l’éditer directement. Pour l’éditer,​ déplacer le curseur avec les flèches droite et gauche. Pour annuler appuyer sur Ctrl +c.
 +
 +Remerciements au site: [[http://​www.commandeslinux.fr/​rechercher-dans-lhistorique-bash-avec-ctrlr/​]]
  
  
  
  
doc/programmation/bash/history.1439052275.txt.gz · Dernière modification: 08/08/2015 18:44 par milou

Pied de page des forums

Propulsé par FluxBB