Можно ли установить фиксированное число для команды «history», чтобы отображалось только определенное количество элементов истории, например 100, а не все с начала времен?
решение1
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
команду.
решение2
Настроив HISTFILESIZE
, HISTSIZE
можно ограничить размер истории команд.
Например, HISTFILESIZE=100
и HISTSIZE=100
. Он ограничит файл истории хранением 100 строк и HISTFILE
сохранит вашу текущую команду сеанса в памяти до 100 строк.
При запуске оболочки история инициализируется из файла, названного переменной HISTFILE
(по умолчанию ~/.bash_history). Файл, названный значением HISTFILE
, при необходимости обрезается, чтобы содержать не более количества строк, указанного значением переменной HISTFILESIZE
.
Вы можете добавить HISTFILESIZE=100
и HISTSIZE=100
в свой ~/.bashrc
файл. Замените 100 на желаемое число.
Объяснение
HISTFILESIZE=10
иHISTSIZE=10
- Вы начинаете сеанс.
- Ваш HISTFILE (файл, в котором хранится история команд bash) обрезается до HISTFILESIZE=10 строк.
- Вы пишете 50 строк.
- По завершении 50 команд в списке истории останутся только команды с 41 по 50, размер которых определяется параметром HISTSIZE=10.
- Вы завершаете сеанс.
- Если
histappend
эта опция не включена, команды 41–50 сохраняются в файле HISTFILE, который теперь содержит 10 команд, которые содержались в начале, плюс 10 новых записанных команд. - Ваш HISTFILE обрезан и содержит HISTFILESIZE=10 строк.
- Если
- Теперь в вашей истории 10 команд — последние 10, которые вы ввели в сеансе, который вы только что завершили.
- При запуске нового сеанса вы начинаете с 1 с HISTFILE HISTFILESIZE=10.
HISTFILESIZE=10
иHISTSIZE=5
- Вы начинаете сеанс.
- Ваш HISTFILE (файл, в котором хранится история команд bash) обрезается так, чтобы содержать не более HISTFILESIZE=10 строк.
- Вы пишете 50 строк.
- По завершении 50 команд в списке истории останутся только команды с 46 по 50, размер которых определяется параметром HISTSIZE=5.
- Вы завершаете сеанс.
- Если
histappend
эта опция не включена, команды 46–50 сохраняются в файле HISTFILE, который теперь содержит 10 команд, которые содержались в начале, плюс 5 новых записанных команд. - Ваш HISTFILE обрезан и содержит HISTFILESIZE=10 строк.
- Если
- Теперь в вашей истории 10 команд — 5 из предыдущего сеанса и последние 5, которые вы только что ввели в сеансе, который вы только что завершили.
- При запуске нового сеанса вы начинаете с 1 с HISTFILE HISTFILESIZE=10.
HISTFILESIZE=5
иHISTSIZE=10
- Вы начинаете сеанс.
- Ваш HISTFILE (файл, в котором хранится история команд bash) обрезается так, чтобы содержать не более HISTFILESIZE=5 строк.
- Вы пишете 50 строк.
- По завершении 50 команд в списке истории останутся только команды с 41 по 50, размер которых определяется параметром HISTSIZE=10.
- Вы завершаете сеанс.
- Если
histappend
эта опция не включена, команды 41–50 сохраняются в файле HISTFILE, который теперь содержит 5 команд, содержавшихся в начале, плюс 10 новых записанных команд. - Ваш HISTFILE обрезан и содержит HISTFILESIZE=5 строк.
- Если
- Теперь в вашей истории 5 команд — последние 5, которые вы ввели в сеансе, который вы только что завершили.
- При запуске нового сеанса вы начинаете заново с шага 1 с HISTFILE HISTFILESIZE=5.