Половина истории удара отсутствует

Другая ночь я читал Вопросы и ответы AU и использовал команду удара:

inxi -????

Проблема сегодня, я не помню символов, включающих????. Я хочу поместить команду и параметры в мою электронную таблицу документации. На основе этого ответа (Как вспомнить историю в teminal) я использовал эту команду:

$ cat .bash_history | grep inxi
inxi -b
sudo apt install inxi
inxi -b

Однако команда, которую я хочу, не там даже при том, что история идет далеко назад. Я использовал inxi команды много раз в терминале начиная с той старой истории, но ни один из не обнаруживается.

Я также попробовал Ctrl+R+inxi без любой удачи. Поскольку я открываюсь, несколько окон терминала все время история, связанная с определенным окном?

Есть ли другой путь к grep файл (файлы) истории удара?

Обратите внимание, что я не снабжаю префиксом терминальные команды клавишу "Пробел", таким образом, что они подавляются из истории.

6
задан 13 April 2017 в 05:24

2 ответа

Я не могу знать то, что произошло без доступа к Вашей машине, но здесь является коротким объяснением того, как системные работы истории, которые могли бы помочь Вам выяснить то, что произошло.

Каждый открытый терминал имеет свой собственный буфер истории. Эти буферы добавляются к Вашему $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
6
ответ дан 23 November 2019 в 07:37

Ваша команда работала на меня...

$ 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
2
ответ дан 23 November 2019 в 07:37

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

Похожие вопросы: