Другая ночь я читал Вопросы и ответы AU и использовал команду удара:
inxi -????
Проблема сегодня, я не помню символов, включающих????. Я хочу поместить команду и параметры в мою электронную таблицу документации. На основе этого ответа (Как вспомнить историю в teminal) я использовал эту команду:
$ cat .bash_history | grep inxi
inxi -b
sudo apt install inxi
inxi -b
Однако команда, которую я хочу, не там даже при том, что история идет далеко назад. Я использовал inxi
команды много раз в терминале начиная с той старой истории, но ни один из не обнаруживается.
Я также попробовал Ctrl+R+inxi без любой удачи. Поскольку я открываюсь, несколько окон терминала все время история, связанная с определенным окном?
Есть ли другой путь к grep
файл (файлы) истории удара?
Обратите внимание, что я не снабжаю префиксом терминальные команды клавишу "Пробел", таким образом, что они подавляются из истории.
Я не могу знать то, что произошло без доступа к Вашей машине, но здесь является коротким объяснением того, как системные работы истории, которые могли бы помочь Вам выяснить то, что произошло.
Каждый открытый терминал имеет свой собственный буфер истории. Эти буферы добавляются к Вашему $HISTFILE
, когда терминал закрывается (возможно, также каждый раз, когда буфер заполнен, но я не знаю, как часто это происходит). Теперь, способ искать команду в Вашей истории состоит в том, чтобы просто работать:
history | grep command
, Но если команда была выполнена в другой оболочке, Вы не будете видеть его в истории Вашей текущей. Для фиксации этого Вы закрываете все открытые оболочки, открываете новое окно терминала и ищете Вашу историю снова.
, Если это все еще не помогает, Вы, вероятно, передали порог команд, сохраненных в $HISTFILE
. Поведением эти $HISTFILE
управляют различные переменные среды (см. man bash
для полного списка), но соответствующие здесь:
HISTSIZE
The number of commands to remember in the command history (see HISTORY below). If the value is 0, commands are not saved in the history list. Numeric values less than
zero result in every command being saved on the history list (there is no limit). The shell sets the default value to 500 after reading any startup files.
HISTFILESIZE
The maximum number of lines contained in the history file. When this variable is assigned a value, the history file is truncated, if necessary, to contain no more than
that number of lines by removing the oldest entries. The history file is also truncated to this size after writing it when a shell exits. If the value is 0, the history
file is truncated to zero size. Non-numeric values and numeric values less than zero inhibit truncation. The shell sets the default value to the value of HISTSIZE after
reading any startup files.
, Чем более высокие значения Вы устанавливаете они к, тем больше команд Вы сохраните в Вашем $HISTFILE
. Например, я использую:
HISTSIZE=999999
HISTFILESIZE=999999
<час> , Если Вы хотите импортировать историю из одной оболочки в другого, можно использовать эти history
команда:
$ help history | grep -E -- '-a|-r'
-a append history lines from this session to the history file
-r read the history file and append the contents to the history
Так, выполнение history -a
для записи истории из одного терминала и затем history -w
для чтения его из другого. Теперь, выполнение history
покажет Вам историю обеих оболочек.
Наконец, можно заставить все терминалы совместно использовать ту же историю путем добавления этих строк к Вашему ~/.bashrc
:
## history -a causes the last command to be written to the
## history file automatically and history -r imports the history
export PROMPT_COMMAND='history -a;history -r'
я также предлагаю, чтобы Вы добавили это:
## Make Bash append rather than overwrite the history on disk:
shopt -s histappend
Ваша команда работала на меня...
$ cat .bash_history | grep inxi
inxi -b
sudo apt install inxi
inxi -b
inxi -Fxz -c 0 > inxi_list.txt
inxi -Fxz
inxi -Fxz
sudo inxi -Fxz
я также периодически копирую историю в файл и сохраняю ее.
history > history_$(date '+%Y-%m-%d_%H:%M:%S')_$(hostname).txt