Здесь мы запускаем IBM AIX (в настоящее время 7100-03-03-1415), в котором отсутствует значительная часть предустановок утилиты в других версиях UNIX. Одна из вещей, которые нам нужно делать на полурегулярной основе, - это преобразовывать время эпохи в стандартную метку времени. Чтобы решить эту проблему, я создал эту функцию и поместил ее в /etc/profile
:
## Functions that are useful enough to be inherited by everyone ##
# Prints timestamp from epoch time
epoch() {
if [ $# -eq 1 ] ; then
SECONDS="$1"
elif [ -t 0 ] || [ $# -gt 1 ] ; then
echo "Usage: epoch <timestamp>"
return 127
else
read SECONDS
fi
perl -e 'print scalar localtime $ARGV[0],"\n"' $SECONDS
return 0
}
Функция принимает аргумент или читает из stdin
и печатает преобразованную метку времени.
После того как эта функция была передана во все наши LPAR для использования повсеместно, я заметил, что текст функции появляется в каждом пользовательском .sh_history
после появления новой оболочки:
ls -la
ssh localhost
if [ $# -eq 1 ] ; then
SECONDS="$1"
elif [ -t 0 ] || [ $# -gt 1 ] ; then
echo "Usage: epoch <timestamp>"
return 127
else
read SECONDS
fi
perl -e 'print scalar localtime $ARGV[0],"\n"' $SECONDS
return 0
}
cat .sh_history
Я никогда раньше не видел ничего подобного. Это не влияет на производство или время безотказной работы, так что это скорее любопытство, чем что-либо еще. Очевидно, что функция считывается при загрузке оболочки пользователя, но что заставило бы ее распечатать в истории оболочки?
Отредактировано для добавления: В настоящее время используется версия ksh M-11/16 / 88f.
Это на самом деле предполагаемое поведение; ksh автоматически записывает все определения функций в файл истории.
Этот параметр можно отключить с помощью параметра «nolog»: set -o nolog