Visualização de vários meses no calendário (cal) no OS X

4

Espero executar alguns dos comandos listados em este artigo , por exemplo:

cal -3

que deve me mostrar o último mês, este mês e o próximo mês.

Este comando faz não funcionar no 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]

Existe uma forma alternativa que eu poderia usar no OS X?

Para referência:

$ which cal
/usr/bin/cal

e

$ man cal 

revela que esta é provavelmente a versão padrão do OS X: "...BSD General Commands Manual..."

    
por Amelio Vazquez-Reina 02.02.2015 / 14:46

2 respostas

5

O OSX não possui a mesma versão de utilitários que o Linux. O denominador comum com o qual você pode contar é POSIX , que define cal mas nenhuma de suas opções.

Existem duas versões comuns de cal no Linux: a do util-linux (por exemplo < href="http://linuxmanpages.net/manpages/fedora20/man1/cal.1.html"> no Fedora ) e o do FreeBSD (por exemplo, no Ubuntu . Ambos têm a opção -3 . O OSX é baseado no FreeBSD, mas a sua versão é um mais antigo que não tenha a opção -3 .

Você pode emulá-lo com um script 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")
    
por 02.02.2015 / 23:24
1

Eu estou tão acostumado com a versão Linux do cal , que fui em frente e portei a versão Debian do bsdmainutils que inclui os executáveis cal e ncal para uma fórmula Homebrew, que você pode encontrar aqui .

Ironicamente, esses utilitários realmente vêm do código-fonte do FreeBSD, mas a Apple não se preocupou em atualizá-los em muitos anos.

    
por 11.06.2015 / 02:39

Tags