Как использовать свою историю Bash на терминале Linux или macOS

Оглавление:

Как использовать свою историю Bash на терминале Linux или macOS
Как использовать свою историю Bash на терминале Linux или macOS

Видео: Как использовать свою историю Bash на терминале Linux или macOS

Видео: Как использовать свою историю Bash на терминале Linux или macOS
Видео: САМЫЕ ЛУЧШИЕ ОТ APPLE 🔥УМНЫЕ ЧАСЫ APPLE WATCH SE Gen 2 СМАРТ ЧАСЫ КОТОРЫХ ВЫ ЖДАЛИ ! ВСЕ ДЛЯ ЖИЗНИ - YouTube 2024, Ноябрь
Anonim
Оболочка bash - это стандартная терминальная среда, входящая в большинство дистрибутивов Linux, включаемая в macOS и доступная для установки в Windows 10. Она запоминает введенные вами команды и сохраняет их в файле истории. Вероятно, вы знаете несколько основ истории bash, но это намного мощнее, чем вы могли бы понять.
Оболочка bash - это стандартная терминальная среда, входящая в большинство дистрибутивов Linux, включаемая в macOS и доступная для установки в Windows 10. Она запоминает введенные вами команды и сохраняет их в файле истории. Вероятно, вы знаете несколько основ истории bash, но это намного мощнее, чем вы могли бы понять.

Горячие клавиши

Чтобы просмотреть историю вашего bash, вы можете использовать несколько полезных сочетаний клавиш в bash. Нажмите эти ярлыки, и команды, которые вы ранее использовали, появятся в подсказке.

  • Стрелка вверх или же Ctrl + P: Перейдите к предыдущей команде в своей истории. Несколько раз нажмите клавишу, чтобы пройти назад по командам, которые вы использовали.
  • Стрелка вниз или же Ctrl + N: Перейдите к следующей команде в своей истории. Несколько раз нажмите клавишу, чтобы идти вперед по командам, которые вы использовали.
  • Alt + R,: Отмените любые изменения в команде, которую вы вытащили из своей истории, если вы отредактировали ее в текущей строке.

У Bash также есть специальный режим «отзыва», который вы можете использовать для поиска команд, которые вы ранее запускали, а не прокрутки их по одному.

  • Ctrl + R: Вспомните последнюю команду, соответствующую вашим персонажам. Нажмите этот ярлык и начните вводить текст, чтобы выполнить поиск истории bash для команды.
  • Ctrl + O: Запустите команду, которую вы нашли с помощью Ctrl + R.
  • Ctrl + G: Оставьте режим поиска в истории без выполнения команды.
Image
Image

Просмотр истории вашего баша

Вы можете распечатать всю историю bash на экране, выполнив одну команду:

history

Вы увидите список всех команд в истории вашего bash, а также число слева от каждого. Команда с рядом «1» - это самая старая команда в истории вашего bash, а команда с самым большим номером - самая последняя.

Вы можете делать все, что угодно, с выходом. Например, вы можете подключить его к
Вы можете делать все, что угодно, с выходом. Например, вы можете подключить его к

grep

команду для поиска вашей истории команд.

history | grep your_search

Вы также можете подключить его к
Вы также можете подключить его к

tail

чтобы просмотреть только небольшое количество последних команд, которые вы выполнили. Например, следующая команда покажет последние 5 записей в вашей истории.

history | tail -5

Image
Image

Запустить команды из вашей истории

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

Чтобы запустить определенную команду из вашей истории по ее номеру, используйте следующую команду:

!#

Например, допустим, вы хотели запустить 12-ю команду из истории bash. Это команда с «12» слева от нее, когда вы запускаете

history

команда. Вы должны ввести следующую команду.

!12

Чтобы повторно запустить последнюю выполненную команду, введите следующую команду. Это имеет тот же эффект, что и однократное нажатие стрелки вверх, чтобы просмотреть предыдущую команду, а затем нажмите Enter.
Чтобы повторно запустить последнюю выполненную команду, введите следующую команду. Это имеет тот же эффект, что и однократное нажатие стрелки вверх, чтобы просмотреть предыдущую команду, а затем нажмите Enter.

!!

Вы также можете обратиться к команде с определенным количеством строк. Например,

!-2

