Я только что узнал о встроенном fc в bash. Я хочу использовать его для редактирования и выполнения двух предыдущих команд, в том числе самой последней.

Я могу редактировать и выполнять две команды до, но не включая самую последнюю команду с fc -2 0 . Это то, что я хочу, кроме смещения на единицу, чтобы включить самую последнюю команду.

Одно работоспособное, но раздражающее решение - изучить вывод history (или fc -l), найти абсолютные номера команд и задать диапазон команд в абсолютных терминах. Например, если fc -l -2 выдает следующее:

502  echo hello
503  echo goodbye

… Тогда я мог бы сказать, fc 502 503 . Это то, что я хочу, за исключением того, что я не хочу дополнительного шага изучения истории вывода. (Я знаю, я придирчив.)

Есть ли способ сделать это, который не включает (1) ручное изучение истории или (2) одноразовую команду, чтобы выбить интересующие команды из самого последнего места?

Я использую GNU bash version 3.2.57 на macOS, чего бы это ни стоило.

2 ответа2

1

Можно было бы ожидать, что fc -2 -1 будет работать, но, похоже, существует путаница между опциями и позиционными параметрами, которые начинаются с - . Однако использование стандарта -- для отделения параметров от параметров, по-видимому, предлагает решение:

fc -- -2 -1

Обратите внимание, что версии bash до 4.3. были другие проблемы с командой fc , включая fff. здесь , где выбор строки истории может быть неправильным.

0

Это берет идентификатор последних 2 команд и запускает их снова

fc -l -2 | cut -f1 | fc -s

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .