Есть много способов снять шкуру с этой кошки!
Чтобы заменить определенную строку, ^old^new^extraбудет принимать вашу предыдущую команду, замените oldс new, и присоединять extra. Вы можете остановиться как угодно; Например ^old, заменит oldпустую строку и добавит пустую строку (по сути, удаляя oldи больше ничего не делая).
1. ^diff^checkout
2. ^cat^rm
Особенно полезный вариант этого:
for i in `seq 1 10`; do echo something complicated; done
# inspect the output to see if it looks right
^echo
Чтобы заменить определенное слово, вы можете использовать !m:n-pдля ссылки на слова nчерез pкоманду m(используйте отрицательные числа для обратного отсчета от текущей команды). Вы можете опустить -pчасть, чтобы ссылаться на одно слово, и опустить :m-pчасть, чтобы сослаться на всю команду. Специальные формы !!для !-1, !$для последнего слова предыдущей команды, и !*для аргументов (все , кроме слов 0) из предыдущей команды довольно удобно.
1. !!:0 checkout !!:2-
2. rm !*
Я часто использую оба из них; zsh особенно хорош здесь, поскольку нажатие на вкладку раскроет загадочные вещи, чтобы убедиться, что вы правильно поняли.
Есть также так много способов сделать это с редактированием строки. Читайте о сочетаниях клавиш вашей оболочки.