Строка трубы для GNU Дата для преобразования - как сделать ее прочитанной из stdin?

GNU Date позволяет конвертировать строки даты следующим образом:

$ date +"%d %m %Y" -d "yesterday"
  04 01 2012

Можно ли связать строку даты с ней для преобразования? Я пробовал очевидный -d - следующим образом:

$ echo "yesterday" | date +"%d %m %Y" -d -

но сегодня он печатает дату вместо вчерашнего дня.

Можно ли передавать ему значения или не поддерживает это?

Спасибо.

Ответ 1

Да.

 echo "yesterday" | xargs date +"%d %m %Y" -d

Ответ 2

date -f сообщает ему делать то же самое, что и -d, за исключением каждой строки в файле... вы можете установить имя файла на "-", чтобы прочитать его со стандартного ввода.

echo "yesterday" | date +"%d %m %Y" -f -

Ответ 3

Вы можете использовать замену `command` или $(command):

date +"%d %m %Y" -d $(echo "yesterday")

Ответ 4

Просто, чтобы бросить его, в bash:

date +"%d %m %Y" -f <(echo yesterday)