Пустая строка в моей баш.истории?
Я смотрел на мой .bash_history
и я нашел пустую строку. Я думал, что мог нажать "Ввод", пока просматривал файл.
Это нормально? Или, может быть, я действительно нажал Enter, когда просматривал файл на gedit?
РЕДАКТИРОВАТЬ: Только что обнаружил сегодня, что у меня более одного разрыва строки. Странно, я никогда не редактирую файл.bash_history.
3 ответа
Это не проблема, это не опасно и совершенно нормально. Вы можете получить такие строки, если вы несколько раз нажмете пробел, а затем нажмете Enter. Это будет сохранено в вашей истории (поскольку это непустая строка, пробелы - это символы, невидимые).
Чтобы проверить это, мы можем использовать команду, которая печатает пустые строки в истории bash. Например, это grep
будет соответствовать всем строкам, которые начинаются с цифр, а затем имеют 0 или более пробелов (пробелы или табуляции или что-либо еще) и ничего больше до конца строки:
history | grep -P '^\s*\d+\s*$'
Это должно показать вам список пустых команд, которые вы выполнили. Теперь бегите (первая строка означает несколько раз пробить, затем введите)
$ echo foo
foo
$
$ history | tail -n 3
$ history | tail -n 3
80 echo foo
81 ## this is the blank line
82 history | tail -n 3
Вы заметите, что у вас есть новая пустая строка. В заключение не волнуйтесь. все хорошо и это нормально.
Как упомянул тердон, это, скорее всего, только пробельные строки.
Существуют две опции переменных среды, которые определяют, будут ли строки пробелов сохраняться в истории:
HISTCONTROL
: если оно содержитignorespace
, тогда любая строка, начинающаяся с пробела, игнорируется.HISTIGNORE
: список разделенных двоеточиями списков игнорируемых. Например, если он содержит:HISTIGNORE=' *'
тогда строки, начинающиеся с одного пробела, будут игнорироваться.
Я не смог заставить bash хранить действительно пустые строки без пробелов.
Вот объяснение того, как пустые строки могут появляться в .bash_history
файл.
Вкратце:
Если вы вызываете из истории командную строку, которую вы на самом деле набрали ранее в том же текущем сеансе терминала, а затем редактируете ее (возможно, удаляете), но затем прерываете редактирование, оставляя эту (историю) командную строку, используя, например,
Down
стрелка, чтобы вернуться к подсказке текущей текущей командной строки, затем, когда вы позже выйдете из терминала, изменения будут записаны в файл.bash_history.