Благодаря этому вопросу я успешно выполняюсь, чтобы запретить моему удару снабжать ту же команду больше чем в один раз, если я много раз пишу ту же команду.
Однако существует все еще деталь, которую я не могу разрешить: моя подсказка содержит \#
специальный символ, что число команды печати для каждой команды. И это все еще увеличивает себя каждый раз, когда я ввожу команду, дубликат или нет, даже если моя история не заполняется.
В моем ~/.bashrc
, моя подсказка похожа на это:
export PS1='aracthor \# >'
И когда я много раз пишу ту же команду, инкремент числа команды:
aracthor 1 >pwd
/home/aracthor
aracthor 2 >pwd
/home/aracthor
aracthor 3 >
Как я могу избежать, чтобы команда пронумеровала его для постепенного увеличения?
Я использую Ubuntu 14.04.02 и declare -p HISTCONTROL
вывод:
declare -x HISTCONTROL="ignoredups:erasedups"
Читайте man bash
, set
встроенный, и раздел по HISTCONTROL
:
HISTCONTROL
A colon-separated list of values controlling how commands are saved on the history list. If the list of values includes ignorespace, lines
which begin with a space character are not saved in the history list. A value of ignoredups causes lines matching the previous history
entry to not be saved. A value of ignoreboth is shorthand for ignorespace and ignoredups. A value of erasedups causes all previous lines
matching the current line to be removed from the history list before that line is saved. Any value not in the above list is ignored. If
HISTCONTROL is unset, or does not include a valid value, all lines read by the shell parser are saved on the history list, subject to the
value of HISTIGNORE. The second and subsequent lines of a multi-line compound command are not tested, and are added to the history regard‐
less of the value of HISTCONTROL.
В моем ~/.bashrc
я имею:
export HISTCONTROL=$HISTCONTROL${HISTCONTROL+,}ignoredups
Вот пример:
w3@aardvark:~(0)$ echo $HISTCONTROL
ignoreboth
w3@aardvark:~(0)$ date
Sat Jun 27 19:50:56 EDT 2015
w3@aardvark:~(0)$ date
Sat Jun 27 19:50:57 EDT 2015
w3@aardvark:~(0)$ date
Sat Jun 27 19:50:58 EDT 2015
w3@aardvark:~(0)$ history
1 cd
2 echo $HISTCONTROL
3 date
4 history
w3@aardvark:~(0)$
Выполнение date
после history
будет регистрироваться и считаться.
Обычно \!
увеличит, как Вы хотите, но когда Вы достигнете предела истории HISTSIZE строк для хранения в памяти, это остановится. Вы могли попробовать намного больший HISTSIZE.
Или вместо этого, Вы могли установить больший HISTSIZE и HISTFILESIZE и выполнить команду перед каждой подсказкой для сохранения истории:
PROMPT_COMMAND='history -w'
Тогда в Вашем PS1
можно выполнить команду для подсчета строк истории в файле:
PS1='\w #=\# !=\! file=$(wc -l <$HISTFILE) $ '