Я хотел бы создать журнал всех команд, набранных в терминале

Я хотел бы иметь журнал всех команд, которые набираются на терминале.

У меня есть проверка «скрипт», но это создает файл с командами и отвечает все вместе. Есть ли способ иметь только команды?

5
задан 24 January 2011 в 19:22

5 ответов

Все, что пользователь вводит в терминал вручную, сохраняется в ~/.bash_history, где ~ является сокращением для текущего зарегистрированного в домашнем каталоге пользователя. Также обратите внимание, что файлы, начинающиеся с ., являются скрытыми; в Nautilus вы можете показать их, нажав Ctrl + H .

Взгляните на это, набрав

cat .bash_history

Чтобы просмотреть свою историю, снабженную последовательными номерами, введите

history

Вы можете снова выполнить команды, которые видите там, набрав [ 115], например, который будет выполнять команду номер 2129, как показано командой history.

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

Небольшая часть интересной информации:

  • Команды, начинающиеся с пробела, не сохраняются в .bash_history. Если вы запускаете команду, подобную rm -R mydir/, вы можете поставить перед ней пробел, чтобы предотвратить ее случайный запуск, нажав стрелку вверх.

Как говорит Жоао, размер сохраненной истории можно контролировать с помощью export HISTFILESIZE=5000.

0
ответ дан 24 January 2011 в 19:22

Если вы используете оболочки defaullt, все команды уже записаны в $ HOME / .bash_history. Существует несколько переменных среды, которые влияют на сохранение истории, вы можете прочитать о них с помощью:

info bash
Type: / HIST

Если вы хотите применить настройку ко всем пользователям, отредактируйте /etc/profile.

Пример:

export HISTFILESIZE=5000
0
ответ дан 24 January 2011 в 19:22

Если вы хотите получить журнал всех команд, которые вы запускаете в интерактивной оболочке, см. BashFAQ 88 - Как избежать потери строк истории?

0
ответ дан 24 January 2011 в 19:22

Вы также можете использовать CTRL + R в терминале для поиска своей истории.

  1. CTRL + R
  2. введите условия поиска (например, введите 'sudo apt-get')
  3. нажмите < kbd> CTRL + R для циклического перехода по каждому совпадению
0
ответ дан 24 January 2011 в 19:22

Я записал функцию для этого:

function begin_install_log() {
if [ $# -eq 0 ]
then
    echo "No arguments supplied"
    HIST_NUM=""
else
    HIST_NUM=$(history|tail -n 1|awk '{ print $1  }')
    HIST_NUM=$((HIST_NUM + 2))
    OUTPUT_FILE=$HOME/environment/ansible/.install_cache/${1}
fi
}
function capture_install_log() {
if [ ! $HIST_NUM ]
then
    echo "run 'begin_install_log' first"
else
    history|grep -A999 $HIST_NUM|awk '{$1=""; print $0}' >> $OUTPUT_FILE
    HIST_NUM=""
fi

Использование:

$ begin_install_log some_file_name
$ blah
$ blah
$ blah
$ capture_install_log

Необходимо будет, конечно, заменить переменную OUTPUT_FILE для удовлетворения потребностям.

Удачи!

0
ответ дан 24 January 2011 в 19:22

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

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