HakTip - Bash History Tricks
Оглавление:
- Использование
historyКоманда и Расширения истории - Сохранение списка истории
- Очистка истории
- Изменение истории поведения
- Вывод
, мы поговорим о команде
history
, которая позволяет просматривать список ранее выполненных команд, осуществлять поиск по списку и манипулировать файлом истории.
Использование
history
Команда и Расширения истории
history
- это встроенная оболочка, и ее поведение может немного отличаться от оболочки к оболочке. Мы расскажем о встроенной версии Bash.
В простейшей форме, когда вызывается без какой-либо опции или аргумента, команда
history
отображает весь список истории с номерами строк.
history
… 467 git push 468 tail -f var/logs/error 469 nano +22, 5 functions.sh 470 source project-env/bin/activate 471 history
Ввод
!n
выполняет n-ю команду из списка истории, а
!-n
команда n возвращает строку назад. В следующем примере мы выполняем команду в строке
467
:
!467
Другой способ выполнить команду - использовать расширение
!word
.
word
относится к самой последней команде, начинающейся со слова.
Как правило,
history
отображает много строк вывода, которые не помещаются на экране. Чтобы просмотреть вывод по одной странице за раз, передайте ее в программу для пейджинга, например,
more
или
less
команду:
history | less
Чтобы отобразить последние
n
строк, передайте число в качестве аргумента команде. Например, чтобы просмотреть только последние пять строк из списка истории, введите:
history -5
Используйте клавиши со стрелками
up
и
down
для навигации по записям в списке. Когда появится команда, которую вы искали, нажмите
Enter
чтобы выполнить ее.
Типа
!!
выполнить предыдущую команду:
!!
Это особенно полезно, когда вы забыли добавить команду с помощью
sudo
, и вместо того, чтобы вводить команду заново, вы можете ввести:
sudo !!
!-1
такой же как и
!!
и выполняет последнюю команду из списка истории
!-2
секунды до последней и т. д.
^word1^word2^
позволяет вам повторно запустить последнюю команду, заменив «word1» на «word2». Если вы случайно ввели
sduo command
вместо команды
sudo command
вы можете повторить команду, используя правильное слово с:
^sduo^sudo^
Используйте команду
grep
для фильтрации выходных данных. Например, чтобы просмотреть все команды, включая «nano», вы должны выполнить:
history | grep nano
302 sudo nano /etc/resolv.conf 356 nano setup.py 413 sudo nano /etc/hosts 469 nano +22, 5 functions.sh
Теперь, если вы хотите перезапустить команду
nano setup.py
просто введите:
!356
Другой способ поиска по истории команд - нажать
Ctrl-R
. Приглашение изменится на следующее, и вы сможете начать поиск ранее выполненной команды.
(reverse-i-search)`':
Оболочка отобразит соответствующую строку. Чтобы перейти к следующему подходящему предложению, снова нажмите
Ctrl-R
.
Обратитесь к руководству по Bash для получения дополнительной информации о расширении истории, модификаторах и обозначениях.
Сохранение списка истории
По умолчанию при запуске нового сеанса Bash считывает список истории из файла
.bash_history
. Список команд, которые выполняются в текущем сеансе, сохраняется в памяти и сохраняется в файл при закрытии сеанса.
Опция
-a
позволяет сохранить текущий список истории сеанса в файл
.bash_history
:
history -a
Опция
-w
записывает полный список истории в файл истории.
Очистка истории
Команда
history
позволяет очистить полный список истории или удалить определенные части.
Чтобы очистить список истории, используйте параметр
-c
:
history -c
Чтобы удалить определенную строку или строки между начальной и конечной позициями из списка истории, используйте параметр
-d
.
Например, чтобы удалить строки между 365 и 375 (включая эти строки), введите:
history -d 365 375
Когда используется отрицательное целое число, строки отсчитываются от конца списка истории.
Приведенные выше команды очищают список истории, который хранится в памяти, но не удаляет записи из файла
.bash_history
на диске. Чтобы очистить файл, вам нужно записать список истории в файл:
Изменение истории поведения
Поведение истории Bash можно определить с помощью нескольких различных переменных среды. При изменении поведения истории установите переменные в
~/.bashrc
или любом другом файле конфигурации, который загружается, когда пользователь входит в систему.
По умолчанию Bash хранит 500 строк в списке истории команд. Переменная
HISTSIZE
позволяет вам изменить это значение. Чтобы установить его на 10000, добавьте следующую строку в ваш файл
.bashrc
:
HISTSIZE=10000
Переменная
HISTCONTROL
принимает список значений, разделенных двоеточиями, которые определяют, как команды сохраняются в списке истории:
-
ignorespace- команды, начинающиеся с пробела, не сохраняются в списке истории.ignoredups- повторяющиеся команды не сохраняются.ignoreboth- это сокращение, включающее в себяignorespaceиignoredups.
HISTCONTROL=ignoreboth
Когда переменная
HISTTIMEFORMAT
установлена, Bash добавляет метку времени выполнения команды в каждой строке.
Например, если вы установите:
HISTTIMEFORMAT="%F %T: "
История будет отображаться в следующем формате:
413 2019-10-27 21:13:07: sudo nano /etc/hosts
Вывод
Команда
history
отображает список ранее выполненных команд. Например, вы можете использовать историю, чтобы просмотреть длинную команду, которую вы использовали до того, что вы не можете вспомнить.
Исходная команда Bash
Исходная команда читает и выполняет команды из файла, указанного в качестве аргумента в текущей среде оболочки. Source - это оболочка, встроенная в Bash и другие популярные оболочки, используемые в операционных системах Linux и UNIX.
Команда Chmod в Linux (права доступа к файлам)
В Linux доступ к файлам управляется через права доступа к файлам, атрибуты и права собственности. В этом руководстве рассказывается, как использовать команду chmod для изменения прав доступа к файлам и каталогам.
Команда Chgrp в Linux (сменить группу)
В Linux каждый файл связан с владельцем и группой и имеет разрешения, которые определяют, какие пользователи могут читать, записывать или выполнять файл. Команда chgrpc меняет групповое владение данными файлами.







