Я не могу вспомнить уловку, где я мог получить последнюю команду без ее запуска:
скажем, я хочу иметь возможность получить доступ к команде! 1255 при нажатии клавиши со стрелкой вверх и изменить команду. Так в чем же хитрость, чтобы вызвать команду, сделать так, чтобы она отображалась в командной строке, но не выполнялась и впоследствии была доступна через клавишу со стрелкой вверх?
Я попытался поставить эхо, но затем перед командой у меня есть эхо, я не помню, как это сделать правильно.
Ответы:
Сделаю это
!
является вызовом истории, печатается1255
номер строки,:p
но не выполняетсяЗатем вы можете использовать стрелку вверх, чтобы вернуть предыдущую (неисполненную) команду, и вы можете изменить ее, как вам нужно.
Я часто комбинирую это с
hg
(«History Grep») - моим любимым псевдонимом.Этот поиск текста в недавней истории, независимо от регистра, используется следующим образом:
Когда я хочу найти последние команды vi для редактирования определенного файла, а затем хочу повторно использовать одну из них для редактирования того же файла, но с другим расширением файла.
Я также определяю
hga
(«История Grep All») для поиска по всей моей истории:но я не использую его много, потому что моя история (намеренно) очень большая, и я получаю слишком много выходных данных, которые позже влияют на прокрутку страниц в моем терминале.
источник
hg
это также CLI Mercurial .Нажатие Ctrl+ R(которое является привязкой ключа обратного инкрементального поиска в emacs, когда @gnp указывал в комментариях) в терминале позволяет вам искать в истории конкретную команду. Команда будет показана и может быть отредактирована перед выполнением. Вы увидите что-то вроде этого:
Источник
источник
fc
команда делает то , что вы хотитеfc -l <number>
перечислит историю команд вокруг этого числаfc <number>
откроет эту запись командной строкиvim
(или, как я полагаю, ваш редактор по умолчанию), так что вы можете отредактировать ее, и:wq
она будет доступна вам со стрелкой вверх.источник
В bash
Ctl+alt+e
выполняется расширение оболочки, поэтому при вводе!1255
и нажатии этой комбинации текущая строка заменяется содержимым записи в истории. 1255источник
man bash
какshell-expand-line
. Может быть, есть набор ярлыков для gnome-терминала.Вы хотите использовать команду fc при указании списка вместо execute (-l)
источник