Вопрос или проблема
Я использую Korn 93u+ и хочу выводить текущее время каждый раз, когда ввожу команду. В настоящее время я просто вставляю время в PS1, но это явно flawed, потому что, если я оставлю командную строку на некоторое время, у меня будет устаревшая метка времени. Мне бы хотелось, чтобы операция выполнялась после нажатия Enter, например:
$ ls -a1
Running at 2025-01-08 14:25:30.
.
..
dummy_dir_1
dummy_dir_2
$
Есть ли способ настроить это в конфигурации?
Ответ или решение
Вопрос, как добавлять временной штамп в вывод каждого выполненного в ksh (KornShell) пользователем команды, предлагает интересную задачу. Задача заключается в том, чтобы обеспечить актуальную метку времени непосредственно после того, как команда была выполнена, а не до её запуска, как это происходит в случае использования временной метки в PS1.
Чтобы решить эту задачу, мы можем воспользоваться функциональными возможностями KornShell. Вот пошаговое руководство, как это можно реализовать:
-
Использование переменной
PS1
: Хотя изначально вы использовали переменнуюPS1
для указания времени, мы стремимся устранить её недостатки, такие как потеря актуальности временной метки. -
Создание алиаса для отображения времени перед выводом команды: Используйте функции KornShell для создания специальной функции, которая будет отображать время после выполнения команды.
-
Оверрайд встроенной команды: Можно переопределить стандартное поведение встроенных команд, используя пользовательские функции оболочки.
Вот примерный скрипт конфигурации, который может быть добавлен в ваш файл окружения, например, .kshrc
:
# Создаём функцию для вывода времени после команды
function execute_with_timestamp {
# Запускаем команду
"$@"
# Выводим текущую дату и время
echo "Running at $(date '+%Y-%m-%d %H:%M:%S')."
}
# Перехватываем команды
alias ls='execute_with_timestamp ls'
alias other_command='execute_with_timestamp other_command'
-
Обработка различных команд: Вам предстоит создать алиасы или функции для каждой команды, для которой необходимо выводить временную метку. Это требует некоторой настройки, но предоставит гибкость и разносторонность.
-
Тестирование: После выполнения указанных настроек вам следует протестировать оболочку, чтобы убедиться, что временные метки выводятся корректно после каждой команды.
Этот метод повышает эффективность и качество работы, позволяя точно контролировать временные метки и обеспечивая их актуальность. Это решение ориентировано на вашу текущую версию KornShell и адаптировано для реализации в вашем рабочем окружении.
Подобный подход способствует повышению производительности и эффективности рабочих процессов, обеспечивая релевантность выводимой информации в реальном времени.