Делайте поиск и замену команд из истории терминала - PullRequest
5 голосов
/ 22 ноября 2011

Я хотел бы знать, как / если я могу повторно использовать команду из истории моего терминала, но в измененной версии. Вот пример:

$ filter_script file2 > output_file2
$ # ...
# now run the same command, but replace '2' with '4'
$ filter_script file4 > output_file4

Это очень простой пример, и, конечно, я могу просто получить доступ к команде из истории и вручную заменить два 2 s, но есть ли более элегантный способ?

Большое спасибо за ваше время!

1 Ответ

13 голосов
/ 22 ноября 2011

Если есть только один экземпляр того, что вы хотите заменить, bash(1) имеет простую функцию, впервые представленную в csh(1):

^old^new

заменит первый экземпляр old на new:

$ filter_script file2 > output_file2
$ ^2^4
filter_script file4 > output_file2

Если вы хотите заменить все экземпляры, для которых требуется больше набирать:

$ filter_script file2 > output_file2
$ !:gs/2/4/
filter_script file4 > output_file4

g указывает на global замену в командной строке. ! относится к строке из истории - которая может быть более конкретной, если вы хотите извлечь команду из более далекой истории, чем непосредственно предыдущая команда. См. bash(1) раздел Event Designators.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...