історія баш для поточної сесії


15

Можливо, я щось пропускаю, але чи є спосіб отримати вашу поточну історію баш для поточного сеансу, який ви використовуєте як

якщо я біжу

ssh host
$ pwd
$ ls
$ cd /tmp

Я просто хочу побачити ці 3 команди і більше нічого


Ви перевірили historyкоманду ??
Хакаголік

я знаю про це, historyале це не дає лише мого сеансу
Майк

Сума, що зберігається між сеансами, контролюється змінною оболонки SAVEHIST, якщо я пам'ятаю. Таким чином, якщо історія, яку ви зберегли минулого разу, була ZERO, то ви отримаєте історію для поточного сеансу оболонки (але, звичайно, не на нижчих рівнях)
mdpc

@mdpc, які документи ти читаєш? На сторінці "Bash man" я не знайшов посилання на SAVEHIST, а лише на HISTSIZEта HISTFILESIZE.
Wildcard

Відповіді:


15

Трохи круговим способом:

history -a ~/current_history

Це збереже історію незбереженого поточного сеансу поточного сеансу ~/current_history, яку ви зможете переглянути.


це може працювати, але не обробляє декілька сеансів. Я вважаю, що я можу створити випадковий тимчасовий файл для його збереження
Майк

1
@Mike може використовувати ім'я, пов'язане з PID оболонки, можливо ~/$$_history.
муру

4
Варто зазначити, що це не очистить історію і ніяк не вплине на нормальне збереження історії! Я не був впевнений, поки не перевірив це. :)
NHDaly

Мені здається, зручніше просто робити history -aце, коли він кидає його разом з попередньою історією в ~ / .bash_history ... що може бути проблемою, якщо ваша історія довше, ніж обрізання, що становить 1000 на моїх системах centos7 та fedora 24.
Рей Фосс

0

У мене виникла проблема, що я хотів записати поточний файлhistory у файл, але все ж хотів, щоб записи записувалися в основний башhistory

Я вирішив це, просто приєднавши файл із cat:

history -a current-history
cat current-history >> .bash_history

-1

Використовуйте compдля порівняння всієї історії (включаючи поточний сеанс Bash) з уже збереженою історією в .bash_historyі друкуйте лише ті рядки, які є унікальними для поточного сеансу - які повинні показувати лише ті команди, які були виконані з моменту запуску поточної оболонки Bash

comm -23 <( history | cut -c 8- ) ~/.bash_history

Редагувати: як зазначав @Wildcard, ця команда працює не для всіх дистрибутивів comm. Я тестував це на Mac OS.

Варіант тієї ж ідеї з використанням diff:

diff <( history | cut -c 8- ) ~/.bash_history | sed -n 's/^< //pg'

Гарна думка, але дуже ненадійна в моїх тестах. commпередбачає відсортований вхід. Але, ласкаво просимо до Stack Exchange! :)
Wildcard

@Wildcard, обидві сторони вхідних даних commвідсортовані в моєму прикладі вище. Ти це запустив? І це не створило вашої поточної історії сесій Bash?
Крістіан Каднер

Так, я і ні, і ні. І немає, вміст ~/.bash_historyбуде НЕ відсортований; а також не historyвідсортований вихід взагалі після вилучення провідних номерів рядків. (Крім того, commочікує лексикографічно відсортований ввід, а не впорядкований за цифрами.)
Wildcard

Правильно, я мав на увазі, що обидва аргументи commкоманди в моєму прикладі є в одному порядку, не те, що вони сортуються лексикографічно. Версія FreeBSD commне вимагає лексикографічно відсортованого введення
Крістіан Каднер

Я використовую Mac OS X. Це не має нічого спільного. Приблизившись, здається, що це ранні команди з історії пам'яті, які з тих пір були перезаписані у файл історії іншими оболонками, що виходять.
Wildcard
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.