Отображать только диапазон записей из истории 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
- Вы начинаете свою сессию.
- Ваш 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.