• # Intéressant mais...

    Posté par  . Évalué à 1.

    Je me demande si j'aurai l'occasion d'utiliser ça plus de 3 fois dans ma vie ;o)
    • [^] # Re: Intéressant mais...

      Posté par  (site web personnel) . Évalué à 1.

      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...
      • [^] # Re: Intéressant mais...

        Posté par  . Évalué à 1.

        >c'est comme le !une_lettre pour rappeler la derniere commande commencant par $une_lettre...

        aye ca peut faire tres mal ca !
        • [^] # Re: Intéressant mais...

          Posté par  . Évalué à 1.

          Clair, c'est une fausse bonne astuce.

          !r


          heu
          oh zut !
          • [^] # Re: Intéressant mais...

            Posté par  . Évalué à 1.

            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.
      • [^] # Re: Intéressant mais...

        Posté par  . Évalué à 1.

        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 ;))
        • [^] # Re: Intéressant mais...

          Posté par  . Évalué à 1.

          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 !
          • [^] # Et CTRL-r ?

            Posté par  . Évalué à 1.

            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...
            • [^] # Re: Et CTRL-r ?

              Posté par  . Évalué à 1.

              je précise qu'on peut ré-appuyer ctrl-r plusieurs fois si l'historique contient d'autres entrées qui correspondent
              • [^] # Re: Et CTRL-s ?

                Posté par  (site web personnel) . Évalué à 1.

                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, ...
                • [^] # Re: Et CTRL-s ?

                  Posté par  . Évalué à 1.

                  Je ne suis pas certains que ce sont des raccourcis "emacs" puisqu'il fonctionnent dans toutes les applis que je connais, ceux que tu as donné.
                  • [^] # Re: Et CTRL-s ?

                    Posté par  (site web personnel) . Évalué à 1.

                    c surtout que dans zsh y a l'option bindkey -e emacs ou vim qui permet de gérer un mode des raccourci emacs ou vim ou autres dans ton shell.
                    • [^] # Re: Et CTRL-s ?

                      Posté par  . Évalué à 1.

                      C'est également possible avec bash: "set editing-mode emacs/vi", dans inputrc.
                • [^] # Re: Et CTRL-s?

                  Posté par  . Évalué à 1.

                  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.

                  Merci.
              • [^] # Re: Et CTRL-r ?

                Posté par  . Évalué à 1.

                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.
            • [^] # Re: Et CTRL-r ?

              Posté par  . Évalué à 1.

              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.
          • [^] # Re: Intéressant mais...

            Posté par  . Évalué à 1.

            Franchement, depuis qu'il y'a des completions partout, l'interet de l'historique...
            • [^] # Re: Intéressant mais...

              Posté par  . Évalué à 1.

              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.
    • [^] # Re: Intéressant mais...

      Posté par  . Évalué à 1.

      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.
    • [^] # Re: Intéressant mais...

      Posté par  . Évalué à 1.

      y'a pourtant un cas répandu ou presque :

      $ 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  . Évalué à 1.

    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...)
  • # Re: c'est cool ^-^

    Posté par  . Évalué à 2.

    Mieux :

    !!: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  . Évalué à 1.

    Ouaip... Autant que la recherche de commande dans l'historique :
    set -o vi <ESC>/<mon>
    et...
    <ESC>j pour suivante <ESC>k pour précédente
    s'il y a plusieurs commandes répondant au critère dans l'historique heureusement qu'avant bash, il y avait vi et ksh...
  • # Re: c'est cool ^-^

    Posté par  . Évalué à 2.

    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?
    • [^] # Re: c'est cool ^-^

      Posté par  (site web personnel) . Évalué à 1.

      ah c'est toi la troisième personne qui utilise joe ? :)
    • [^] # Re: c'est cool ^-^

      Posté par  . Évalué à 1.

      c'est excellent oui tu veux dire !
      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  . Évalué à 1.

        je me corrige:

        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.