будет запускать вторую последнюю команду, которую вы запускали.

!!

означает то же самое, что и

!-1

This expansion works anywhere on the line. You can add anything you like before or after
This expansion works anywhere on the line. You can add anything you like before or after

!!

или любые другие выражения в этом разделе. Например, вы можете ввести следующую команду для повторного запуска последней команды, с которой вы проходили

sudo

предоставляя ему привилегии root. Это особенно полезно, если вы забыли добавить

sudo

перед запуском команды.

sudo !!

Или, например, вы можете повторно запустить предыдущую команду и передать ее вывод в grep для поиска некоторого текста.

!! | grep text

Чтобы найти команду в своей истории и запустить ее, введите следующую команду. Это приведет к последней команде, которая соответствует указанному вами тексту:
Чтобы найти команду в своей истории и запустить ее, введите следующую команду. Это приведет к последней команде, которая соответствует указанному вами тексту:

!text

Итак, если вы недавно запускали команду, которая начиналась с

ping

вы можете запустить следующую команду для ее поиска. Это будет искать назад через вашу историю, найти самую последнюю команду, которая начинается с"

pi

», И сразу запустите его:

!pi

Image
Image

Вы можете добавить

:p

к любому из вышеперечисленных расширений и bash выведет команду на терминал без ее запуска. Это полезно, если вы хотите подтвердить, что вы выбрали правильную команду перед ее запуском.

!12:p

!!:p

!text:p

Image
Image

Повторное использование аргументов из вашей истории

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:*

Image
Image

Перезапустите предыдущую команду и измените ее.

Bash также позволяет повторно запустить предыдущую команду и указать что-то, что нужно изменить. Это может быть полезно для исправления опечатки в команде. Например, следующая команда перезапустит предыдущую команду, заменив текст"

abc

"В нем с текстом"

xyz

“.

^abc^xyz

Например, если вы случайно

ping gogle.com

вы могли бы запустить

^gog^goog

и bash выполнит команду

ping google.com

вместо.

Image
Image

Где хранится ваша история и как ее очистить

Оболочка bash хранит историю команд, которые вы запускали в файле истории вашей учетной записи пользователя по адресу ~ /.bash_history по умолчанию. Например, если ваше имя пользователя - bob, вы найдете этот файл в /home/bob/.bash_history.

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

Чтобы очистить историю bash, вы можете запустить следующую команду. Это стирает содержимое файла.bash_history вашей учетной записи пользователя:

history -c

Bash только запоминает ограниченное количество команд по умолчанию, не позволяя файлу истории слишком сильно увеличиваться. Количество записей истории bash запоминается с помощью
Bash только запоминает ограниченное количество команд по умолчанию, не позволяя файлу истории слишком сильно увеличиваться. Количество записей истории bash запоминается с помощью

HISTSIZE

переменная. По умолчанию обычно 500 или 1000 записей. Вы можете запустить следующую команду, чтобы просмотреть размер истории bash в вашей системе.

echo $HISTSIZE

Чтобы установить историю на нуль, выполните следующую команду.

HISTSIZE=0

Для текущего сеанса bash не будет хранить записи истории, если вы не запустите команду, например

HISTSIZE=1000

чтобы вернуть его к определенному количеству записей.

Image
Image

Как игнорировать пространства и дубликаты

Bash позволяет игнорировать записи истории, которые начинаются с пробела, если вы установите

HISTCONTROL

переменная до

ignorespace.

HISTCONTROL=ignorespace

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

Bash также позволяет игнорировать повторяющиеся команды, которые могут загромождать вашу историю. Для этого установите
Bash также позволяет игнорировать повторяющиеся команды, которые могут загромождать вашу историю. Для этого установите

HISTCONTROL

в

ignoredups.

HISTCONTROL=ignoredups

Чтобы использовать как
Чтобы использовать как

ignorespace

а также

ignoredups

установите

HISTCONTROL

переменная до

ignoreboth.

HISTCONTROL=ignoreboth

Обратите внимание: переменные bash, которые вы установили, будут сохраняться только для текущего сеанса. Вам нужно будет добавить их в файл.bashrc вашей учетной записи, чтобы эти значения автоматически устанавливались в каждом запуске bash, если вы этого предпочтете.

Рекомендуемые: