Есть много способов снять шкуру с этой кошки!
Чтобы заменить определенную строку, ^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 особенно хорош здесь, так как нажатие на вкладку раскроет загадочные вещи, чтобы убедиться, что вы правильно поняли.
Есть также так много способов сделать это с редактированием строки. Читайте о сочетаниях клавиш вашей оболочки.