Как представить формат даты в '2015120' в оболочке Linux?

unix domain sockets намеренно присутствуют для сокращения транспорта наверху. они позволяют обмениваться данными между приложениями и таким образом связанный с прикладным уровнем в [tcp/ip model][1]. Нет никакой потребности в транспортном протоколе для обеспечения упорядочивания, надежности или управления потоком. Вам не нужен уровень сетевого доступа, поскольку получатель передачи сообщений является процессом в той же машине.

5
20.01.2015, 10:46
3 ответа

С реализацией GNU, FreeBSD или OS/X дата (или дата, которая использует системную libc strftime(), где это GNU libc), добавление дефиса - после % предотвращает добавление нулей в числовые поля:

$ date +'%Y%-m%d'
2015120

после - в системе GNU:

по умолчанию цифровые поля датируются нулями. Следующее опциональные флаги могут следовать за `%':

- (дефис) не загораживайте поле

Если ваша система дата не поддерживает это, вы можете использовать perl:

$ perl -MTime::Piece -e '
  $t = localtime;
  print $t->year, $t->mon, $t->mday;
'
2015122
23
27.01.2020, 20:31

Если вы добавите один (1) после дефиса (-), он работает на Linux и также портативно к HP-UX (и, возможно, другие вкусы Unix):

$ date +'%Y%-1m%d'
2015120
2
27.01.2020, 20:31
> date +'%Y %m %d' | ( read year month day; echo "${year}${month#0}${day}" )
2015120
4
27.01.2020, 20:31

Теги

Похожие вопросы