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


10

Було б чудово отримати доступ до всіх моїх команд, що виконуються в терміналі на OS X, щоб я міг переглянути і використовувати як запущений аркуш нагадування.

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

  1. Запуск терміналу.

  2. Перейдіть до папки "Головна", ввівши:

    cd ~/
    
  3. Створіть .bash_profile, ввівши:

    touch .bash_profile
    
  4. Тепер відредагуйте .bash_profile у вашому улюбленому текстовому редакторі або введіть це у вікні терміналу, щоб автоматично відкрити файл у текстовому редакторі за замовчуванням:

    open -e .bash_profile
    
  5. Нарешті, додайте це у файл .bash_profile:

    HISTFILESIZE=1000000000 HISTSIZE=1000000
    
  6. Збережіть і вийдіть.

Чи є у вас ідеї, як я можу отримати доступ, щоб вивести історію команд терміналу в OS X?


4
Я припускаю, що ви прочитали man bash, тому ви повинні знати, що історія зберігається у файлі ~/.bash_history. Що ще вам потрібно знати, ви можете уточнити?

Так, тому що я нова команда 'man' існувала, тоді прочитав посібник, знайшов відповідь і вирішив задати вищезазначене питання лише для задоволення. Дякуємо fideli за швидку, чітку та невибагливу відповідь.
Камерон Макгрейн

Відповіді:


6

Уся ваша історія зберігається ~/.bash_history, де використовуються reverse-i-searchі клавіші вгору / вниз. Цей файл регулярно обрізається, але якщо ви дотримуєтесь посібника у своєму посиланні, .bash_historyфайл практично ніколи не буде обрізаний.


Обрізка FIFO чи LIFO?
Pacerier

@Pacerier, я не можу бути повністю впевнений, оскільки більше не використовую macOS, але якщо мені доведеться здогадуватися, обрізка FIFO.
fideli

2

Особисто я хотів би зробити це більш простим способом і надрукувати все , а не перевіряти останню сесію, яка не охоплює всі вікна терміналу та всі команди.

Отримайте повну історію

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

Якщо ви хочете сортувати за датою сеансу

cd ~/.bash_sessions
cat `ls -tr *.historynew *.history`

1

Якщо ви все-таки потребуєте виправлення для цього, ось як я зробив своє. Завдяки цьому я можу ЗБЕРІГАТИ ТА ДОСТУПИТИ історію на всіх вкладках (тобто, якщо ви введете команду на одній вкладці, потім відкрийте нову вкладку і натисніть, вона запропонує команду, яку ви тільки що ввели в попередній вкладці)

Вам знадобляться 2 речі: 1. Введіть цю команду у свій термінал, щоб переконатися, що йогододаток увімкнено:

shopt -s histappend && shopt histappend

2. Вам також потрібно знати, де зберігаються ваші історії історії.

Мої файли історії зберігаються у ~ / .bash_sesions, так що мій код відображатиметься. Якщо ваші зберігаються в ~ / .bash_history або іншому каталозі, просто поміняйте їх на ~ / .bash_sesions, коли ми засилаємо його у наш файл 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  

1
майте на увазі, що біг source ~/.bash_sessions/*.historyвиконує всі команди
panchicore
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.