Получение истории командной строки Bash Linux

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

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

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

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

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

$ history

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

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

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

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

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

$ history | grep [keyword]

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

История $ | grep ping

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

Просмотр многих недавних команд

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

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

ИЛИ

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

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

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

$ history | tail -n

Пример:

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

$ history | grep ping |tail -3

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

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

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

$ history | head -n

Пример:

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

$ history | grep ping |head -3

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

Перечислите все команды с датой и меткой времени

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

$ export HISTTIMEFORMAT='%F, %T '

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

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

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

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

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

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

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

Вспоминание команд

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

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

Пример:

В этом примере я нажал ctrl+R и затем предоставил строке поиска 'площадь'. История отобразила команду 'дуга'.

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

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

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

Выполнение команд из истории

  • Как мы видели прежде, команда истории отображает команды путем соединения числа с каждым. При помощи следующей команды можно выполнить определенную команду из истории, на основе ее числа:
$ !#

Пример:

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

$ !95

Вывод отображает результат ‘lscpu’, который был перечислен как команда номер 95 в моей истории удара. Эта команда отображает мой ЦП и спецификации операционной системы.

  • Можно повторно выполнить предыдущую команду при помощи следующей команды:
$ !!

Пример:

Здесь Вы видите, что я выполнил команду 'дуга'. Путем выполнения вышеупомянутой команды я могу повторно выполнить команду 'дуги' для просмотра моей архитектуры ЦП следующим образом:

  • Чтобы искать команду из истории и затем выполнить ее, используйте следующую команду:
$ ![keyword]

Пример:

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

$ !dconf

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

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

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

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

$ [Command] !$

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

Пример:

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

Nano [longnameOfaFile]

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

Cp !$ [destinationfolder]

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

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

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

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

$ [command] !^

Пример:

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

$ ping !^

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

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

$ !*

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

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

$ [command] ![keyword]:#

Пример:

$ echo !cp:2

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

команда: эхо

Keyword:cp

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

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

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

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

$ command ![keyword]:*

Пример:

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

$ echo ![cp]:*

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

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

$ ^[previoustext]^[newtext]

Пример:

Я ввел команду с опечаткой ‘grep’ как ‘gep’, и теперь я хочу выполнить команду путем исправления текста:

$ ^gep^grep

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

Очистка истории

Для стирания истории удара используйте следующую команду:

$ history -c

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

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

Комментарии