54 votes

Recherche et remplacement du curseur dans le shell Bash

Si j'ai entré la commande suivante dans Bash:

echo foo

Je peux changer foo bar en tapant:

^foo^bar

Qui résultats dans la suite de la commande en cours d'exécution:

echo bar

Maintenant, si j'entre:

echo foo foo

Est-il un moyen de modifier les deux instances de foo bar juste en utilisant le signe (^) de l'opérateur?

En outre, il y a des pages de manuel pour shell opérateurs comme ^? man ^ résultats dans "Aucune entrée de manuel pour ^".

67voto

Adam Rosenfield Points 176408

Cette caractéristique particulière est appelée substitution rapide ; sa documentation se trouve dans la section Event Designators du Bash Manual. Vous ne pouvez pas faire ce que vous voulez avec une substitution rapide; vous devrez recourir à quelque chose d'un peu plus verbeux:

 !!:gs/foo/bar/
 

35voto

R Samuel Klatchko Points 44549

Vous ne savez pas trop comment le faire avec l'accent circonflexe de substitution, mais voici comment vous le faites avec l'histoire:

!!:gs/foo/bar/

Permettez-moi de briser vers le bas:

!! - les rediffusions de la dernière commande. Vous pouvez également utiliser !-2 pour exécuter les deux commandes il y a, !echo à exécuter la dernière commande qui commence par echo

:gs dit de faire global (tous les cas) de recherche/remplacement. Si tu voulais juste faire remplacer le premier exemple, vous pouvez utiliser ':s'

Enfin, /foo/bar/ dit de remplacer foo par bar

24voto

FlatEarther Points 151

Essayer:

 ^foo^bar^:&
 

Comme vous le savez, ^foo^bar^ effectue une seule substitution et le modificateur :& répète.

5voto

La substitution de signe d'insertion et d'autres raccourcis similaires se trouvent dans la sous-section Designateurs d'événements de la section EXPANSION DE L' HISTORIQUE de la page de manuel bash(1) .

0voto

user2571881 Points 1787
^word^  ........... erase word
^word^^ ........... delete everything until the end of the line

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X