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

23

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

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

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

Эдвард Тангей
источник
2
Насколько я знаю , вы не можете. Вы можете только вернуться, насколько буфер истории был установлен. Если вы спрашиваете о том, что пакет , который вы можете установить на неопределенное время сохранить историю команды в будущем, возможно , вам следует пересмотреть свой вопрос.
RobotHumans

Ответы:

26

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

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

/home/<YOUR_USERNAME>/.bash_history

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

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

Web-E
источник
3
Это не правда , что история сохраняется только от одного терминала / оболочки. При запуске historyон отображает историю текущей оболочки как самую последнюю, а также историю всех других оболочек (включая оболочки предыдущих сессий, включая циклы питания) до этого. Все экземпляры оболочки сохраняют свою историю до .bash_historyвыхода. Ни один экземпляр не сохраняет его там автоматически до этого момента.
Eliah Каган
6

По умолчанию, нет места , где все команды записываются и хранятся на неопределенный срок, хотя ~/.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}содержит команду в настоящее время выполняется.

Ричард Хансен
источник
Я хотел бы отметить, что в macOS этот метод также регистрирует update_terminal_cwdфайл истории, который является командой, которую пользователь не запускает, но запускает автоматически.
Ashish Ахаджа
5

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

http://www.ice2o.com/bash_quick_ref.html

Sepero
источник
4

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

export HISTSIZE=1000

источник