Я знаю о функции bash!текст, который запускает последнюю команду, начинающуюся с "текст". Но, кажется, не работает, когда "текст" содержит пространство. Иногда полезно искать что-то, содержащее пробелы.
например:
history | grep ping
514 ping 192.168.100.2
515 ping 192.168.100.3
516 ping 192.168.100.4
517 ping google.com
518 ping 192.168.100.5
519 ping 192.168.100.6
520 ping 192.168.100.7
Я хочу назвать строку "ping google.com", используя! особенность. Я попробовал кое-что, но они потерпели неудачу:
это стандартное поведение, он запускает последнюю команду ping
/root# !ping
ping 192.168.100.7
Простая строка с пробелом после! не работает
/root# !ping google
ping 192.168.100.7 google
Как я знаю, кавычки говорят bash интерпретировать строку с пробелом как одну строку вместо двух отдельных строк. Но здесь это не работает, как ожидалось.
/root# !"ping google"
bash: !"ping: event not found
/root# !'ping google'
bash: !'ping: event not found
/root# "!ping google"
"ping 192.168.100.7 google google"
/root# '!ping google'
bash: !ping google: command not found
/root# !\"ping google\"
bash: !\"ping: event not found
/root# !(ping google)
bash: !: event not found
Это вызывает команду, но она вызовет последнюю команду, содержащую строку. Я хочу только команды, начиная с "пинг"
/root# !?google
ping google.com
Можно ли делать то, что я хочу?