Файл истории команд linux

Команда history в Linux

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

Синтаксис

Рассмотрим синтаксис утилиты history (History Library).

  • -a — включить в файл bash новый запрос;
  • -c — удалить историю введенных раннее команд;
  • -d — очистить из истории определенную строку с заданным идентификатором;
  • -n — читает все запросы из файла и добавляет в текущyю сессию;
  • -r — читает все команды из файла и добавляет в текущий список.
  • -w — записывает всю историю в файл, который указан в качестве аргумента. Например «history -w newfile».

Файл — это необязательный аргумент, его можно не указывать.

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

По умолчанию все записывается в домашний каталог пользователя в файл .bash_history. Если нужно изменить максимальный размер файла, то все настройки хранятся в «.bashcr».

В документе bashcr видим:

  • «HISTSIZE=1000» — максимальное число строк, хранящихся в памяти оболочки;
  • «HISTFILESIZE=2000» — максимальное число записей, хранящихся в файле.

Примеры

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

Визуально смотреть текст из 1000 строк сразу неудобно, поэтому покажем на экране 5 последних запросов. Синтаксис будет выглядеть так:

history 5

На скриншоте видим два столбика:

  • 501, 502,503 — номер запроса, согласно истории;
  • cd . clear — название запроса.

Выполним команду под номером 504 «clear» очистка экрана. Для этого введем восклицательный знак и номер.

Внимание! Написать все нужно слитно без пробела.

Чтобы удалить всю историю, необходимо использовать ключ «-c».

Если нужно очистить только какую-нибудь определенную команду, то пишем название утилиты с ключом «-d». Например удалим запрос под номером 503.

Для поиска введенных раннее команд, можно воспользоваться дополнительной утилитой grep. Найдем все, что совпадает с «ls».

history | grep ls

Другой вариант выполнить поиск, использовать конструкцию «!?».

Более простой способ поиска по истории через оболочку терминала. Можно нажать горячие клавиши Ctrl + r. На экране появиться надпись: «(reverse-i-search)». Набирая символы с клавиатуры — оболочка будет выводить на экран подходящие команды из истории.

Если нажать на клавишу вверх в терминале Linux — оболочка покажет последний запрос. Таким образом можно перебирать введенные раннее команды.

Источник

📑 Команда history или работа с историей введенных команд

Иногда при работе в Linux Ubuntu/Mint в терминальном режиме нам нужно выполнять одни и те же команды несколько раз. Это занимает очень много времени и порождает ошибки при вводе, особенно если эти команды очень длинные.

К счастью, Bash имеет хорошее решение этой проблемы — историю bash. Используя механизм истории bash, ранее выполненные команды могут легко извлекаться и выполняться без повторного ввода команды. Linux хранит историю командной строки каждого пользователя в домашнем каталоге.

По умолчанию команда bash — history отображает список ранее набранных команд с номерами строк. Но вы также можете получить историю команд с указанием даты и времени и повторно запускать эти команды различными способами.

Читайте также:  Spark есть для windows

Настройки истории команд

В файле .bashrc вашей домашней директории существует несколько переменных, которые используются для управления записями истории команд. Bash хранит историю команд двумя способами — история может быть сохранена в файле и в оперативной памяти.

Переменная HOSTFILE используется для установки местоположения и имени файла истории. По умолчанию историческая информация хранится в файле .bash_history. Сколько команд может быть сохранено в файле, задается с помощью переменной HISTFILESIZE (в принцепе эта переменная задаёт размер файла истории), а количество команд текущего сеанса может храниться в памяти — с помощью переменной HISTSIZE.

Откройте файл .bashrc в любом редакторе и выясните настройки этих параметров по умолчанию. Здесь для редактирования этого файла используется текстовый редактор nano.

В соответствии с содержимым этого файла значение HISTFILESIZE по умолчанию равно 2000, а HISTSIZE — 1000. Вы можете изменить эти значения по своему выбору.

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

Включить/отключить перезапись файла истории

Для каждого нового сеанса файл истории дописывается текущими командами истории в конце сеанса. Для этого существует запись в файле .bashrc:

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

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

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

Тогда на проверку настройки выдаст:

Показать список ранее выполненных команд bash

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

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

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

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

Вы можете легко выполнить любую команду из истории, указав номер строки с символом «!». Следующая команда выполнит команду строки № 17 из файла истории

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

Для того, чтобы вывести историю команд с игнорированием дублей достаточно использовать значение erasedups переменной окружения HISTCONTROL:

Для очистки истории команд достаточно использовать параметр -c команды history:

Источник

Файл истории команд linux

Команда history является встроенной командой командных оболочек C shell, csh и bash (но не sh), предназначенной для повторного исполнения ранее исполненных команд. Обычно история команд хранится в отдельном файле, например, командная оболочка bash хранит ее в файле .bash_history, расположенном в домашней директории пользователя. Это очень полезная команда, позволяющая сэкономить время, требующееся для повторного ввода длинных команд.

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

Команда поддерживает различные параметры, позволяющие модифицировать файл, а также историю команд текущей сессии, которые, впрочем, используются крайне редко. В частности, параметр -c позволяет очистить историю команд, параметр -d позволяет удалить команду с заданным идентификатором из истории, параметр -a позволяет добавить команды из текущей сессии в файл истории команд с заданным именем, параметр -n позволяет прочитать новые команды из файла истории команд с заданным именем и добавить их в историю команд текущей сессии, параметр -r позволяет прочитать все команды из файла истории команд с заданным именем и добавить их в историю команд текущей сессии, параметр -w позволяет записать всю историю команд в файл с заданным именем, параметр -p позволяет раскрыть аргументы и вывести результаты без добавления в историю и параметр -s позволяет добавить аргументы в качестве единственной команды истории текущей сессии.

