Je suis d'accord avec toi ... je trouve ca juste rigolot.. maintenant qu'il y a l'historique sous bash on n'utilise plus ce genre de technique mais c'est bien de les rappeler je trouve...
c'est comme le !une_lettre pour rappeler la derniere commande commencant par $une_lettre...
Pour éviter les problèmes et il est bon d'utiliser la commande comme ceci:
!r:p
Le :p permet de rappeler la commande sans l'exécuter (elle est juste affichée) et de la placer en dernière position dans l'history. Elle est donc rappelable et modifiable en appuyant naturellement sur la touche flèche vers le haut.
Dans le cas d'une recherche dans l'history en utilisant !? il faut placer un ? final avant le :p, soit:
!?la_chaine?:p
Et pour remplacer un bout de la chaine en même temps (exemple: remplacement de rm par ls, !rm:gs/rm/ls ):
!r:p:gs/rm/ls
Bon, je suis d'accord, ca fait assez old school comme méthode mais c'est tellement bon parfois de s'amuser avec ces vieilles choses la.
justement, il y a beau y avoir l'historique, c'est souvent bien plus rapide que de remonter dans l'historique, puis taper 12 fois sur <- pour aller enfin modifier le texte.
et pour !une_lettre, mieux vaut taper !plusieurs_lettres, sinon attention aux dégâts ;-) (ceci dit, ya a pas plus rapide pour remonter dans l'historique... mais mieux vaut taper la commande complète, un !ssh vaut mieux qu'un !s, surtout s'il y a un shutdown qui traine ;))
ceci dit, ya a pas plus rapide pour remonter dans l'historique
Euh, avec zsh je tapes un début de commande puis <esc>P ou <esc>N pour la commande précédente ou suivante qui commence pareil... c'est royal, et pas de gaffe !
Ca m'etonne que personne n'ait mentionne ctrl-r. Ca permet de faire une recherche incrementale en remontant dans l'historique.
En gros on tape ctrl-r, puis le debut de la commande qu'on veut retrouver, et au fur et a mesure qu'on tape, ca affiche la derniere commande qui matche. Et des qu'on a trouve, hop, Entree et c'est bon.
C'est super rapide et ca evite les erreurs avec !commande. J'utilise ca tout le temps...
et une fois que tu fais ctrl-r plusieures fois pour remonter dans les commandes qui matchent ce que tu as écrit, tu peux redescendre la liste avec ctrl-s
et sinon la plupart des raccourcis emacs fonctionnent dans zsh : ctrl-fleches, ctrl-e, ctrl-a, ctrl-d, alt-d, ...
CTRL-s est mape sur le signal STOP (arret de defilement), de meme que
CTRL-q l'est sur START (resume du defilement).
Comment donc utiliser en pratique crtl-s de la readline sous bash???
Sinon CTRL-r est l'outil d'historique qui me semble le plus pratique.
Ou si vous êtes sous ksh (il y a en a ;-), taper Ctrl-R, le texte à rechercher puis Entrée pour la première occurence, puis Ctrl-R, Entrée pour faire défiler les occurences suivantes.
On précise que ça marche même avec le milieu de la commande qu'on veut trouver, et on tombe sur une combinaison de touche qui effectivement sert tout le temps. Vive les shells cools.
L'historique c'est très pratique quand tu viens de faire un commande bien compliquée (genre avec du for du while et du if pour réaliser une action bien complexe) et que tu veux refaire presque la même chose en changeant quelques petits paramètres t'es bien content d'avoir un historique pour rappeller ta commande.
Je l'utilise assez régulièrement, c'est extrêmement pratique quand on en a prix l'hbitude et surtout pour corriger une faute de frappe dans une ligne de commande de 3 kilomètres de long. Ça soulage un peu les touches de curseur.
Je parle même pas des mchines de prod qui n'ont pas d'historiques et sur lesquelles il est totalement interdit de modifier la conf et/ou d'installer des trucs.
Je tiens à signaler que ce raccourci ne remplace que la première occurence de la chaîne dans la commande précédente. Ainsi :
tseeker@cthugha:~$ echo toto toto
toto toto
tseeker@cthugha:~$ ^toto^titi
echo titi toto
titi toto
J'ai également essayé ^toto^titi^g mais l'effet n'est pas celui que j'espérais : en effet, cette forme permet uniquement de concaténer une chaîne à la commande (donc cela rajoute un 'g' à la fin, en l'occurence...)
Une autre fonctionnalité très sympa de bash (que j'utilise tout le temps): la possibilité de "substituer" tous les paramètres de la commande précédente par deux petits caractères : !*
Par exemple :
$ joe monfichiertrès_long.avec-des-numéros.2-65.36.xhtml monautrefichier.css etuneautrepage.xhtml
$ galeon !*
Grâce à cette option, Galeon chargera comme un grand les trois fichiers passés en paramètres à joe dans la commande précédente. C'est quand même bien plus rapide, non?
# Intéressant mais...
Posté par calo . Évalué à 1.
[^] # Re: Intéressant mais...
Posté par Sebastien MICHEL (site web personnel) . Évalué à 1.
c'est comme le !une_lettre pour rappeler la derniere commande commencant par $une_lettre...
[^] # Re: Intéressant mais...
Posté par »-(¯`v´¯)-» . Évalué à 1.
aye ca peut faire tres mal ca !
[^] # Re: Intéressant mais...
Posté par Anonyme . Évalué à 1.
!r
heu
oh zut !
[^] # Re: Intéressant mais...
Posté par zipit74 . Évalué à 1.
!r:p
Le :p permet de rappeler la commande sans l'exécuter (elle est juste affichée) et de la placer en dernière position dans l'history. Elle est donc rappelable et modifiable en appuyant naturellement sur la touche flèche vers le haut.
Dans le cas d'une recherche dans l'history en utilisant !? il faut placer un ? final avant le :p, soit:
!?la_chaine?:p
Et pour remplacer un bout de la chaine en même temps (exemple: remplacement de rm par ls, !rm:gs/rm/ls ):
!r:p:gs/rm/ls
Bon, je suis d'accord, ca fait assez old school comme méthode mais c'est tellement bon parfois de s'amuser avec ces vieilles choses la.
[^] # Re: Intéressant mais...
Posté par Yann Hirou . Évalué à 1.
et pour !une_lettre, mieux vaut taper !plusieurs_lettres, sinon attention aux dégâts ;-) (ceci dit, ya a pas plus rapide pour remonter dans l'historique... mais mieux vaut taper la commande complète, un !ssh vaut mieux qu'un !s, surtout s'il y a un shutdown qui traine ;))
[^] # Re: Intéressant mais...
Posté par Tof . Évalué à 1.
[^] # Et CTRL-r ?
Posté par Antoine Büsch . Évalué à 1.
En gros on tape ctrl-r, puis le debut de la commande qu'on veut retrouver, et au fur et a mesure qu'on tape, ca affiche la derniere commande qui matche. Et des qu'on a trouve, hop, Entree et c'est bon.
C'est super rapide et ca evite les erreurs avec !commande. J'utilise ca tout le temps...
[^] # Re: Et CTRL-r ?
Posté par Benjamin . Évalué à 1.
[^] # Re: Et CTRL-s ?
Posté par dams (site web personnel) . Évalué à 1.
et sinon la plupart des raccourcis emacs fonctionnent dans zsh : ctrl-fleches, ctrl-e, ctrl-a, ctrl-d, alt-d, ...
[^] # Re: Et CTRL-s ?
Posté par Anonyme . Évalué à 1.
[^] # Re: Et CTRL-s ?
Posté par Bapt (site web personnel) . Évalué à 1.
[^] # Re: Et CTRL-s ?
Posté par marvin . Évalué à 1.
[^] # Re: Et CTRL-s?
Posté par henri lelong . Évalué à 1.
CTRL-q l'est sur START (resume du defilement).
Comment donc utiliser en pratique crtl-s de la readline sous bash???
Sinon CTRL-r est l'outil d'historique qui me semble le plus pratique.
Merci.
[^] # Re: Et CTRL-s?
Posté par Sebastien MICHEL (site web personnel) . Évalué à 1.
Pour cela il suffit de rajouter dans le .bashrc:
stty -ixon
[^] # Re: Et CTRL-r ?
Posté par Jérôme F. . Évalué à 1.
[^] # Re: Et CTRL-r ?
Posté par tripa . Évalué à 1.
[^] # Re: Intéressant mais...
Posté par Anonyme . Évalué à 1.
[^] # Re: Intéressant mais...
Posté par wismerhill . Évalué à 1.
[^] # Re: Intéressant mais...
Posté par Pierre Tramo . Évalué à 1.
Je parle même pas des mchines de prod qui n'ont pas d'historiques et sur lesquelles il est totalement interdit de modifier la conf et/ou d'installer des trucs.
[^] # Re: Intéressant mais...
Posté par Ramso . Évalué à 1.
$ cvs add fichier1 fichier2 fichier3 ... fichiern
bla bla added
$^add^commit
bla bla commited
depuis que je l'utilise, je ne peux plus m'en passer [tm]
# Attention néanmoins ...
Posté par Emmanuel BENOIT . Évalué à 1.
tseeker@cthugha:~$ echo toto toto
toto toto
tseeker@cthugha:~$ ^toto^titi
echo titi toto
titi toto
J'ai également essayé ^toto^titi^g mais l'effet n'est pas celui que j'espérais : en effet, cette forme permet uniquement de concaténer une chaîne à la commande (donc cela rajoute un 'g' à la fin, en l'occurence...)
# Re: c'est cool ^-^
Posté par harbort . Évalué à 2.
!!:s/toto/titi
permet de faire la même chose mais aussi de le faire mais en plus on peut le placer dans du ligne de commande !
Ex :
$ cp chelmin_complexe/toto titi
$ echo !!s:/titi/$1
cp chelmin_complexe/toto $1
Et il en existe d'autres :
$ ls -l toto.eps
$ ls *!!:e
toto.eps
titi.eps
yop.eps
.
.
Pour le reste ... man <cotre_shell_préféré>
# Re: c'est cool ^-^
Posté par Quzqo . Évalué à 1.
# Re: c'est cool ^-^
Posté par yosch . Évalué à 2.
Par exemple :
$ joe monfichiertrès_long.avec-des-numéros.2-65.36.xhtml monautrefichier.css etuneautrepage.xhtml
$ galeon !*
Grâce à cette option, Galeon chargera comme un grand les trois fichiers passés en paramètres à joe dans la commande précédente. C'est quand même bien plus rapide, non?
[^] # Re: c'est cool ^-^
Posté par dams (site web personnel) . Évalué à 1.
[^] # Re: c'est cool ^-^
Posté par B. franck . Évalué à 1.
pour rattraper le dernier paramètre de la dernière commande sous bash j'utilise* _
*(devrais-je dire "j'utilisais?")
[^] # Re: c'est cool ^-^
Posté par B. franck . Évalué à 1.
pour rattraper le dernier paramètre de la dernière commande sous bash j'utilisais la séquence ESC_
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.