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