Існує багато способів зняти шкіру з цією кішкою!
Щоб замінити певну рядок, ^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 тут особливо приємно, оскільки вкладка при натисканні розширить криптовалюту, щоб переконатися, що ви правильно це зробили.
Існує також так багато способів зробити це за допомогою редагування рядків. Прочитайте ключові вкладки оболонки.