Прочитайте всю историю команд терминала в OS X

10

Было бы здорово получить доступ ко всем моим командам, запущенным в терминале на OS X, чтобы я мог просмотреть и использовать в качестве рабочего листа напоминания.

Я использую приглашение Reverse-I-Search и обновил свой .bash_profile, чтобы хранить всю мою историю, как упомянуто здесь на Mactoids: Как искать историю команд терминала .

  1. Запустить Терминал.

  2. Перейдите в домашнюю папку, введя:

    cd ~/
    
  3. Создайте .bash_profile, введя:

    touch .bash_profile
    
  4. Теперь либо отредактируйте файл .bash_profile в своем любимом текстовом редакторе, либо введите его в окне терминала, чтобы автоматически открыть файл в TextEdit по умолчанию:

    open -e .bash_profile
    
  5. Наконец, добавьте это в файл .bash_profile:

    HISTFILESIZE=1000000000 HISTSIZE=1000000
    
  6. Сохранить и выйти.

У вас есть какие-либо идеи, как я мог бы получить доступ для вывода истории команды терминала в OS X?

Кэмерон Макгрейн
источник
4
Я предполагаю, что вы прочитали man bash, поэтому вы должны знать, что история хранится в файле ~/.bash_history. Что еще нужно знать, можете уточнить?
Да, поскольку у меня появилась новая команда 'man', я прочитал руководство, нашел ответ и решил задать вопрос выше просто для удовольствия. Спасибо Фидели за быстрый, понятный и незатейливый ответ.
Кэмерон Макгрейн

Ответы:

6

Вся ваша история хранится там ~/.bash_history, где reverse-i-searchиспользуются клавиши вверх и вниз. Этот файл регулярно удаляется, но если вы следовали руководству в своей ссылке, .bash_historyфайл практически никогда не удалится.

fideli
источник
FIFO или LIFO обрезка?
Pacerier
@Pacerier, я не могу быть полностью уверен, поскольку я больше не использую macOS, но, если бы мне пришлось угадывать, обрезка FIFO.
Фидели
2

Лично я предпочел бы сделать это проще и распечатать все , а не проверять последний сеанс, который не охватывает все окна терминала и все команды.

Получить полную историю

cd ~/.bash_sessions
cat *.historynew *.history

Если вы хотите отсортировать по дате сеанса

cd ~/.bash_sessions
cat `ls -tr *.historynew *.history`
laimison
источник
1

Если вам все еще нужно исправить это, вот как я это сделал. Благодаря этому я могу СОХРАНИТЬ И ДОСТУПАТЬ историю на всех вкладках (т.е. если вы введете команду на одной вкладке, затем откроете новую вкладку и нажмете вверх, она предложит команду, которую вы только что ввели на предыдущей вкладке)

Вам понадобятся 2 вещи: 1. Введите эту команду в своем терминале, чтобы убедиться, что histappend включен:

shopt -s histappend && shopt histappend

2. Вам также необходимо знать, где хранятся ваши команды истории.

Мои файлы истории хранятся в ~ / .bash_sessions, так что это будет отражать мой код. Если ваши файлы хранятся в ~ / .bash_history или другом каталоге, просто замените их на ~ / .bash_sessions, когда мы добавим их в наш bash_profile.

Как только вы поняли это, откройте ваш bash_profile и добавьте следующий код:

source ~/.bash_sessions/*.history        #<--sources prev sessions through your bash_profile. If you don't use ~/.bash_sessions to store your history, replace it with whatever you use (i.e. source ~/.bash_history/*.history

export HISTCONTROL=ignoredups:erasedups #<-- auto-erases duplicates in your history
export HISTSIZE=1000                    #<-- assigns # of results to return
export HISTFILESIZE=100000              #<-- assigns # of results to store in your .bash_history
shopt -s histappend                     #<-- appends & saves history throughout all tabs

export PROMPT_COMMAND="history -a; history -c; history -r; $PROMPT_COMMAND"  <--appends history from all tabs, clears & uses appended history file as current  
sharpharp
источник
1
имейте source ~/.bash_sessions/*.historyв
виду,