Читайте также:  Проверка скорости hdd linux

Команда учитывает значения переменных окружения. Например, переменные окружения FILENAME и HISTFILE позволяют задать имя файла истории команд, переменная окружения HISTTIMEFORMAT — установить формат вывода даты и времени, переменные окружения HISTSIZE и HISTFILESIZE — установить максимальное количество строк файла истории команд, переменная окружения HISTCONTROL — задать правила обработки команд перед помещением их в историю текущей сессии.

Примеры использования

Работа с историей команд

Для вывода истории команд, выполненных с помощью командной оболочки, следует использовать команду history без каких-либо параметров:

$ history
1 mc
2 nano /etc/apt/sources.list
3 apt-get update

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

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

Если же нужно найти определенные команды, достаточно задействовать утилиту grep:

$ history | grep kwboot
196 apt search kwboot
200 kwboot
203 kwboot -t -B 115200 /dev/ttyUSB0 -b u-boot.kwb -p

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

(reverse-i-search)`kwboot -t’: kwboot -t -B 115200 /dev/ttyUSB3 -b u-boot.kwb -p

Блокировка механизма записи команд

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

$ export HISTSIZE=0
$ history
$

Очевидно, что после этого команда history не выводит никаких результатов.

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

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

$ export HISTCONTROL=ignorespace
$ history
1 mc

344 export HISTCONTROL=ignorespace
345 history
$ ls
$ history
1 mc

344 export HISTCONTROL=ignorespace
345 history
346 history

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

Игнорирование дублей команд

Для того, чтобы вывести историю команд с игнорированием дублей достаточно использовать значение erasedups переменной окружения HISTCONTROL:

$ export HISTCONTROL=ignoreboth:erasedups
$ history
1 mc

344 export HISTCONTROL=ignoreboth:erasedups
345 history

Очистка истории команд

Для очистки истории команд достаточно использовать параметр -c команды history:

Источник

Команда history в Linux (Bash History)

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

Использование команды history и журнала расширений

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

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

При наборе !n выполняется n-я команда из списка истории, а команда !-n, n строк назад. В следующем примере мы выполняем команду на линии 467:

Другой способ выполнить команду – использовать расширение !word. word, относится к самой последней команде, начинающейся со слова.

Как правило, history отображает много строк вывода, которые не помещаются на экране. Чтобы просмотреть выходные данные по одной странице за раз, передайте их в с помощию команд more или less:

Чтобы отобразить последние строки n, передайте число в качестве аргумента команде. Например, чтобы просмотреть только последние пять строк из списка истории, введите:

Читайте также:  Rdp клиент для windows что это

Используйте клавиши со стрелками upи down для навигации по записям в списке. Когда появится команда, которую вы искали, нажмите, Enterчтобы выполнить ее.

Введите !! для выполнения предыдущей команды:

Это особенно полезно, когда вы забыли добавить команду sudo, и вместо повторного ввода команды вы можете набрать:

!-1 то же самое, что !! и выполняет последнюю команду из списка истории, от !-2 второго до последнего и т. д.

Расширение ^word1^word2^ позволяет повторно запустить последнюю команду, заменив «word1» на «word2». Если вы случайно набрали команду sduo вместо команды sudo, вы вы можете повторить команду, используя правильное слово с:

Используйте команду grep для фильтрации вывода. Например, чтобы просмотреть все команды, включая «nano», вы должны выполнить:

Теперь, если вы хотите перезапустить команду nano setup.py, просто наберите:

Другой способ поиска по истории команд – нажать Ctrl-R. Приглашение изменится на следующее, и вы сможете начать поиск ранее выполненной команды.

Оболочка отобразит соответствующую строку. Чтобы перейти к следующему предложению, нажмите еще раз Ctrl-R.

Обратитесь к руководству по Bash для получения дополнительной информации о расширении history, модификаторах и обозначениях.

Сохранение списка истории

По умолчанию при запуске нового сеанса Bash читает список истории из файла .bash_history. Список команд, которые выполняются в текущем сеансе, сохраняется в памяти и сохраняется в файл при закрытии сеанса.

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

Опция -a позволяет сохранить текущий список истории сеанса в файл .bash_history:

Вариант -w записывает полный список истории в файл истории.

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

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

Чтобы очистить список истории, используйте параметр -c:

Чтобы удалить определенную строку или строки между начальной и конечной позициями из списка истории, используйте параметр -d.

Например, чтобы удалить строки между 365 и 375 (включая эти строки), введите:

Если вы указываете только один номер опции -d, команда удаляет данную строку.

Когда используется отрицательное целое число, строки отсчитываются от конца списка истории.

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

Изменение поведения history

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

/.bashrc, который загружается при входе пользователя в систему.

По умолчанию Bash хранит 500 строк в списке истории команд. Переменная HISTSIZE позволяет изменять это значение. Чтобы установить его на 10000, добавьте следующую строку в ваш файл .bashrc:

Переменная HISTCONTROL принимает разделенный двоеточиями список значений, которые определяют, каким образом команды сохраняются в списке истории: команды – ignorespace-, которые начинаются с пространством, не сохраняются в списке истории. – ignoredups- дублирующие команды не сохраняются. – ignoreboth это стенография, включающая в себя ignorespace и ignoredups.

Когда переменная HISTTIMEFORMAT установлена, Bash добавляет метку времени выполнения команды в каждой строке.

Например, если вы установите:

История будет отображаться в следующем формате:

Заключение

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

Если у вас есть какие-либо вопросы или отзывы, не стесняйтесь оставлять комментарии.

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Источник

Оцените статью