Shell
OS X 中日曆 (cal) 中的多月視圖
我希望執行本文中列出的一些命令,例如:
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")