Горячие клавиши
Чтобы просмотреть историю вашего bash, вы можете использовать несколько полезных сочетаний клавиш в bash. Нажмите эти ярлыки, и команды, которые вы ранее использовали, появятся в подсказке.
- Стрелка вверх или же Ctrl + P: Перейдите к предыдущей команде в своей истории. Несколько раз нажмите клавишу, чтобы пройти назад по командам, которые вы использовали.
- Стрелка вниз или же Ctrl + N: Перейдите к следующей команде в своей истории. Несколько раз нажмите клавишу, чтобы идти вперед по командам, которые вы использовали.
- Alt + R,: Отмените любые изменения в команде, которую вы вытащили из своей истории, если вы отредактировали ее в текущей строке.
У Bash также есть специальный режим «отзыва», который вы можете использовать для поиска команд, которые вы ранее запускали, а не прокрутки их по одному.
- Ctrl + R: Вспомните последнюю команду, соответствующую вашим персонажам. Нажмите этот ярлык и начните вводить текст, чтобы выполнить поиск истории bash для команды.
- Ctrl + O: Запустите команду, которую вы нашли с помощью Ctrl + R.
- Ctrl + G: Оставьте режим поиска в истории без выполнения команды.
Просмотр истории вашего баша
Вы можете распечатать всю историю bash на экране, выполнив одну команду:
history
Вы увидите список всех команд в истории вашего bash, а также число слева от каждого. Команда с рядом «1» - это самая старая команда в истории вашего bash, а команда с самым большим номером - самая последняя.
grep
команду для поиска вашей истории команд.
history | grep your_search
tail
чтобы просмотреть только небольшое количество последних команд, которые вы выполнили. Например, следующая команда покажет последние 5 записей в вашей истории.
history | tail -5
Запустить команды из вашей истории
Bash может быстро «развернуть» предыдущие команды или расширить их и изменить их. Эта функция известна как «расширение истории» и использует восклицательный знак, известный как «удар». Просто введите их в строке и нажмите «Ввод», чтобы запустить их, как если бы вы запускали любую другую команду.
Чтобы запустить определенную команду из вашей истории по ее номеру, используйте следующую команду:
!#
Например, допустим, вы хотели запустить 12-ю команду из истории bash. Это команда с «12» слева от нее, когда вы запускаете
history
команда. Вы должны ввести следующую команду.
!12
!!
Вы также можете обратиться к команде с определенным количеством строк. Например,
!-2
будет запускать вторую последнюю команду, которую вы запускали.
!!
означает то же самое, что и
!-1
!!
или любые другие выражения в этом разделе. Например, вы можете ввести следующую команду для повторного запуска последней команды, с которой вы проходили
sudo
предоставляя ему привилегии root. Это особенно полезно, если вы забыли добавить
sudo
перед запуском команды.
sudo !!
Или, например, вы можете повторно запустить предыдущую команду и передать ее вывод в grep для поиска некоторого текста.
!! | grep text
!text
Итак, если вы недавно запускали команду, которая начиналась с
ping
вы можете запустить следующую команду для ее поиска. Это будет искать назад через вашу историю, найти самую последнюю команду, которая начинается с"
pi
», И сразу запустите его:
!pi
Вы можете добавить
:p
к любому из вышеперечисленных расширений и bash выведет команду на терминал без ее запуска. Это полезно, если вы хотите подтвердить, что вы выбрали правильную команду перед ее запуском.
!12:p
!!:p
!text:p
Повторное использование аргументов из вашей истории
Bash также позволяет вам запускать новую команду, но использовать аргументы из предыдущих команд в вашей истории. Это может помочь вам быстро использовать длинные или сложные аргументы, не перепечатывая их.
command !$
Например, допустим, вы выполнили команду
touch /home/chris/some_long_file_name_you_dont_want_to_type_again
Теперь вы хотите запустить команду
nano /home/chris/some_long_file_name_you_dont_want_to_type_again
Вместо того, чтобы вводить все с нуля, вы можете запустить:
nano !$
!$
сделает bash автоматически заполнить последний аргумент из вашей предыдущей команды.
ping google.com -c 4
а затем запустить
ping !$
это просто расширится до"
ping 4
“.
Чтобы исправить эту ситуацию, вы можете использовать следующий трюк, чтобы развернуть первый аргумент в строке, а не последний:
command !^
Итак, если вы побежали
ping google.com -c 4
и затем побежал
ping !^
bash расширил бы это до"
ping google.com'
command !*
Итак, если вы побежали
ping !*
вместо этого bash автоматически заполнит все аргументы, которые вы использовали в предыдущей команде.
command !abc:#
Например, мы выполнили команду
sudo hostname ubuntu
ранее. Если мы запустим следующую команду, bash будет искать назад по истории, чтобы найти последнюю команду, начинающуюся с букв, которые мы вводим, и заполните указанный аргумент. Итак, если мы запустим
echo !su:2
bash будет искать назад, чтобы найти последнюю команду, начинающуюся с"
su
»И заполнить его второй аргумент, который является"
ubuntu
“.
Другие трюки работают так, как вы могли ожидать. Например, замена номера звездочкой, называемой подстановочным знаком, заставляет bash заполнять все аргументы из команды:
command !abc:*
Перезапустите предыдущую команду и измените ее.
Bash также позволяет повторно запустить предыдущую команду и указать что-то, что нужно изменить. Это может быть полезно для исправления опечатки в команде. Например, следующая команда перезапустит предыдущую команду, заменив текст"
abc
"В нем с текстом"
xyz
“.
^abc^xyz
Например, если вы случайно
ping gogle.com
вы могли бы запустить
^gog^goog
и bash выполнит команду
ping google.com
вместо.
Где хранится ваша история и как ее очистить
Оболочка bash хранит историю команд, которые вы запускали в файле истории вашей учетной записи пользователя по адресу ~ /.bash_history по умолчанию. Например, если ваше имя пользователя - bob, вы найдете этот файл в /home/bob/.bash_history.
Поскольку ваша история хранится в файле, она сохраняется между сеансами. Вы можете запустить некоторые команды, выйти, вернуться на следующий день, и эти команды все равно будут в вашем файле истории, готовом для просмотра и использования. Каждая учетная запись пользователя имеет свой собственный файл истории с отдельной историей команд.
Чтобы очистить историю bash, вы можете запустить следующую команду. Это стирает содержимое файла.bash_history вашей учетной записи пользователя:
history -c
HISTSIZE
переменная. По умолчанию обычно 500 или 1000 записей. Вы можете запустить следующую команду, чтобы просмотреть размер истории bash в вашей системе.
echo $HISTSIZE
Чтобы установить историю на нуль, выполните следующую команду.
HISTSIZE=0
Для текущего сеанса bash не будет хранить записи истории, если вы не запустите команду, например
HISTSIZE=1000
чтобы вернуть его к определенному количеству записей.
Как игнорировать пространства и дубликаты
Bash позволяет игнорировать записи истории, которые начинаются с пробела, если вы установите
HISTCONTROL
переменная до
ignorespace.
HISTCONTROL=ignorespace
Введите пробел перед командой перед запуском в оболочке bash, и команда будет работать нормально, но не будет отображаться в вашей истории, если эта переменная включена. Это позволяет сохранить вашу историю немного чище, выбирая запуск команд без их появления в вашей истории.
HISTCONTROL
в
ignoredups.
HISTCONTROL=ignoredups
ignorespace
а также
ignoredups
установите
HISTCONTROL
переменная до
ignoreboth.
HISTCONTROL=ignoreboth
Обратите внимание: переменные bash, которые вы установили, будут сохраняться только для текущего сеанса. Вам нужно будет добавить их в файл.bashrc вашей учетной записи, чтобы эти значения автоматически устанавливались в каждом запуске bash, если вы этого предпочтете.