2014-02-14 2 views
1

Заголовок говорит все. Я знаю, что если я дал команду^^ заменить все предыдущие вхождения

dothis dothat 

Я могу напечатать

^do^dontdo 

, который даст мне

dontdothis dothat 

Я хочу, чтобы иметь возможность ввести что-то вроде

^do^dontdo^g 

, чтобы дать мне

dontdothis dontdothat 

Есть ли способ для этого? Или можно определить это как функцию для ссылки на синтаксис !!:gs/do/dontdo?

+1

Существует нет ''^синтаксис для глобальных, вам нужно использовать '!! : gs'. Вы не можете использовать аргументы с псевдонимом, я не могу найти способ заставить '!!' нормально работать в функции, и я уверен, что вы не можете использовать его (в этом случае) в скрипте, так что вы, вероятно, застряли с '!!: gs' или ужасающей историей/sed hack. – Kevin

+0

@Kevin: Я считаю, что ваш комментарий квалифицируется как ответ. – anubhava

+0

Вся документация находится здесь: http://www.gnu.org/software/bash/manual/bash.html#Using-History-Interactively –

ответ

0

Встроенный fc позволяет исправить команду в истории. Например, для достижения !! gs/do/dontdo/ с fc, типа fc -s do=dontdo

Раствор может быть:

r() { 
    (($# == 2)) || { echo "r needs two args" >&2 ; return 1 ;} 
    fc -s "$1"="$2" 
} 

Использование: r do dontdo

Смежные вопросы