GNU/Linux >> Tutoriels Linux >  >> Linux

Comment modifier les lignes précédentes dans une commande à plusieurs lignes dans Bash ?

Cela, malheureusement, dépend de bash , pas au terminal. Vos options sont :

  1. Utilisez des points-virgules au lieu de nouvelles lignes, bien que même dans ce cas, vous ne puissiez pas remonter d'une ligne d'écran à la fois, mais devez utiliser des commandes de mouvement de caractère ou de mot. (Bizarrement, zsh vous permet au moins de vous déplacer dans une commande composée lors de la modification de l'historique, mais pas dans le courant commande.) Parfois fc (qui vous lance dans votre éditeur avec la commande précédente) est le moyen le plus simple de gérer les commandes composées.

  2. Si vous utilisez Bash, utilisez la combinaison de touches suivante :

    ctrl x e
    

    Cela ouvrira la commande sur laquelle vous travaillez à l'aide de votre éditeur de texte. Enregistrez le fichier et quittez. (J'ai trouvé la commande sur la présentation de Shell Hater.) Les utilisateurs de Zsh ont cette alternative.


La solution est de ne jamais saisir de commande tant que la multiligne n'est pas correcte, tapez simplement :Ctrl v Ctrl j lorsque vous voulez passer à la ligne suivante. Méta b revenir en arrière d'un mot.

crédit à la réponse de @rici


Curieusement, Ctrl+C est ce que vous recherchez.

quand vous êtes sur

$ echo "foo bar
> baz
>

appuyez simplement sur Ctrl+C (la ligne de commande modifiée sera suspendue) et appuyez sur Haut (antécédents). Votre invite sera :(notez l'absence de>)

$ echo "foo bar
baz

Vous pouvez maintenant vous déplacer avec Gauche Bien même à travers les sauts de ligne.

Il n'y a qu'une seule bizarrerie, vous devez être sur le dernier caractère pour ajouter une autre ligne, alors déplacez-vous pour modifier les lignes existantes (allez commencer par Ctrl+A ) et appuyez sur Entrée si cela suffit ou allez à la fin (Ctrl+E ) pour ajouter plus de lignes avec Entrée . Un autre inconvénient est que Ctrl+_ (annuler) ne restaure que les modifications depuis le dernier Ctrl+C


Linux
  1. Comment afficher des lignes spécifiques d'un fichier dans la ligne de commande Linux

  2. Comment remplacer une chaîne dans plusieurs fichiers en ligne de commande Linux

  3. Comment exécuter plusieurs commandes d'arrière-plan dans bash sur une seule ligne ?

  4. Comment concaténer plusieurs lignes de sortie sur une seule ligne ?

  5. Bash si sur une seule ligne

Comment utiliser la commande de lecture Bash

Comment lire un fichier ligne par ligne dans Bash

Comment afficher l'historique de Bash sans numéros de ligne

Comment commenter plusieurs lignes à la fois dans l'éditeur Vim

Comment supprimer des lignes d'un fichier à l'aide de la commande Sed

Comment supprimer plusieurs lignes dans Vim