Нерідко адміністраторам серверів, що працюють під керуванням Linux-подібних операційних систем, потрібна інформація про точний час запуску тієї чи іншої команди, виконаної в системі нещодавно. І хоча стандартні засоби керування командною оболонкою Bash передбачають наявність функції виводу списку останніх виконаних команд, відображення дати й часу їх виконання за замовчуванням вимкнене.
Тому необхідно спеціально активувати часову позначку, щоб ця інформація з’являлася разом зі списком команд. Зробити це можна різними способами. Розглянемо це питання детальніше на конкретних прикладах.
Можливості функції history командного інтерпретатора Bash
Функція history належить до числа вбудованих засобів оболонки і, відповідно, виконується набагато швидше за свої зовнішні аналоги. Вона «запам’ятовує» приблизно одну тисячу останніх введених користувачем команд, список яких зазвичай зберігається у файлі .bash_history у домашньому каталозі поточного користувача.
Для прикладу введемо її в командному рядку Bash нашої системи Ubuntu, щоб переглянути список останніх виконаних команд:
$ history

Як бачимо, функція дійсно здатна зберігати кілька сотень команд. У нашому випадку їх кількість становила 394. Усі вони були запущені поточним користувачем, починаючи з першого запуску системи.
Однак, як і передбачалося, час їх виконання не відображається.
Існує два способи ввімкнення часової позначки:
- Тимчасовий — діє лише протягом поточного сеансу користувача.
- Постійний — потребує зміни конфігураційних файлів, завдяки чому часова позначка автоматично вмикається під час кожного запуску системи.
Розглянемо обидва способи окремо.
Тимчасове ввімкнення функції виведення дати та часу виконання команд
Тут потрібно скористатися внутрішніми можливостями оболонки, які дозволяють експортувати значення змінної середовища HISTTIMEFORMAT, щоб зробити їх доступними для інших процесів.
Команда для експорту виглядає так:
$ export HISTTIMEFORMAT='%d/%m/%y %T'
де
- %d/%m/%y — формат дати (дд/мм/рр),
- %T — формат часу (гг:хв:сс).

Перевіримо результат за допомогою команди history:
$ history

Можна переконатися, що формат виводу змінився — тепер доступна інформація про дату й час виконання команд, чого ми й добивалися.
Проте важливо зазначити один момент: дата й час почали відображатися лише для останніх введених команд. Для всіх попередніх зафіксовано однаковий час — момент виконання останньої команди до активації часової позначки (exit).
Це пов’язано з тим, що ті команди належать до попереднього сеансу роботи користувача, коли позначка часу ще не була активована. Для всіх команд поточного сеансу дата й час відображаються коректно.
389 28/11/23 14:48:11 ls
390 28/11/23 14:48:11 cd root
391 28/11/23 14:48:11 exit
392 28/11/23 14:48:11 nano .config/syncthing/config.xml
393 28/11/23 14:48:11 exit
394 28/11/23 14:48:11 history
395 28/11/23 14:48:11 exit
396 28/11/23 14:52:48 export HISTTIMEFORMAT='%d/%m/%y %T'
397 28/11/23 14:55:20 history
Звісно, формат відображення дати та часу можна змінювати на власний розсуд.
Наприклад, щоб дата виводилась у форматі рррр/мм/дд, команда матиме такий вигляд:
$ export HISTTIMEFORMAT='%F %T'

Перевіримо:
$ history

Отримали очікуваний результат.
Увімкнення часової позначки в автоматичному режимі
У цьому випадку ініціалізація змінної HISTTIMEFORMAT відбуватиметься автоматично під час кожного запуску системи. Очевидно, це найзручніший варіант для адміністратора.
Для реалізації такого режиму потрібно відредагувати файл сценарію .bashrc, який містить налаштування для термінальної сесії. Файл розташований у домашньому каталозі користувача та виконується кожного разу під час входу в систему.
Відредагуємо зазначений файл, ввівши в терміналі:
$ nano ~/.bashrc

У нижній частині файлу додамо рядок:
export HISTTIMEFORMAT='%F %T'
Збережемо зміни та вийдемо з редактора (Ctrl + X).
Слід мати на увазі, що автоматичне ввімкнення часової позначки діятиме лише для того користувача, у чиєму сеансі її було налаштовано. Для інших користувачів система не застосує цю зміну.
Щоб зробити це для всіх користувачів, потрібно відредагувати загальносистемний файл, який керує встановленням змінних середовища Bash за замовчуванням:
$ nano /etc/profile

У кінці файлу додамо той самий рядок, що й у попередньому випадку:
export HISTTIMEFORMAT='%F %T'
Після збереження змін повертаємося в термінал. Внесені зміни набудуть чинності відразу після перезапуску зміненого файлу за допомогою команди:
$ source ~/.bashrc
або, для системного файлу:
$ source /etc/profile
