Как найти историю команд оболочки с момента создания машины?

17

Я создал виртуальную машину Ubuntu пару недель назад и с тех пор работал над проектами.

Теперь я хотел бы найти синтаксис некоторых команд, которые я ввел в терминал неделю назад, но я открыл и закрыл окно терминала и перезапустил машину несколько раз.

Как я могу заставить команду history вернуться к первой команде, которую я набрал после создания машины?
Или есть другое место, где все команды хранятся в Ubuntu?

    
задан Edward Tanguay 07.07.2012 в 06:16
источник

4 ответа

23

Может быть или не удастся получить все команды. Это зависит от того, сколько команд вы выполнили и как был установлен предел истории.

Однако вы можете увидеть, что список истории хранится здесь.

/home/<YOUR_USERNAME>/.bash_history

Связанный с этим вопрос (для обработки нескольких истории оболочек):

Можно ли писать в .bash_history? немедленные?

    
ответ дан Web-E 07.07.2012 в 07:20
6

Что-то, что может вас заинтересовать, - это поиск предыдущей истории команд. Вы можете отменить поиск своей истории в командной строке, нажав Ctrl+r , а затем набрав буквы, которые вы хотите сопоставить. Если у вас есть несколько совпадающих команд, снова нажмите Ctrl+r . Чтобы выйти из обратного поиска, нажмите Ctrl+g .

Ссылка

    
ответ дан Sepero 07.07.2012 в 08:33
4

По умолчанию нет места, где все команды записываются и сохраняются на неопределенный срок, хотя ~/.bash_history содержит последние несколько команд (если вы используете bash , которая является оболочкой по умолчанию в Ubuntu).

Если вам нужна команда каждая , введенная в bash , записанная навсегда , вы должны настроить ее самостоятельно. Например, вы можете поместить в файл ~/.bashrc следующее: чтобы записать все команды, введенные в оболочку bash , в файл ~/.command_log :

# log every command typed and when
if [ -n "${BASH_VERSION}" ]; then
    trap "caller >/dev/null || \
printf '%s\n' \"$(date '+%Y-%m-%dT%H:%M:%S%z')\
 $(tty) ${BASH_COMMAND}\" 2>/dev/null >>~/.command_log" DEBUG
fi

Вышеуказанная функция устанавливает ловушку на DEBUG , которая выполняется непосредственно перед выполнением обычной команды. Встроенный caller используется для проверки того, вводится ли команда в интерактивной оболочке или выполняется через нечто вроде ~/.bashrc . Значение ${BASH_COMMAND} содержит команду, выполняемую в настоящий момент.     

ответ дан Richard Hansen 12.07.2012 в 02:22
3

Вы можете вернуться только в том случае, если установлен лимит истории; как только он достигнет этого момента, история начнет перезаписываться. Однако в будущем возможно иметь больший размер истории. Поместите это в свой .bashrc и укажите значение (мой установлен на 1000):

export HISTSIZE=1000
    
ответ дан user76204 10.07.2012 в 19:35