Оболочка

Как извлечь максимум из истории Linux Bash

Как извлечь максимум из истории Linux Bash

Командная строка Linux - Терминал, как и все оболочки, хранит историю команд, выполненных пользователем в прошлом. Эта история постоянна и остается в памяти, даже когда мы перезагружаем нашу систему. Эти сохраненные команды могут быть вызваны и повторно использованы нами наиболее оптимальным способом для эффективного использования функции сохранения истории большинства оболочек.

Linux bash поставляется с очень мощной командой под названием «история». Эта команда является встроенной командой bash, используемой для извлечения исторической информации о командах, которые были выполнены пользователями Linux во всех предыдущих сеансах. В этом руководстве мы позволим вам извлечь максимальную пользу из истории вашей оболочки, изучив правильное использование команды history. Linux хранит историю команд для определенного пользователя в файле ~ /.bash_history по умолчанию.

Мы будем использовать Терминальное приложение Linux для выполнения команд, упомянутых в этом руководстве.

Просмотр всей истории

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

$ история

История будет напечатана на экране в следующем формате по умолчанию:

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

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

Фильтрация вывода истории

Если вы хотите отфильтровать вывод истории на основе определенного ключевого слова, которое вы, возможно, использовали в предыдущих командах, вы можете использовать команду истории следующим образом:

$ история | grep [ключевое слово]

Пример: В этом примере я хочу просмотреть только команды ping, которые я когда-либо запускал в оболочке. Поэтому я буду использовать следующую команду:

$ история | grep ping

Вы можете видеть, что мои выходные данные теперь отображают только команды, включая мое ключевое слово для поиска «ping»

Просмотр количества последних команд

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

ИЛИ ЖЕ

N Количество последних команд

Вы можете просмотреть определенное количество недавно выполненных команд с помощью следующей команды:

$ история | хвост -n

Пример:

В этом примере я хочу просмотреть 3 последние выполненные мной команды с ключевым словом ping:

$ история | grep ping | хвост -3

Вывод отображает только 3 недавних команды ping вместо всей истории

N Количество самых старых команд

Вы можете просмотреть определенное количество самых старых команд запуска с помощью следующей команды:

$ история | голова -n

Пример:

В этом примере я хочу просмотреть 3 самые старые выполненные мной команды с ключевым словом ping:

$ история | grep ping | голова -3

Вывод отображает только 3 самые старые команды ping вместо всей истории

Список всех команд с датой и отметкой времени

Если вы хотите просмотреть историю своих команд вместе с датой и отметкой времени, используйте следующую команду экспорта:

$ export HISTTIMEFORMAT = "% F,% T"

Теперь, когда вы хотите просмотреть историю, просто запустите команду history, чтобы увидеть результат в следующем формате:

Обратите внимание, что это изменение формата является временным и будет восстановлено до предыдущего стандарта, когда вы закроете сеанс.

Навигация по командам из истории

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

Прокрутка команд

Вы можете использовать следующие элементы управления с клавиатуры для навигации по командам истории

Стрелка вверх / Ctrl + PИспользуя эти элементы управления, вы можете отобразить предыдущую команду, которую вы использовали. Вы можете нажимать эти элементы управления несколько раз, чтобы вернуться к определенной команде в истории.
Стрелка вниз / Ctrl + NИспользуя эти элементы управления, вы можете отобразить следующую команду, которую вы использовали. Вы можете нажимать эти элементы управления несколько раз, чтобы перейти к определенной команде в истории.
Alt + RЕсли вы редактируете команду, извлеченную из истории, в текущей строке, вы можете использовать этот элемент управления, чтобы вернуть ее к исходной команде.

Вызов команд

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

Ctrl + RИспользуя этот элемент управления, вы можете вызвать команду из истории, указав строку поиска.
Ctrl + OИспользуя этот элемент управления, вы можете запустить вызванную вами команду с помощью Ctrl + R
Ctrl + GИспользуя этот элемент управления, вы можете выйти из истории, не выполняя команду, которую вы вызвали через Ctrl + R

Пример:

В этом примере я нажал ctrl + R, а затем ввел строку поиска 'ar'. В истории отображалась команда «арка».

Когда я запустил команду arch, нажав ctrl + O, она отобразила архитектуру процессора моей системы:

Использование истории Bash

Настоящая магия истории bash заключается в использовании различных команд и настройке самой команды history для наилучшего использования функции истории:

Запуск команд из истории

$ !#

Пример:

Здесь я запускаю команду номер 95 из своей истории:

$ !95

На выходе отображается результат lscpu, который был указан как команда номер 95 в моей истории bash. Эта команда отображает характеристики моего процессора и операционной системы.

$ !!

Пример:

Здесь вы можете видеть, что я выполнил команду «арка». Запустив вышеупомянутую команду, я могу повторно запустить команду 'arch', чтобы просмотреть архитектуру моего процессора следующим образом:

$ ![ключевое слово]

Пример:

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

$ !dconf

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

Использование аргументов из предыдущих команд

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

Используя последний аргумент предыдущей команды

$ [Команда] !$

Переменная !$ имеет последний аргумент из предыдущей сохраненной в нем команды.

Пример:

В этом примере я создам файл с длинным именем.

Нано [longnameOfaFile]

Затем я скопирую его в другое место, избегая повторного ввода длинного имени следующим образом:

Cp !$ [папка назначения]

Вы можете видеть, что я смог скопировать файл без повторного ввода имени файла, используя переменную !$

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

Иногда в текущей полезен только первый аргумент предыдущей команды.

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

$ [команда] !^

Пример:

В следующем примере я выполнил команду ping, указав имя хоста и счетчик в качестве аргументов. Теперь я хочу использовать имя хоста (первый аргумент), а не 2 (последний аргумент) в моей новой команде. Для этого я воспользуюсь следующей командой:

$ пинг !^

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

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

$ !*

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

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

$ [команда] ![ключевое слово]:#

Пример:

$ echo !cp: 2

Эта команда примет следующие параметры:

команда: echo

Ключевое слово: cp

#: 2 (второй аргумент команды)

Следующий вывод показывает 2-й аргумент последней выполненной мной команды cp:

Использование всех аргументов из команды истории

Следующая команда сохранит все аргументы из искомой команды истории и будет использовать их в текущей команде:

$ команда ![ключевое слово]:*

Пример:

В следующей команде я напечатаю все аргументы последней команды cp, используя команду echo следующим образом:

$ echo ![cp]: *

Изменение и запуск предыдущих команд

Если вы неправильно набрали команду или хотите повторно запустить команду, изменив в ней какой-то текст; вот как это сделать:

$ ^ [предыдущий текст] ^ [новый текст]

Пример:

Я неправильно набрал команду grep как gep и теперь хочу запустить команду, исправив текст:

$ ^ gep ^ grep

Теперь вы можете видеть, что моя исправленная команда будет работать правильно следующим образом:

История очистки

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

$ history -c

Эта команда очистит вашу историю и удалит все содержимое из файла ~ /.bash_history

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

Как использовать чит-движок GameConqueror в Linux
В статье содержится руководство по использованию чит-движка GameConqueror в Linux. Многие пользователи, играющие в игры на Windows, часто используют п...
Лучшие эмуляторы игровой консоли для Linux
В этой статье будет перечислено популярное программное обеспечение для эмуляции игровых консолей, доступное для Linux. Эмуляция - это уровень совмести...
Лучшие дистрибутивы Linux для игр в 2021 году
Операционная система Linux прошла долгий путь от своего первоначального простого серверного вида. Эта ОС значительно улучшилась за последние годы и те...