■年間カレンダー calとbash。 縦表示の年間カレンダーが欲しいという相談をたまに受けるけど、calでいいじゃん。 $ for m in `seq 1 12`;do MYCAL="2014/$m";cal -d $MYCAL;done 1月 2014 日 月 火 水 木 金 土 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 2月 2014 日 月 火 水 木 金 土 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 3月 2014 日 月 火 水 木 金 土 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 4月 2014 日 月 火 水 木 金 土 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 5月 2014 日 月 火 水 木 金 土 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 6月 2014 日 月 火 水 木 金 土 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 7月 2014 日 月 火 水 木 金 土 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 8月 2014 日 月 火 水 木 金 土 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 9月 2014 日 月 火 水 木 金 土 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 10月 2014 日 月 火 水 木 金 土 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 11月 2014 日 月 火 水 木 金 土 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 12月 2014 日 月 火 水 木 金 土 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 ■あるいは、自分でワンライナー書けばいいじゃん。 $ for y in `seq 1 12`;do MYCAL="2014/${y}/01"; \ echo -e "\n $MYCAL" | sed s%"/01"%%; \ echo " 日 月 火 水 木 金 土"; \ n=`date -d "${MYCAL}" '+%u'`; \ l=`date -d "${MYCAL} next month last day" '+%d'`; \ if [ $n -ne 7 ];then \ for s in `seq 1 $n`;do echo -n "0 ";done; \ else \ echo " "; \ fi | \ for d in `xargs` `seq 1 $l`;do \ echo "$d $n" | \ awk '{if(($1+$2)%7==0) printf "%3d\n",$1%32;else printf "%3d",$1%32}'; \ done | sed s/" 0"/" "/g; echo;unset n m MYCAL done 2014/1 日 月 火 水 木 金 土 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 2014/2 日 月 火 水 木 金 土 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 2014/3 日 月 火 水 木 金 土 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 2014/4 日 月 火 水 木 金 土 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 2014/5 日 月 火 水 木 金 土 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 2014/6 日 月 火 水 木 金 土 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 2014/7 日 月 火 水 木 金 土 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 2014/8 日 月 火 水 木 金 土 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 2014/9 日 月 火 水 木 金 土 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 2014/10 日 月 火 水 木 金 土 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 2014/11 日 月 火 水 木 金 土 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 2014/12 日 月 火 水 木 金 土 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 ■良く聞くと、大抵は「独自の年間カレンダーを作りたい。」らしい。 「CSVで欲しい、エクセルやLibreOfficeのCalcで編集したい。」と。 ふむ。上のワンライナーと大して変わらないよ。 $ for y in `seq 1 12`;do \ MYCAL="2014/${y}/01"; \ echo -e "\n $MYCAL,,,,,," | sed s%"/01"%%; \ echo "日,月,火,水,木,金,土"; \ n=`date -d "${MYCAL}" '+%u'`; \ l=`date -d "${MYCAL} next month last day" '+%d'`; \ if [ $n -ne 7 ];then \ for s in `seq 1 $n`;do echo -n "0 ";done; \ else \ echo " "; \ fi | \ for d in `xargs` `seq 1 $l`;do \ echo "$d $n" | \ awk '{if(($1+$2)%7==0) printf "%3d\n",$1%32;else printf "%3d",$1%32}'; \ done | sed s/" *\([0-9]*\)"/"\1,"/g | sed s/"^,"//g | sed s/",\$"//g | \ sed s/"^,,"//g | sed s/"^0,"/","/g | sed s/",0"/","/g; \ echo;unset n m MYCAL; done 2014/1,,,,,, 日,月,火,水,木,金,土 ,,,1,2,3,4 5,6,7,8,9,10,11 12,13,14,15,16,17,18 19,20,21,22,23,24,25 26,27,28,29,30,31 2014/2,,,,,, 日,月,火,水,木,金,土 ,,,,,,1 2,3,4,5,6,7,8 9,10,11,12,13,14,15 16,17,18,19,20,21,22 23,24,25,26,27,28 2014/3,,,,,, 日,月,火,水,木,金,土 ,,,,,,1 2,3,4,5,6,7,8 9,10,11,12,13,14,15 16,17,18,19,20,21,22 23,24,25,26,27,28,29 30,31 2014/4,,,,,, 日,月,火,水,木,金,土 ,,1,2,3,4,5 6,7,8,9,10,11,12 13,14,15,16,17,18,19 20,21,22,23,24,25,26 27,28,29,30 2014/5,,,,,, 日,月,火,水,木,金,土 ,,,,1,2,3 4,5,6,7,8,9,10 11,12,13,14,15,16,17 18,19,20,21,22,23,24 25,26,27,28,29,30,31 2014/6,,,,,, 日,月,火,水,木,金,土 1,2,3,4,5,6,7 8,9,10,11,12,13,14 15,16,17,18,19,20,21 22,23,24,25,26,27,28 29,30 2014/7,,,,,, 日,月,火,水,木,金,土 ,,1,2,3,4,5 6,7,8,9,10,11,12 13,14,15,16,17,18,19 20,21,22,23,24,25,26 27,28,29,30,31 2014/8,,,,,, 日,月,火,水,木,金,土 ,,,,,1,2 3,4,5,6,7,8,9 10,11,12,13,14,15,16 17,18,19,20,21,22,23 24,25,26,27,28,29,30 31 2014/9,,,,,, 日,月,火,水,木,金,土 ,1,2,3,4,5,6 7,8,9,10,11,12,13 14,15,16,17,18,19,20 21,22,23,24,25,26,27 28,29,30 2014/10,,,,,, 日,月,火,水,木,金,土 ,,,1,2,3,4 5,6,7,8,9,10,11 12,13,14,15,16,17,18 19,20,21,22,23,24,25 26,27,28,29,30,31 2014/11,,,,,, 日,月,火,水,木,金,土 ,,,,,,1 2,3,4,5,6,7,8 9,10,11,12,13,14,15 16,17,18,19,20,21,22 23,24,25,26,27,28,29 30 2014/12,,,,,, 日,月,火,水,木,金,土 ,1,2,3,4,5,6 7,8,9,10,11,12,13 14,15,16,17,18,19,20 21,22,23,24,25,26,27 28,29,30,31