Відповіді:
history
Вбудований bash
дозволяє вказати імена файлів при використанні -anrw
прапорів і -a
опис прапора з help history
станів:
додайте рядки історії з цього сеансу до файлу історії
Тому ми можемо:
~$ history -a this_session.history
~$ cat ./this_session.history
history mysession.history
cat mysession.history
clear
history -a this_session.history
Для запису -w
(історія запису до файлу opion) записує всю історію у вказаний файл, тому -a
(додавати) тут кращий вибір.
Є й інші ручні способи. Зокрема , ksh
не має -a
прапор , як bash
робить, але то , що ksh
і mksh
є це HISTFILE
змінна оточення (і bash
має , що теж, тому що bash
включено безліч ksh
функцій); до речі, ця змінна за замовчуванням не встановлена (принаймні mksh
в Ubuntu її не встановлювали). Отже, для виведення поточного сеансу в інший файл, ми викликаємо попередньо HISTFILE
команду, яка в синтаксисі оболонки означає виконання команди з додатковою змінною середовища, яку ви вказуєте. Так:
bash-4.4$ HISTFILE='mykshfile.hist' ksh
$ echo 'Hello'
Hello
$ echo 'World'
World
$
bash-4.4$ cat ./mykshfile.hist
�echo 'Hello'
echo 'World'
Що ви також можете бачити з цього, це те, що ksh
і пов'язані з ним оболонки виводять історію зі спеціальними символами, а не простим текстом, як це bash
робить. Отже, ви можете відкрити цей файл за допомогою ksh
.
Що стосується оболонки POSIX /bin/sh
на Ubuntu , яка є Debian Almquist Shell або Dash, існує fc
вбудована . Тим НЕ менше, на Ubuntu тире компілюється без Lib-редагування , який є свідомим вибором розробниками Ubuntu для підвищення продуктивності, так fc
і інші режими , які потребують редагування рядка не працюють з коробки (якщо перекомпіляція dash
собі і встановити lib-edit
).
Нейтральними способами оболонки є записування сеансу наявними інструментами або написання власної функції для запису на основі команди.