Найти время последнего открытия приложения. Проверьте, не старше 30 дней

#bash #macos

#bash #macos

Вопрос:

Я пытаюсь написать скрипт, который сообщает мне, когда в последний раз открывалось конкретное приложение (на Mac OSX), а затем посмотреть, прошло ли оно дольше 1 месяца.

Я могу узнать, как давно, используя «mdls» на Mac. И тогда я могу найти дату, которая была 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
  

Комментарии:

1. Можете ли вы также предоставить формат outlook_last_opened , чтобы те из нас, кто работает в Linux, также могли попытаться помочь?

Ответ №1:

Рассмотрим эту функцию bash, которая преобразует дату ГГГГ-ММ-ДД во временную метку начиная с эпохи (она сохранит текущее время суток):

 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
  

Комментарии:

1. Спасибо! Это было идеально.

Ответ №2:

Может быть, вы могли бы…

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

Но я не знаю… Я использую GNU / Linux, а не OSX

Комментарии:

1. рассмотрите возможность выполнения прямого A -gt B вместо A - B -gt 0