Отображать только диапазон записей из истории Bash

Можно ли установить фиксированное число для команды "history", чтобы показывать только определенное количество элементов истории, например, 100, а не все с начала времен?

2 ответа

history n только для печати n черты истории. Например:

$ history 4
 2000  type history
 2001  help
 2002  help history
 2003  history 4
$

Таким образом, мы можем сделать псевдоним в вашем .bashrc:

alias h="history 100"

От help history:

history: history [-c] [-d offset] [n] or history -anrw [filename] or history -ps arg [arg...]
    Display or manipulate the history list.

    Display the history list with line numbers, prefixing each modified
    entry with a `*'.  An argument of N lists only the last N entries.

Это полезно, если вы хотите сохранить большой набор истории, возможно, даже неограниченный. С HISTCONTROL=ignoreboth:erasedups и обратный инкрементальный поиск, это особый случай, когда вы на самом деле запускаете history команда.

Настройка HISTFILESIZE а также HISTSIZE Вы можете ограничить размер команды истории.

Например HISTFILESIZE=100 а также HISTSIZE=100, Это ограничит файл истории, чтобы хранить 100 строк и HISTFILE которая хранит вашу команду сеанса в памяти до 100 строк.

Когда оболочка запускается, история инициализируется из файла с именем HISTFILE переменная (по умолчанию ~/.bash_history). Файл с именем по значению HISTFILE при необходимости обрезается, чтобы содержать не более количества строк, указанных значением HISTFILESIZE переменная.

Можете добавить HISTFILESIZE=100 а также HISTSIZE=100 в вашем ~/.bashrc файл. Измените 100 на номер, который вы хотите.

объяснение

HISTFILESIZE=10 а также HISTSIZE=10

  1. Вы начинаете свою сессию.
    1. Ваш HISTFILE (файл, в котором хранится история команд bash), усекается до HISTFILESIZE=10 строк.
  2. Вы пишете 50 строк.
  3. В конце ваших 50 команд, в вашем списке истории только команды с 41 по 50, размер которых определяется как HISTSIZE=10.
  4. Вы заканчиваете свою сессию.
    1. Если предположить, histappend не включен, команды с 41 по 50 сохраняются в вашем HISTFILE, который теперь имеет 10 команд, которые он держал в начале, плюс 10 вновь написанных команд.
    2. Ваш HISTFILE урезан до HISTFILESIZE=10 строк.
  5. Теперь у вас есть 10 команд в вашей истории - последние 10, которые вы только что набрали в сеансе, который вы только что завершили.
  6. Когда вы начинаете новый сеанс, вы начинаете с 1 с HISTFILE HISTFILESIZE=10.

HISTFILESIZE=10 а также HISTSIZE=5

  1. Вы начинаете свою сессию.
    1. Ваш HISTFILE (файл, в котором хранится история команд bash), усекается до не более HISTFILESIZE=10 строк.
  2. Вы пишете 50 строк.
  3. В конце ваших 50 команд, в вашем списке истории только команды с 46 по 50, размер которых определяется как HISTSIZE=5.
  4. Вы заканчиваете свою сессию.
    1. Если предположить, histappend не включен, команды с 46 по 50 сохраняются в вашем HISTFILE, который теперь содержит 10 команд, которые он держал в начале, плюс 5 вновь написанных команд.
    2. Ваш HISTFILE урезан до HISTFILESIZE=10 строк.
  5. Теперь у вас есть 10 команд в вашей истории - 5 из предыдущего сеанса и последние 5, которые вы только что набрали в сеансе, который вы только что завершили.
  6. Когда вы начинаете новый сеанс, вы начинаете с 1 с HISTFILE HISTFILESIZE=10.

HISTFILESIZE=5 а также HISTSIZE=10

  1. Вы начинаете свою сессию.
    1. Ваш HISTFILE (файл, в котором хранится история команд bash), усекается до не более HISTFILESIZE=5 строк.
  2. Вы пишете 50 строк.
  3. В конце ваших 50 команд, в вашем списке истории только команды с 41 по 50, размер которых определяется как HISTSIZE=10.
  4. Вы заканчиваете свою сессию.
    1. Если предположить, histappend не включен, команды с 41 по 50 сохраняются в вашем HISTFILE, который теперь имеет 5 команд, которые он держал в начале, плюс 10 вновь написанных команд.
    2. Ваш HISTFILE урезан до HISTFILESIZE=5 строк.
  5. Теперь у вас есть 5 команд в вашей истории - последние 5, которые вы только что набрали в сеансе, который вы только что закончили.
  6. Когда вы начинаете новый сеанс, вы начинаете заново с шага 1 с HISTFILE из HISTFILESIZE=5.

Это отличное объяснение от:stackoverflow.com

Другие вопросы по тегам