[successivo] [precedente] [inizio] [fine] [indice generale] [indice ridotto] [translators] [docinfo] [indice analitico] [volume] [parte]
A fianco alla gestione dell'orologio interno del sistema, si può sentire l'esigenza di consultare un calendario, più o meno «perpetuo», che non sia limitato alla convenzione Unix per cui il tempo inizia il primo giorno del 1970. A questo proposito è bene tenere a mente il problema della riforma gregoriana, che purtroppo non è stata applicata in tutto il mondo nello stesso modo.
Il programma cal (1) serve a visualizzare un calendario molto semplice. Se non si indicano argomenti nella riga di comando, cal si limita a mostrare il mese attuale (in base alla data dell'orologio del sistema).
cal [opzioni] [mese [anno]] |
È possibile indicare un mese particolare, di un certo anno, oppure solo un anno. Il mese si indica con un numero da 1 a 12, mentre l'anno si indica con un numero da 1 a 9 999. A questo proposito, è bene precisare che se si indica un numero soltanto tra gli argomenti, questo viene inteso come l'anno e non il mese.
Il programma cal è sensibile alla configurazione della localizzazione, attraverso la variabile di ambiente LANG, oppure le variabili LC_* (si veda il capitolo 100). Così facendo, si ottengono i nomi delle settimane e dei mesi nella lingua prescelta.
|
Segue la descrizione di alcuni esempi.
$
cal
[Invio]
Mostra il calendario del mese corrente.
$
cal -m
[Invio]
Come nell'esempio precedente, mettendo il lunedì all'inizio della settimana.
$
cal -m 1752
[Invio]
Mostra il calendario dell'anno 1752, che si considera essere quello dell'entrata in vigore della riforma gregoriana in Gran Bretagna e nelle sue colonie.
$
cal -m 9 1752
[Invio]
Mostra il calendario di settembre 1752. Il risultato che si ottiene è il seguente:
settembre 1752 lu ma me gi ve sa do 1 2 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
Il programma ccal (2) serve a visualizzare un calendario molto semplice, utilizzando i colori se il terminale lo consente. Se non si indicano argomenti nella riga di comando, ccal si limita a mostrare il mese attuale (in base alla data dell'orologio del sistema).
ccal [opzioni] [mese [anno]] |
A differenza del programma cal tradizionale, con questo è possibile annotare degli appuntamenti o delle scadenze in un file, per metterle in evidenza quando serve. Per approfondire l'uso di questo programma si deve consultare la pagina di manuale ccal(1); qui vengono mostrati solo alcuni esempi elementari.
$
ccal
[Invio]
Mostra il calendario del mese in corso, dove appare evidenziato il giorno attuale (in questo caso si tratta del 23 settembre 2004).
September 2004 Mo Tu We Th Fr Sa Su 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 |
$
ccal 1 2010
[Invio]
Mostra il calendario del mese di gennaio 2010.
October 2010 Mo Tu We Th Fr Sa Su 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 |
$
ccal 2010
[Invio]
Mostra il calendario di tutto l'anno 2010.
2010 Jan Feb Mar Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su 1 2 3 1 2 3 4 5 6 7 1 2 3 4 5 6 7 4 5 6 7 8 9 10 8 9 10 11 12 13 14 8 9 10 11 12 13 14 11 12 13 14 15 16 17 15 16 17 18 19 20 21 15 16 17 18 19 20 21 18 19 20 21 22 23 24 22 23 24 25 26 27 28 22 23 24 25 26 27 28 25 26 27 28 29 30 31 29 30 31 Apr May Jun Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su 1 2 3 4 1 2 1 2 3 4 5 6 5 6 7 8 9 10 11 3 4 5 6 7 8 9 7 8 9 10 11 12 13 12 13 14 15 16 17 18 10 11 12 13 14 15 16 14 15 16 17 18 19 20 19 20 21 22 23 24 25 17 18 19 20 21 22 23 21 22 23 24 25 26 27 26 27 28 29 30 24 25 26 27 28 29 30 28 29 30 31 Jul Aug Sep Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su 1 2 3 4 1 1 2 3 4 5 5 6 7 8 9 10 11 2 3 4 5 6 7 8 6 7 8 9 10 11 12 12 13 14 15 16 17 18 9 10 11 12 13 14 15 13 14 15 16 17 18 19 19 20 21 22 23 24 25 16 17 18 19 20 21 22 20 21 22 23 24 25 26 26 27 28 29 30 31 23 24 25 26 27 28 29 27 28 29 30 30 31 Oct Nov Dec Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su 1 2 3 1 2 3 4 5 6 7 1 2 3 4 5 4 5 6 7 8 9 10 8 9 10 11 12 13 14 6 7 8 9 10 11 12 11 12 13 14 15 16 17 15 16 17 18 19 20 21 13 14 15 16 17 18 19 18 19 20 21 22 23 24 22 23 24 25 26 27 28 20 21 22 23 24 25 26 25 26 27 28 29 30 31 29 30 27 28 29 30 31 |
$
ccal 9 1752
[Invio]
September 1752 Mo Tu We Th Fr Sa Su 1 2 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
Mostra il calendario del mese di settembre dell'anno 1752, secondo la convenzione della Gran Bretagna, nel quale entra in vigore la riforma gregoriana.
Il programma ncal (3) funziona in modo simile a cal (spesso si tratta dello stesso programma che si comporta in modo diverso a seconda del nome con cui lo si chiama), ma in più consente di calcolare il giorno di pasqua e di tenere conto della località per considerare l'entrata in vigore della riforma gregoriana.
ncal [opzioni] [-s codice_paese] [[mese] anno] |
Il modello sintattico mostrato è generalizzato, ma in pratica, le opzioni che servono a calcolare il giorno di pasqua di un certo anno, sono in conflitto con quelle che servono a mostrare un calendario.
|
Segue la descrizione di alcuni esempi.
$
ncal -p
[Invio]
AL Albania 1912-11-30 IT Italy 1582-10-04 AT Austria 1583-10-05 JP Japan 1918-12-18 AU Australia 1752-09-02 LI Lithuania 1918-02-01 BE Belgium 1582-12-14 LN Latin 9999-05-31 BG Bulgaria 1916-03-18 LU Luxembourg 1582-12-14 CA Canada 1752-09-02 LV Latvia 1918-02-01 CH Switzerland 1655-02-28 NL Netherlands 1582-12-14 CN China 1911-12-18 NO Norway 1700-02-18 CZ Czech Republic 1584-01-06 PL Poland 1582-10-04 DE Germany 1700-02-18 PT Portugal 1582-10-04 DK Denmark 1700-02-18 RO Romania 1919-03-31 ES Spain 1582-10-04 RU Russia 1918-01-31 FI Finland 1753-02-17 SI Slovenia 1919-03-04 FR France 1582-12-09 SE Sweden 1753-02-17 GB United Kingdom 1752-09-02 TR Turkey 1926-12-18 GR Greece 1924-03-09 US United States 1752-09-02 HU Hungary 1587-10-21 YU Yugoslavia 1919-03-04 IS Iceland 1700-11-16 |
$
ncal -s IT 10 1582
[Invio]
Mostra il mese di ottobre 1582 italiano, tenendo conto che la riforma gregoriana dovrebbe essere entrata in vigore il giorno 4 di quel mese:
Ottobre 1582 lu 1 18 25 ma 2 19 26 me 3 20 27 gi 4 21 28 ve 15 22 29 sa 16 23 30 do 17 24 31 |
$
ncal -e 2005
[Invio]
27 marzo 2005 |
Mostra il giorno di pasqua dell'anno 2005.
Il programma gcal (4) consente di ottenere un calendario, secondo vari formati, in grado di riconoscere il momento dell'introduzione della riforma gregoriana in base alla configurazione locale.
gcal [opzioni] [comando] |
Il modello sintattico mostrato è semplificato rispetto alla documentazione originale, ma occorre tenere presente che questo programma è ricco di opzioni e di argomenti particolari, che qui vengono omessi. Probabilmente gcal è la soluzione «definitiva» al problema della gestione di un calendario, ma occorre leggere la documentazione originale, costituita dal documento info gcal. Qui vengono mostrati solo alcuni esempi banali, ignorando completamente tutte le potenzialità del programma.
$
gcal
[Invio]
Mostra il calendario del mese e dell'anno in corso, evidenziando il giorno corrente (in questo caso si tratta del 23 settembre 2004).
September 2004 Monday 6 13 20 27 Tuesday 7 14 21 28 Wednesday 1 8 15 22 29 Thursday 2 9 16<23>30 Friday 3 10 17 24 Saturday 4 11 18 25 Sunday 5 12 19 26 |
$
gcal 11 2004
[Invio]
Mostra il calendario del mese di novembre 2004.
November 2004 Monday 1 8 15 22 29 Tuesday 2 9 16 23 30 Wednesday 3 10 17 24 Thursday 4 11 18 25 Friday 5 12 19 26 Saturday 6 13 20 27 Sunday 7 14 21 28 |
$
gcal 2004
[Invio]
Mostra il calendario dell'anno 2004.
2004 January February March April Mo 5 12 19 26 2 9 16 23 1 8 15 22 29 5 12 19 26 Tu 6 13 20 27 3 10 17 24 2 9 16 23 30 6 13 20 27 We 7 14 21 28 4 11 18 25 3 10 17 24 31 7 14 21 28 Th 1 8 15 22 29 5 12 19 26 4 11 18 25 1 8 15 22 29 Fr 2 9 16 23 30 6 13 20 27 5 12 19 26 2 9 16 23 30 Sa 3 10 17 24 31 7 14 21 28 6 13 20 27 3 10 17 24 Su 4 11 18 25 1 8 15 22 29 7 14 21 28 4 11 18 25 May June July August Mo 3 10 17 24 31 7 14 21 28 5 12 19 26 2 9 16 23 30 Tu 4 11 18 25 1 8 15 22 29 6 13 20 27 3 10 17 24 31 We 5 12 19 26 2 9 16 23 30 7 14 21 28 4 11 18 25 Th 6 13 20 27 3 10 17 24 1 8 15 22 29 5 12 19 26 Fr 7 14 21 28 4 11 18 25 2 9 16 23 30 6 13 20 27 Sa 1 8 15 22 29 5 12 19 26 3 10 17 24 31 7 14 21 28 Su 2 9 16 23 30 6 13 20 27 4 11 18 25 1 8 15 22 29 September October November December Mo 6 13 20 27 4 11 18 25 1 8 15 22 29 6 13 20 27 Tu 7 14 21 28 5 12 19 26 2 9 16 23 30 7 14 21 28 We 1 8 15 22 29 6 13 20 27 3 10 17 24 1 8 15 22 29 Th 2 9 16<23>30 7 14 21 28 4 11 18 25 2 9 16 23 30 Fr 3 10 17 24 1 8 15 22 29 5 12 19 26 3 10 17 24 31 Sa 4 11 18 25 2 9 16 23 30 6 13 20 27 4 11 18 25 Su 5 12 19 26 3 10 17 24 31 7 14 21 28 5 12 19 26 |
$
echo $LANG
[Invio]
it_IT |
$
gcal 10 1582
[Invio]
October 1582 Monday 1 18 25 Tuesday 2 19 26 Wednesday 3 20 27 Thursday 4 21 28 Friday 15 22 29 Saturday 16 23 30 Sunday 17 24 31 |
Mostra il calendario del mese di ottobre 1582, durante il quale entra in vigore la riforma gregoriana. Si osservi che la configurazione della variabile di ambiente LANG fa riferimento all'Italia.
Il programma calendar (5) serve a ricordare delle date importanti, attraverso un meccanismo molto semplice, che prevede almeno un file contenente una serie di righe, ognuna con una data e l'annotazione da ricordare:
calendar [opzioni] |
Normalmente il programma viene usato senza argomenti, per ottenere l'elenco delle cose da ricordare per il giorno attuale e quello successivo (se ci si trova nel finesettimana, le informazioni possono prolungarsi fino al lunedì successivo).
Le date o le scadenze da ricordare possono essere memorizzate in uno o più file. Volendo semplificare, può trattarsi del file calendar
collocato nella directory corrente, oppure del file ~/.calendar
, o anche di ~/.calendar/calendar
; in mancanza di uno di questi file personali, il programma va a cercare qualcosa che può essere generalizzato per tutto il sistema (nella directory /etc/calendar/
o all'interno di /usr/share/calendar/
). La gestione di questi file può essere anche molto complicata, pertanto, se serve, si deve consultare la pagina di manuale calendar(1).
In condizioni normali, quando si installa il pacchetto che contiene il programma calendar, si ottiene anche una configurazione predefinita con tante ricorrenze utili o curiose:
$
calendar
[Invio]
set 15 Agatha Christie born in Torquay, England, 1890 set 15 ACM founded, 1947 set 15 Soviet Premier Nikita Khrushchev begins his 13 day tour of the US, 1959 set 15 The US Foreign Affairs Dept. becomes the US State Department, 1789 set 15 Foundation of Panama in Panama set 15 Aujourd'hui, c'est la St(e) Roland. set 15 La rosée de saint Albin est, dit-on, rosée de vin. set 15 Wahl von Konrad Adenauer (CDU) zum Bundeskanzler, 1949 set 15 Nürnberger Gesetze, 1935 set 16 Allen Funt born in Brooklyn, NY, 1914 set 16 The village of Shawmut, Massachusetts, becomes the city of Boston, 1630 set 16 Malaya, Sabah, Sarawak and Singapore unite to become Malaysia, 1963 set 16 Cherokee Strip Day in Oklahoma set 16 Independence Days in Mexico and Papua New Guinea set 16 B.B. King is born in Itta Bena, Mississippi, 1925 set 16 N'oubliez pas les Édith ! |
Quando invece l'utente predispone il proprio file ~/calendar
, o ~/.calendar/calendar
, tutto questo sparisce, a meno di richiamarlo in modo esplicito.
Il file che contiene le ricorrenze o le scadenze da ricordare, può anche essere piuttosto complesso. In generale conviene limitarsi a scrivere righe secondo la sintassi seguente, senza commenti e lasciando eventualmente solo righe vuote o bianche:
data<HT>descrizione |
Tra la data e la descrizione ci deve essere un codice di tabulazione orizzontale (<HT>), che diventa l'unico modo per distinguere dove finisce un'informazione e dove incomincia l'altra. Tuttavia, nonostante la semplicità estrema di questa notazione, occorre fare attenzione a scrivere la data in modo che il programma sia in grado di riconoscerla. Sono ammissibili diverse modalità; per esempio si può mettere la sigla del mese secondo le convenzioni della propria nazionalità, ma in generale, è meglio usare delle sigle numeriche dove possibile e limitarsi alla lingua inglese per le denominazioni dei giorni della settimana o della festa pasquale. Segue un esempio di questo file che mostra diversi casi, dove in particolare le date che si riferiscono a una festività vanno segnate alla fine con un asterisco:
|
Ecco cosa si potrebbe ottenere; si osservi anche il giorno previsto dall'esempio:
$
date
[Invio]
Wed Sep 15 21:50:03 CEST 2004 |
$
cal
[Invio]
September 2004 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 |
$
calendar
[Invio]
Sep 15 Ricordati di fare gli auguri a Tizio che è nato il 15 settembre 1970. Sep 15 Seconda metà del mese. Sep 15 Terzo mercoledì di settembre. Sep 15 Terzultimo mercoledì di settembre. |
Eventualmente, si può utilizzare il file seguente per le ricorrenze italiane comuni:
|
Per la descrizione delle opzioni eventuali e degli altri modi possibili per scrivere le date delle ricorrenze, si può consultare la pagina di manuale calendar(1).
Il programma pcal (6) consente di ottenere un calendario in forma di file PostScript o di file HTML. Ciò consente di produrre un risultato stampato di qualità ottima oppure un file adatto alla pubblicazione elettronica. Questo programma consente anche di predisporre un file di ricorrenze o di scadenze da utilizzare per inserire delle note nel calendario che si ottiene. Questo file di ricorrenze e di scadenze può essere costruito anche cercando di ottenere una compatibilità minima con il programma calendar.
pcal [opzioni] [anno | {mese anno} | {mese_inizio anno n_mesi}] |
Tralasciando inizialmente le opzioni, si può osservare dal modello sintattico che è possibile fare a meno di qualunque argomento; in tal caso si ottiene dallo standard output un file PostScript con il calendario del mese in corso. Se si indica un numero, si intende che si vuole ottenere tutto il calendario di quell'anno; se si mettono due numeri, si intende ottenere il calendario di un certo mese e di un certo anno; infine, se si indicano tre numeri, si vuole il calendario a partire da un certo mese, di un certo anno, per un totale di un certo numero di mesi.
Il programma pcal cerca un file contenente le ricorrenze o le scadenze da ricordare, tra una serie di diverse possibilità. In generale conviene usare per questo il file ~/.calendar
, oppure è anche meglio usare l'opzione -f per indicare direttamente quale file usare per questo. All'interno di questo file si possono annotare dei commenti, preceduti dal cancelletto (#), si possono anche lasciare righe vuote o bianche e il resto delle righe devono essere direttive nella forma seguente:
data<HT>...descrizione |
La data potrebbe essere separata dalla descrizione anche da più di uno spazio normale, ma conviene usare la forma mostrata (con il carattere di tabulazione, singolo o ripetuto), per avere più possibilità di usare questo file anche con altri programmi.
La data, o comunque il riferimento alla ricorrenza può essere indicato con una varietà di possibilità, che possono essere approfondite eventualmente leggendo la documentazione originale, ovvero la pagina di manuale pcal(1); qui viene mostrato un solo esempio che intende rappresentare le festività e le ricorrenze principali secondo la tradizione italiana:
|
Nell'esempio si può osservare l'asterisco alla fine delle date che rappresentano una festività, da segnalare in modo speciale nel calendario. Si osservi anche che le date composte da giorno e mese, sono formate mettendo il mese per primo, secondo la convenzione che si usa nella lingua inglese, per non dover usare opzioni particolari nella riga di comando del programma.
|
Segue la descrizione di alcuni esempi, dove si utilizza il file .calendar
con il contenuto mostrato in precedenza.
$
pcal > calendario.ps
[Invio]
Genera il file calendario.ps
con i dati del mese in corso. Il risultato potrebbe essere simile a quello seguente:
|
$
pcal -o calendario.ps
[Invio]
Fa esattamente la stessa cosa del comando precedente.
$
pcal -f .calendar -o calendario.ps
[Invio]
Dichiara espressamente l'uso del file .calendar
(contenuto nella directory corrente) per inserire nel calendario ricorrenze o scadenze.
$
pcal -m -o calendario.ps
[Invio]
Fa in modo che vengano mostrate le fasi lunari principali.
$
pcal -M -o calendario.ps
[Invio]
Fa in modo che vengano mostrate le fasi lunari in ogni giorno.
$
pcal -b sat -M -o calendario.ps
[Invio]
Rispetto all'esempio precedente, fa in modo che il sabato appaia come un giorno lavorativo normale.
$
pcal -F mon -b sat -M -o calendario.ps
[Invio]
Rispetto all'esempio precedente, fa in modo che le settimane inizino dal lunedì.
$
pcal -F mon -b sat -M -a it -o calendario.ps
[Invio]
Rispetto all'esempio precedente, fa in modo che la denominazione dei mesi e delle settimane appaia in lingua italiana.
$
pcal -F mon -b sat -M -a it -o calendario.ps 3 2005
[Invio]
Rispetto all'esempio precedente, fa in modo di generare la pagina del mese di marzo dell'anno 2005. Il suo aspetto dovrebbe essere quello seguente:
|
$
pcal -F mon -b sat -M -a it -o calendario.ps 2005
[Invio]
Rispetto all'esempio precedente, genera il calendario di tutto l'anno 2005.
$
pcal -F mon -b sat -M -a it -H -o calendario.html 2005
[Invio]
Rispetto all'esempio precedente, genera il calendario in formato HTML. Le fasi lunari potrebbero mancare.
I programmi calendar e pcal usano un file per le ricorrenze o le scadenze che ha caratteristiche simili, anche se non identiche. Tuttavia, se non si hanno grosse pretese, si può riuscire a realizzare un file unico, rispettando delle limitazioni: non si devono usare commenti, le date devono essere separate dalla descrizione attraverso stop di tabulazione, l'ultima direttiva deve essere conclusa da un codice di interruzione di riga.
Purtroppo il modo di rappresentare le date non è perfettamente compatibile, ma si può riuscire a scrivere qualcosa anche in modo ridondante, quando necessario. L'esempio seguente può funzionare sia con calendar, sia con pcal, anche se si possono osservare delle segnalazioni di errore a proposito di alcune righe che non vengono interpretate. Si osservi la necessità di usare direttive doppie per i calcoli relativi ai giorni collegati in qualche modo al periodo pasquale.
|
Si osservi in particolare che le direttive che si riferiscono al cambio dell'ora estiva non vengono prese in considerazione da calendar.
Appunti di informatica libera 2006.07.01 --- Copyright © 2000-2006 Daniele Giacomini -- <daniele (ad) swlibero·org>
6) Pcal software libero con licenza speciale
Dovrebbe essere possibile fare riferimento a questa pagina anche con il nome calendario.htm
[successivo] [precedente] [inizio] [fine] [indice generale] [indice ridotto] [translators] [docinfo] [indice analitico]