次のコマンドのいくつかを実行したいと思います。この記事、例えば:
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..."
答え1
OSXにはLinuxと同じバージョンのユーティリティはありません。あなたが信じることができる共通分母はPOSIX、どちら定義cal
しかし、選択の余地はありません。
Linuxには2つの一般的なバージョンがありますcal
。ユーティリティ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")
答え2
すでにLinuxのバージョンに慣れてcal
移植するようになりました。bsdmainutils の Debian バージョンこれにはHomebrew公式の実行可能cal
ファイルが含まれていますncal
。ここ。
皮肉なことに、これらのユーティリティは実際にFreeBSDアップストリームソースコードで提供されていましたが、Appleは何年も更新していません。