Я пытаюсь выполнить команду и хотел бы указать дату и время в имени выходного файла.
Вот пример команды, которую я хотел бы выполнить.
md5sum /etc/mtab > 2016_4_25_10_30_AM.log
Формат даты и времени может быть чем угодно с подчеркиванием. Даже UTC, если AM и PM не могут быть использованы.
Ответы:
Если вы хотите использовать текущую дату и время в качестве имени файла, вы можете использовать
date
и команду подстановки .Это приводит к тому, что файл
2016_04_25_10_30_AM.log
(хотя и с текущей датой-временем) создается с хэшем md5 в/etc/mtab
качестве его содержимого.Обратите внимание, что имена файлов, содержащие метки времени в 12-часовом формате, вероятно, будут сортироваться не так, как вы хотите. Вы можете избежать этой проблемы, используя вместо этого временные метки в 24-часовом формате.
Если у вас нет требования использовать этот конкретный формат даты, вы можете рассмотреть возможность использования формата даты-времени, совместимого с ISO 8601. Некоторые примеры того, как генерировать действительные представления даты и времени ISO 8601, включают:
Если вы хотите «более безопасные» имена файлов (например, для совместимости с Windows), вы можете опустить двоеточия из временной части.
Помните, что все приведенные выше примеры предполагают местное системное время. Если вам нужно представление времени, которое согласовано между часовыми поясами, вы должны указать смещение часового пояса или UTC. Вы можете получить смещение часового пояса, совместимое с ISO 8601, используя «% z» в части форматирования вашего
date
вызова, например:Вы можете получить время UTC в своем
date
вызове, указав-u
флаг и добавив «Z» в конец строки даты и времени, чтобы указать, что время указано в формате UTC, например:источник
$(date +%FT%T)
который даст2016-04-25T10:30:00
.