История bash может сделать много полезных вещей, и поиск, Strg-rкоторый упомянул Терри Ван, является одним из них. Но также возможно сделать именно то, что вы просили.
Вы можете повторно выполнить предыдущую команду с помощью !!. При этом вы также можете редактировать предыдущую команду. Если, например, вы забыли получить права root для команды
apt-get install a-long-list-of-packages
Вам не нужно снова все это перепечатывать. Вместо этого просто позвоните
sudo !!
Если вы хотите повторно выполнить команду в определенной позиции из вашей истории, вы также можете использовать !, например,
!3
чтобы повторно выполнить команду в позиции 3. Имейте в виду, что это считается сверху. Так что, если вы храните 500 команд в своей истории, !1будет "500 команд назад". Вы также можете использовать отрицательные числа. Например
!-2
будет повторно выполнить вторую последнюю команду.
Вы также можете повторно выполнить последнюю команду, которая началась с такой строки, как
!apt-
который будет делать последнюю строку, начинающуюся с «apt-». Если вы хотите, чтобы последняя команда, где строка появилась в любом месте строки, вы можете использовать что-то вроде
!?pt-ge
Есть и другие интересные вещи, которые может сделать история bash. Просто чтобы составить представление о широком спектре возможностей, вы можете специально получить доступ к параметру команды из истории. Так
!-5:3:p
вывел бы третий параметр к пятому из последней команды.
РЕДАКТИРОВАТЬ: Что касается комментария Руди ниже, со стандартными настройками это расширение истории bash действительно выполняется напрямую. Это, вероятно , лучше всего можно описать следующим образом: Вызов , как !-3будет заменена оболочкой с третьей последней командой из истории и затем ваш вход (с заменой) выполняется. Таким образом, если вы печатаете !-3и нажимаете, ENTERи ваша третья последняя команда была ls ~такой же, она фактически такая же, как если бы вы набрали ls ~снова и нажали ENTER«самостоятельно».
Если вы не хотите этого, вы можете установить опцию оболочки histverify. Для установки и отмены параметров оболочки вы можете прочитать shoptкоманду. При использовании histverifyset вызов like !-3только записывает замену из вашей истории в командную строку, но не выполняет ее напрямую. Вы должны, так сказать, нажать на решающее значение ENTERсамостоятельно - или воздерживаться от него, если вы решите.