Нажатие на кнопку вверх утомительно, и я могу пропустить команду, которую я искал. Поэтому, когда я печатаю history
на терминале, мне выдаются все команды, которые я вводил ранее, с указанием числа. Можно ли просто позвонить по номеру, связанному с командой?
20
Ответы:
История bash может сделать много полезных вещей, и поиск,
Strg-r
который упомянул Терри Ван, является одним из них. Но также возможно сделать именно то, что вы просили.Вы можете повторно выполнить предыдущую команду с помощью
!!
. При этом вы также можете редактировать предыдущую команду. Если, например, вы забыли получить права root для командыВам не нужно снова все это перепечатывать. Вместо этого просто позвоните
Если вы хотите повторно выполнить команду в определенной позиции из вашей истории, вы также можете использовать
!
, например,чтобы повторно выполнить команду в позиции 3. Имейте в виду, что это считается сверху. Так что, если вы храните 500 команд в своей истории,
!1
будет "500 команд назад". Вы также можете использовать отрицательные числа. Напримербудет повторно выполнить вторую последнюю команду.
Вы также можете повторно выполнить последнюю команду, которая началась с такой строки, как
который будет делать последнюю строку, начинающуюся с «apt-». Если вы хотите, чтобы последняя команда, где строка появилась в любом месте строки, вы можете использовать что-то вроде
Есть и другие интересные вещи, которые может сделать история bash. Просто чтобы составить представление о широком спектре возможностей, вы можете специально получить доступ к параметру команды из истории. Так
вывел бы третий параметр к пятому из последней команды.
РЕДАКТИРОВАТЬ: Что касается комментария Руди ниже, со стандартными настройками это расширение истории bash действительно выполняется напрямую. Это, вероятно , лучше всего можно описать следующим образом: Вызов , как
!-3
будет заменена оболочкой с третьей последней командой из истории и затем ваш вход (с заменой) выполняется. Таким образом, если вы печатаете!-3
и нажимаете,ENTER
и ваша третья последняя команда былаls ~
такой же, она фактически такая же, как если бы вы набралиls ~
снова и нажалиENTER
«самостоятельно».Если вы не хотите этого, вы можете установить опцию оболочки
histverify
. Для установки и отмены параметров оболочки вы можете прочитатьshopt
команду. При использованииhistverify
set вызов like!-3
только записывает замену из вашей истории в командную строку, но не выполняет ее напрямую. Вы должны, так сказать, нажать на решающее значениеENTER
самостоятельно - или воздерживаться от него, если вы решите.источник
!
это чертовски опасно ... Я хотел бы знать, что!-4
именно, прежде чем запустить его. Или это сначала показывает? Классное резюме!!-238
. Не должно быть слишком сложно запомнить вашу вторую, третью, последнюю, может быть, последнюю команду;) Как и в случае с Linux (и вообще с вычислениями в целом), ожидается, что вы знаете, что делаете. И если вам действительно нужна дополнительная сетка безопасности, ее уже нетshopt
;)Да, есть. Если, например, вы хотите выполнить команду с номером 1234, выполните:
!1234
Другие полезные вещи:
Если вы хотите выполнить последнюю команду, выполните:
Если вы хотите выполнить последнюю
ls
команду, выполните:Если вы только что побежали
ls /some/long/path
, и вы хотите,cd
чтобы это сделать, выполните:Чтобы получить больше информации:
источник
Используйте комбинацию клавиш
Ctrl
-r
, вы сможете использовать ключевое слово для поиска истории Bash.Краткое руководство по привязке ключей bash: http://ss64.com/bash/syntax-keyboard.html
источник
Если вы нашли номер истории команды и хотите выполнить ее снова, введите,
!
а затем введите номер, например,!1234
и нажмите Enter. Это часть истории расширения ; Вы можете прикрепить модификаторы на него.Если вы хотите отредактировать команду перед ее запуском,
fc 1234
вызывает внешний редактор.Но, как уже упоминал Терри Ванг , обычно есть более быстрые способы поиска команды в истории, чем определение ее номера в истории, в том числе Ctrl+, Rчтобы вызвать инкрементальный поиск (нажмите, Enterкогда вы нашли команду, которую хотите выполнить), или
fc PREFIX
выполнить предыдущую команда, начинающаяся сPREFIX
.источник
Команда
history
покажет все команды и связанные с ними номера. Если вы хотите просто выполнить быструю проверку перед выполнением командной строки # 135, вы можете набрать:Это покажет вам, что будет выполнено.
источник