• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

cal 3-Monatsansicht

abgdf

Guru
Hallo,

bei "cal" hat mich immer genervt, daß ich gern drei Monate angezeigt bekomme und dafür "cal -3" eingeben muß, und ich das manchmal mit "cal 3" verwechsele, was den Kalender des Jahres 3 nach Christus anzeigt (obwohl ich den im täglichen Leben nur relativ selten abfragen muß). :)
Ich weiß nicht, ob inzwischen Standard ist, daß drei Monate angezeigt werden, meine Distribution ist relativ alt, da ist 1 Monat Standard.
Also wollte ich die Quellen so ändern, daß bei "cal 3" eine Warnung ausgegeben wird, daß es sich um das Jahr 3 nach Christus handeln würde. "cal" gehört zum Paket "util-linux". Da findet sich (bei mir) ein Hinweis, daß man das Problem anders lösen kann:
In "cal.c" ist eine Zeile
Code:
#define NUM_MONTHS 1
die man auf "3" ändern kann. So kann man zur Kompilierzeit festlegen, ob standardmäßig 1 oder 3 Monate angezeigt werden sollen. Stellt man es auf "3" (und kompiliert die Quellen neu), muß man nicht mehr "cal -3" eingeben, und das Problem mit der Verwechslungsgefahr entfällt. Cool.
 
OP
A

abgdf

Guru
Oder so. :)

Ich hätte gedacht, das ginge nicht, weil man manchmal "cal 2021" haben will, um dieses ganze Jahr anzuzeigen, und sich das dann mit "-3" beißen würde. "cal -3 2021" scheint aber doch zu gehen. Wobei dann nicht nur drei Monate ausgegeben werden, sondern halt das ganze Jahr.

Edit: Ja, Deine Lösung funktioniert super. Danke!
 
Zuletzt bearbeitet:

josef-wien

Ultimate Guru
Das ist offenbar versionsabhängig. In einer virtuellen Nostalgie-Maschine mit 2.32.2 gibt es das von Dir beobachtete Verfahren (bei Angabe eines Jahres wird -3 ignoriert). Bei 2.38.1 werden sowohl -3 als auch das Jahr berücksichtigt, es werden also nur 3 Monate ausgegeben. Je nach Bedarf muß man hier einen anderen Alias-Namen verwenden (z. B. cal3 für 3 Monate) oder einen zweiten Alias-Namen definieren (z. B. alias cal1=/usr/bin/cal).
 
Oben