Как я могу повторно вызвать пронумерованную команду истории для редактирования?

vi $(locate php.ini)

Примечание: это будет иметь проблемы, если Ваши пути к файлам будут иметь пробелы, но это функционально эквивалентно Вашей команде.
Эта следующая версия правильно обработает пробелы, но немного более сложна (новые строки в именах файлов все еще повредят ее хотя),

(IFS=$'\n'; vi $(locate php.ini))


Объяснение:

То, что происходит, - то, что программы наследовали свои дескрипторы файлов от процесса, который породил их. xargs имеет его STDIN, подключенный к STDOUT locate, так vi не имеет никакой подсказки что исходный STDIN действительно в.

17
08.12.2013, 20:44
5 ответов
[1128704]С тех пор я принял другой подход - используя [1129161]![номер строки]:p

Это печатает утверждение и добавляет его в историю, но на самом деле не выполняет его. Затем я делаю стрелку вверх и изменяю ее по желанию.

Я комбинирую это с моим [1129163]hg[1129164] псевдонимом ([1129165]псевдоним hg='history | grep '[1129166]), чтобы вспомнить команды истории, основанные на некотором тексте.

crontab -e 

Пример:

Я использую это в дополнение к [1129167]ctrl[1129168]-[1129169]r[1129170] (поиск по обратной истории), потому что иногда я предпочитаю видеть немедленный список всех возможностей данной строки, а не просто вывод на 1 строке, который [1129171]ctrl[1129172]-[1129173]r[1129174] показывает. После [1129175]hg [string][1129176] я бы сделал [1129177]![номер строки] search_string[1129178], как в [1129179]hg checkout[1129180], показанном выше.[1128713].

12
27.01.2020, 19:47

Если Вы устанавливаете histverify опция, например.

shopt -s histverify

затем все замены истории подняты для редактирования вместо того, чтобы быть сразу выполненными. Необходимо было бы затем нажать Enter дважды вместо однажды после ввода !755 выполнить команду.

Можно продвинуть произвольный текст на список предыстории с history -s. Объедините это с fc -nl перечислять определенную запись истории.

history -s "$(fc -nl 755 755)"

затем нажмите Up для вспоминания то, что является теперь последней записью истории.

8
27.01.2020, 19:47

Можно искать назад через историю с помощью Ctrl+R. Если запись истории является долгим использованием мышь (не клавиатура, которая останавливается, поиск), чтобы скопировать и вставить часть команды для редактирования въезжают задним ходом.

Как @rijsg прокомментировал, можно затем использовать (левые и правые) стрелки или эквивалентные ключи, чтобы остановить поиск и начать редактировать.

6
27.01.2020, 19:47
  • 1
    Любая клавиша со стрелкой или эквивалентная команда (Ctrl-a например), остановит поиск, оставляя текущую запись истории в командной строке, не выполняя его. Это может или не может быть достаточно, в зависимости от того, что хочет @Michael. –  njsg 08.12.2013, 21:03

Если вы сконфигурируете свой файл .bashrc для использования редактора vi в командной строке, это значительно упростит редактирование командной строки.

1-й, как только "set -o vi" включен, вы можете просто нажать " k" , затем продолжать нажимать " k "для перехода вверх по файлу истории, если вы проходите мимо записи, используйте " j "для перехода вниз .

ПРИМЕЧАНИЕ: при использовании vi существует два режима: команда и редактирование. для входа в командный режим нажмите ESCAPE KEY ONCE, затем a, A, i, I и т. Д., Чтобы вставлять.

Простая панель управления курсором в vi: left = h, down = j, up = k, right = l http://linuxmeister.net/vi/vi-Summary.jpg

I ' Мы добавили все записи, необходимые для этой работы, по адресу: http://linuxmeister.net/Notes/bashrc-simple.html

Итак, основываясь на очень полезной информации выше, {{ 1}} Я смог использовать «историю» и ВЫЗЫВАТЬ строку из «истории» БЕЗ выполнения ее. (СПАСИБО ЗА ЗАПИСЬ!)

если в списке есть магазин и histverify отключен a! будет ВЫПОЛНЯЕТСЯ немедленно,

если вы добавили в свой .bashrc или набрали: shopt -s histverify , затем a! позволяет редактировать, например:

history
    1  more .bashrc
    2  history
    3  shopt
    4  . ./.bashrc
    5  shopt | grep hist
    6  history
    7  alias
    8  history
    9  shopt
   10  history

->! 5

когда я нажимаю! 5, появляется следующая команда, но НЕ выполняет

###, если histverify включен.

shopt | grep hist
cmdhist         on
histappend      on
histreedit      off
histverify      on
lithist         off

Помните, что Линус и Ричард создали инструменты Linux и GNU , чтобы использовать преимущества UNIX. Редактор vi (созданный Биллом Джоем) - один из лучших инструментов для освоения, поскольку он есть в КАЖДОМ дистрибутиве UNIX и Linux.

Все остальные редакторы командной строки должны быть загружены, и требуется дополнительное программное обеспечение. Использование графического интерфейса в Linux (кроме Firefox, Thunderbird и OpenOffice) похоже на буксировку вашего Diesel 4x4 с VW Beetle 1968 года ... это будет работать, но в этом нет никакого смысла.

Помните, что Керниган сказал о графическом интерфейсе пользователя: «То, что вы видите, - это все, что вы получаете».

2
27.01.2020, 19:47
echo !number

, затем нажмите стрелку -, удалите слово echoи отредактируйте остальное; нажмите Enter, чтобы выполнить.

-1
27.01.2020, 19:47

Теги

Похожие вопросы