Forum Programmation.shell [BASH] Relancer la commande précédente avec quelques modifications

Posté par  (Mastodon) . Licence CC By‑SA.
Étiquettes :
1
1
déc.
2021

Salut !

Il me semblait qu'il existait un raccourci en Bash (peut-être un autre shell alors ?) qui permet de relancer la commande précédente en gardant les paramètres par exemple.

Style :

mkdir -p /tmp/demo/folder/tmp_folder/oui_il_y_en_a_encore_un/ok_j_arrete_la/
!! ^mkdir^cd

La deuxième ligne est ce que je cherche, un truc qui dirait "refait la commande précédente, mais change mkdir par cd.

Je cherche partout, impossible de mettre la main sur cette syntaxe. Je l'ai rêvée ?

  • # en trois lignes ?

    Posté par  . Évalué à -1.

    TMPDIR=/tmp/demo/folder/tmp_folder/oui_il_y_en_a_encore_un/ok_j_arrete_la/
    mkdir -p $TMPDIR
    cd $TMPDIR
  • # Avec la commande « history » ?

    Posté par  (Mastodon) . Évalué à 7.

    Extrait de man history :

    ^string1^string2^
         Quick substitution.  Repeat the last command, replacing string1 with string2.  Equivalent to ``!!:s/string1/string2/'' (see Modifiers below).

    C'est là que tu avais vu cela ?

  • # tu n'as pas révé

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

    ^mkdir^cd # remplace mkdir par cd dans la précédente commande
    !!:gs/mkdir/cd/ # pareil, mais remplace toutes les occurrences

    mais sinon dans ton cas, je te recommande le magique !$ : le dernier argument de la précédente ligne de commande.

    mkdir -p /tmp/demo/folder/tmp_folder/oui_il_y_en_a_encore_un/ok_j_arrete_la/
    cd !$

    Pour finir, je fais très très peu de cd et travaille presque toujours avec des chemins absolus. Ça me permet d'avoir un historique de qualitay, que j'exploite beaucoup.

    mes 2¢

    • [^] # Re: tu n'as pas révé

      Posté par  (Mastodon) . Évalué à 3.

      ouf je n'étais pas donc pas fou.

      merci bcp, c'était exactement ça que je cherchais.

      En théorie, la théorie et la pratique c'est pareil. En pratique c'est pas vrai.

    • [^] # Re: tu n'as pas révé

      Posté par  (site web personnel, Mastodon) . Évalué à 2.

      # la première occurrence
      :s/mkdir/cd
      # toutes les occurences
      :gs/mkdir/cd
      

      Encore la preuve, comme je dis souvent à mes élèves, que connaître Ed et Vi est incontournables car on retrouve leurs influences quasiment partout…
      Question pour ma curiosité : Zsh et Ksh le font aussi ?

      “It is seldom that liberty of any kind is lost all at once.” ― David Hume

  • # encore un autre !

    Posté par  . Évalué à 2. Dernière modification le 05 décembre 2021 à 19:11.

    Merci pour cette entrée, j’ai découvert d’autres possibilités avec la commande history et !! grâce à toi :3

    Sinon c’est pas la question, mais pour faire ce genre de trucs je me suis habitué à :
    C-P : récupérer la ligne précédente
    C-A : sauter au début de la ligne
    Esc-D (ou M-D) : supprimer le premier mot vers la droite

    donc concrètement je récupère la ligne mkdir -p truc, je vais au début de la ligne, je supprime deux fois le mot vers la droite (pour enlever le -p aussi) puis j’écris cd.

    C’est pas du tout la réponse à la question que tu posais (je ne connaissais pas!), juste une manière de plus d’arriver au même résultat ^

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.