查找上次应用程序已打开。检查是否超过30天

时间:2016-10-04 22:25:31

标签: bash macos

我正在尝试编写一个脚本,告诉我上次打开特定应用程序(在Mac OSX上)的时间,然后查看它是否超过1个月。

我可以在Mac上使用'mdls'找到多久前。然后我能够找到1个月前的日期,但现在我对如何编写IF语句感到有些困惑。

#!/bin/sh

outlook_last_opened=`mdls "/Applications/Microsoft Office 2011/Microsoft Outlook.app/Contents/MacOS/Microsoft Outlook" -name kMDItemLastUsedDate | awk '{print $3}'`

last_month_day=`date -v -1m '+%Y-%m-%d'`  # Sets the date to 1 month ago

if [[ {???} ]]; then                      # Not sure about this
  echo "Older than 1 month"
else
  echo "Less than 1 month"
fi

2 个答案:

答案 0 :(得分:1)

也许你可以......

[[ $(( $(date -d"$outlook_last_opened" +%s) - $(date -d"$last_month_day" +%s) )) -gt 0 ]]

但我不知道......我使用的是GNU / Linux,而不是OSX

答案 1 :(得分:1)

考虑这个bash函数,它会将YYYY-MM-DD日期转换为自纪元以来的时间戳(它将保留当前时间):

date_to_timestamp() { date -j -f '%Y-%m-%d' "$1" '+%s'; }

然后,您可以转换2个值并进行比较:

if [ $(date_to_timestamp $outlook_last_opened) -lt $(date_to_timestamp $last_month_day) ]; then
  echo "Older than 1 month"
else
  echo "Less than 1 month"
fi