Você simplesmente não adora quando dois comandos cada um fazem uma coisa que você deseja, mas nem os dois?
Isto é o que cal
faz. Boa formatação. Faltam números de semana:
$ cal
January 2012
Su Mo Tu We Th Fr Sa
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
Isto é o que ncal
faz. Formatação estranha, mas com números da semana:
$ ncal -w
January 2012
Su 1 8 15 22 29
Mo 2 9 16 23 30
Tu 3 10 17 24 31
We 4 11 18 25
Th 5 12 19 26
Fr 6 13 20 27
Sa 7 14 21 28
1 2 3 4 5
O tipo de saída que eu quero, na verdade, um cruzamento entre cal
e ncal -w
:
$ cal --magik-calendar-week-option
January 2012
Su Mo Tu We Th Fr Sa
1 1 2 3 4 5 6 7
2 8 9 10 11 12 13 14
3 15 16 17 18 19 20 21
4 22 23 24 25 26 27 28
5 29 30 31
bash
command-line
terminal
calendar
k0pernikus
fonte
fonte
gcal --starting-day=Monday --with-week-number
atende às minhas necessidades ainda mais, esta ferramenta é ótima.Isso destaca a data de hoje e pode ser exibido em qualquer mês
$1
no formato:YYYY-mm-dd
... O padrão é a data de hojeEstá configurado para mostrar os números ISO da semana, e o primeiro dia da semana é segunda-feira.
Aqui está a exibição deste mês (com
20
destaque)fonte
08
e09
interpretado como octal em vez de decimal .. Deve ficar bem agora ...Você pode usar
nl
para numerar as linhas (esse é o objetivo do programa :). Mas você precisa extrair a primeira semana do mês de algum lugar. Isso pode ser feito porncal
si só:Nós inserimos isso como um parâmetro na
nl
opção-v
(número da linha inicial) e dizemos para ele apenas numerar linhas com números ou espaços.Tudo isso é terrivelmente frágil. De qualquer forma, se você não precisar
cal
das opções mais avançadas, ele funcionará. Você pode colocá-lo em um arquivo e substituir"$@"
onde eu coloco2 2012
.EDIT: Mas isso está errado! Acabei de notar que a primeira semana de janeiro pode ter o número 52 ou 53! Portanto, basta abrir uma exceção para janeiro ou apenas extrair todos os números das semanas
ncal
e aplicá-los à saída decal
.Esta é a solução que pensei originalmente, mas pensei (erroneamente) que simplificaria usando
nl
. Ele usapaste
, que mescla arquivos lado a lado. Como não há nenhum arquivo, temos que usar o basismo<(...)
; era isso que eu estava tentando evitar.Nosso primeiro "arquivo" será uma lista dos números da semana, com duas linhas vazias no início:
O segundo, apenas a saída de
cal
. Todos juntos, como parâmetros parapaste
:Muito mais bagunçado e incompatível que o outro. En fin ...
fonte
Gere a sequência de semanas com
ncal
e usepaste
para ter as duas saídas lado a lado.Se você não gosta de ter guias como delimitadores, basta adicionar algo como
sed 's/\t/ /'
Edit : muito mais simples, não há necessidade de se preocupar com as guias:
fonte
cal
encal
(outras abordagens replicam o comportamento de umcal
ou dencal
).Uma maneira de usar Perl (meu idioma de saída do
cal
comando é o espanhol, mas espero que o resultado não varie do inglês):Resultado:
Explicação:
fonte
cal 02 2012
? Pareceu funcionar no meu teste.Sem representante suficiente para comentar a resposta do slm, o gcal pode ser instalado no Mac OS usando
brew install gcal
.(Encontrei a resposta aqui primeiro, depois a resposta é diferente, mas a resposta para o unix não possuía todas as informações necessárias para instalar no mac.)
fonte
Aqui está minha solução, que é mais curta em código e funciona bem em outras datas além do mês atual. Desculpe pelo povo dos EUA, isso usa o formato ISO, ou seja, o 1º dia da semana é segunda-feira. Isso é feito com a opção -m para cal e a opção% V para a data
fonte
Eu fiz esse script para gerar um calendário de plantão para as equipes. Ele gera calendário com números da semana e atribui nomes a eles (simplesmente round-robin). Depois que a saída é impressa, você só precisa copiá-la para o Excel e fazer "texto para coluna" por; e, mais uma vez, execute "texto na coluna" na primeira coluna usando a opção "fixo". A vantagem deste calendário (comparando com a orientação horizontal) é que você pode usar o filtro automático (Alt + dff) e encontrar apenas as suas semanas.
Desculpe, codifique um pouco desagradável ... e sem comentários ... mas funciona bem;)
fonte
Eu realmente não quero instalar
gcal
e não consegui fazê-lo funcionar corretamente no meu sistema. Portanto, sem o gcal, a resposta do funollet é realmente a melhor solução. Eu apenas mudei um pouquinho para preservar a formatação, como destaque do dia , cores etc. usando o comando Também removi caracteres redundantes, tornando-o adequado como um alias, como tal:script
Ou substitua
cal
por uma nova função. No entanto, com isso, você não pode fazer coisas comocal -3
. Você recebe as semanas corretas, mas elas não estão alinhadas corretamente. Uma solução simples, mas não completa, é verificar secal
é chamado sem argumentos, assim:fonte