Відповіді:
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).
Нейтральними способами оболонки є записування сеансу наявними інструментами або написання власної функції для запису на основі команди.