Нажатие на кнопку вверх утомительно, и я могу пропустить команду, которую искал. Поэтому, когда я набираю history
на терминале, я получаю все команды, которые я вводил ранее, с индексом числа. Могу ли я просто позвонить по номеру, связанному с командой?
!1234
Другие полезные вещи:
!!
Если вы хотите выполнить последнюю команду ls
, которую вы выполняли, выполните:
Если вы только что запустили ls /some/long/path
и хотите cd
к нему, выполните:
cd !$
Для получения дополнительной информации:
Используйте комбинацию клавиш Ctrl
- r
, вы сможете использовать ключевое слово для поиска в истории Bash.
Краткое руководство по привязке ключей bash: http://ss64.com/bash/syntax-keyboard.html
Команда history
покажет все команды и связанные с ними номера. Если вы хотите просто выполнить быструю проверку перед выполнением командной строки # 135, вы можете набрать:
echo !135
Это покажет вам, что будет выполняться.
Если вы нашли номер истории команды и хотите выполнить ее снова, введите !
, а затем номер, например, !1234
и нажмите Enter kbd>. Это часть истории расширения ; Вы можете прикрепить на него модификаторы .
Если вы хотите отредактировать команду перед ее запуском, fc 1234
вызывает внешний редактор.
Но , как уже упоминал Терри Ванг , обычно есть более быстрые способы поиска команды в истории, чем определение ее номера в истории, включая Ctrl kbd> + R kbd > чтобы вызвать инкрементальный поиск (нажмите Enter kbd>, когда вы нашли команду, которую хотите выполнить), или fc PREFIX
, чтобы выполнить предыдущую команду, начиная с PREFIX
.
История 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
. При установленном histverify
вызов, подобный !-3
, только записывает замену из вашей истории в вашу командную строку, но не выполняет ее напрямую. Вы должны, так сказать, нажать решающий ENTER
самостоятельно - или воздержаться от него, если вы решите.