Я создал виртуальную машину с Ubuntu пару недель назад и с тех пор работаю над проектами.
Теперь я хотел бы найти синтаксис некоторых команд, которые я набрал в терминале неделю назад, но я открывал и закрывал окно терминала и многократно перезагружал машину.
Как мне получить команду history
, чтобы вернуться к первой команде, которую я набрал после создания машины?
Или есть другое место, где хранятся все команды в Ubuntu?
По умолчанию нет места, где все команды записываются и хранятся неопределенно долго, хотя ~/.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}
содержит команду, выполняемую в данный момент.
Может быть или не быть возможным получить все команды. Это зависит от того, сколько команд вы выполнили и как был установлен предел истории.
Однако вы можете видеть, что список истории хранится здесь
/home/<YOUR_USERNAME>/.bash_history
Смежный вопрос (для обработки истории нескольких оболочек):
Вы можете вернуться, только если ваш предел истории установлен; как только он достигнет этой точки, история начнет перезаписываться. Тем не менее, возможно иметь больший размер истории на будущее. Поместите это в ваш .bashrc и укажите значение (у меня установлено 1000):
export HISTSIZE=1000
Кое-что, что также может вас заинтересовать, - это поиск в вашей предыдущей истории команд. Вы можете выполнить обратный поиск в своей истории в командной строке, нажав Ctrl+r
, а затем набрав буквы, которые вы хотите сопоставить. Если у вас более одной совпадающей команды, нажмите Ctrl+r
еще раз. Чтобы выйти из обратного поиска, нажмите Ctrl+g
.