Shell

OS X 中日曆 (cal) 中的多月視圖

  • December 14, 2015

我希望執行本文中列出的一些命令,例如:

cal -3

這應該顯示上個月、本月和下個月的數據。

此命令在 OS X 中不起作用**。**

$ cal -3
cal: illegal option -- 3
usage: cal [-jy] [[month] year]
      cal [-j] [-m month] [year]
      ncal [-Jjpwy] [-s country_code] [[month] year]
      ncal [-Jeo] [year]

我可以在 OS X 中使用另一種形式嗎?

以供參考:

$ which cal
/usr/bin/cal

$ man cal 

表明這可能是預設的 OS X 版本:"...BSD General Commands Manual..."

OSX 沒有與 Linux 相同版本的實用程序。您可以依靠的共同點是POSIX,它定義cal但沒有任何選項。

Linux 上有兩個常見的版本cal:一個來自util-linux(例如在 Fedora 上),另一個來自 FreeBSD(例如在 Ubuntu 上)。兩者都有-3選擇。OSX 基於 FreeBSD,但它的版本是較舊的版本,沒有-3選項。

您可以使用 bash/zsh 腳本來模擬它:

#!/bin/bash
case $# in
 0) month=$(date +%m) year=$(date +%Y);;
 2) month=$1 year=$2;;
 *) echo 1>&2 "Usage: $0 [MONTH YEAR]"; exit 3;;
esac
month=${month#"${month%%[!0]*}"}
if ((month == 1)); then
 previous_month=12 previous_year=$((year-1))
else
 previous_month=$((month-1)) previous_year=$year
fi
if ((month == 12)); then
 next_month=1 next_year=$((year+1))
else
 next_month=$((month+1)) next_year=$year
fi
paste <(cal "$previous_month" "$previous_year") \
     <(cal "$month" "$year") \
     <(cal "$next_month" "$next_year")

引用自:https://unix.stackexchange.com/questions/182462