如何在shell中获得前几天的日期



我有一个命令,它给出了前几天的日期:

date -d '-1 day' '+%Y%d%m'

相同的命令在AIX系统中运行时会出现错误。

"-d无法识别标志"

下面的命令正在运行,给出当前日期AIX系统。

date -u +%Y%d%m

但下面的命令给出错误为"1是不可识别的标志"

date -u '-1 day' +%Y%d%m

如何在AIX中获取前几天日期。

date是一个程序,而不是shell的内置命令。所以不管使用什么shell,它都可以工作。

falsetru@ubuntu:~$ bash
falsetru@ubuntu:~$ date -d '-1 day' '+%Y%d%m'
20142103
falsetru@ubuntu:~$ ksh
$ date -d '-1 day' '+%Y%d%m'
20142103
$ type date
date is a tracked alias for /bin/date

操作时区可以将时钟更改几个小时。一个额外的复杂性是日光节约时间。由于实行夏令时,24小时前可以是今天也可以是前天。

你确定昨天是20或30小时前。哪一个?最近的一次不是今天。

echo "$(TZ=GMT+30 date +%Y-%m-%d)n$(TZ=GMT+20 date +%Y-%m-%d)" | grep -v $(date +%Y-%m-%d) | tail -1

以上命令用于ksh。使用bash时,需要echo -e:

echo -e "$(TZ=GMT+30 date +%Y-%m-%d)n$(TZ=GMT+20 date +%Y-%m-%d)" | grep -v $(date +%Y-%m-%d) | tail -1

date -dGNU主义,因此在非GNU实现中不可用,如香草AIX date。但是,您可以在GNU date附带的AIX上安装coreutils(下载链接在这里)。

最新更新