Cal command to display 5 months ?


 
Thread Tools Search this Thread
Top Forums UNIX for Dummies Questions & Answers Cal command to display 5 months ?
# 8  
Old 10-20-2013
Quote:
Originally Posted by sea
You could try:
Code:
for months in 6 7 8 9 10;do cal $months $(date +'%Y');done

That won't work for Jan, Feb, Nov, and Dec.


Quote:
Originally Posted by Imane
I have another question related to this subject, I have found in this website : (unix.com/man-page/Linux/1/cal/ Man Page for cal) that I can use the command cal with these options :
Code:
cal [-3hj] [-A number] [-B number] -m month [year]

...
But when I try it, I get the same message as you did (invalid option -- 'A') . I don't understand why Smilie
That documentation probably doesn't apply to your cal implemenation (it looks like the FreeBSD implementation). Those options are non-standard. Read your system's man cal instead.

Regards,
Alister
This User Gave Thanks to alister For This Post:
# 9  
Old 10-21-2013
Quote:
Originally Posted by alister
That won't work for Jan, Feb, Nov, and Dec.
It actually did work for me when I tried Jan, Feb, Nov and Dec.
But your second answer is true Smilie ! Thank you Smilie
# 10  
Old 10-21-2013
Quote:
Originally Posted by Imane
It actually did work for me when I tried Jan, Feb, Nov and Dec.
That for-loop from post #2 won't work with those four months because, even if you wrap the months using modulo-12 arithmetic, the year is left unadjusted.

Regards,
Alister
This User Gave Thanks to alister For This Post:
# 11  
Old 10-21-2013
Yes, those 5! numbers represent the 5 months to be shown, i dont know which 5 months he wants.
Year is untouched, using the current, since i dont know which year he want to have shown either.

If you want to display the COMLPETE year 2042, your supposed to use:
Code:
cal -y 2042

Regards
sea
# 12  
Old 10-21-2013
Quote:
Originally Posted by alister
That for-loop from post #2 won't work with those four months because, even if you wrap the months using modulo-12 arithmetic, the year is left unadjusted.

Regards,
Alister
Oh yeees, now I understand ! You're right, if I choose November for example, then in the two next months, I obviously have December and January of the SAME year, which isn't what I want :/ !
Thanks for highlighting this, I didn't pay attention to that !
# 13  
Old 10-21-2013
Started to get fun on this so i prepared this to be used as executable file in either (on linux):
* ~/bin
* ~/.local/bin
* /bin
* /usr/bin
Code:
#!/bin/sh
ME=$(basename $0)	# This is the filename without the path
help_text="\nUsage: $ME MONTH [YEAR=$(date +'%Y') [RANGE=2  [STEP=1]]]
		\rExample:\t$ME $(date +'%m') $(date +'%Y')
		\r\t\t$ME $(date +'%m') $(date +'%Y') 4 3\n"
[[ -z $1 ]] && printf  "$help_text\n" && exit 99

showMonths_function () {  MONTH=$1 ; YEAR=$2 ; RANGE=$3 ; STEP=$4
	[[ -z $2 ]] && YEAR=$(date +'%Y')
	[[ -z $3 ]] && RANGE=2
	[[ -z $4 ]] && STEP=1
	FROM=$[ $MONTH - $RANGE ]
	TO=$[ $MONTH + $RANGE ]
	for months in $(seq $FROM $STEP $TO );do cal $months $YEAR;done
}
showMonths_function $@

Then use like:
Code:
showMonths 6 2014 4 2

Shows: Feb, Apr, Jun, Aug, Oct
As it shows June 2014 with a range of 4 months, but only showing every 2nd.

The 3rd argument, to alter the range, is optional!
Default is 2.
4th argument could alter the steps it takes, 1 for each, 2 for every 2nd. etc.
Default is 1.

Code:
showMonths 6 2022

Shows April-August of 2022

Or even just:
Code:
showMonths 6

For the same timerange of the current year.

Code:
99 ~ $ showMonths 6
     April 2013     
Mo Di Mi Do Fr Sa So
 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

      Mai 2013      
Mo Di Mi Do Fr Sa So
       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

      Juni 2013     
Mo Di Mi Do Fr Sa So
                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

      Juli 2013     
Mo Di Mi Do Fr Sa So
 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

     August 2013    
Mo Di Mi Do Fr Sa So
          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

Hope this helps Smilie

Last edited by sea; 10-22-2013 at 01:18 PM.. Reason: code fixed
 
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Dummies Questions & Answers

Cal command in UNIX

modify "cal " command to display calenders of the specified months. $ cal jan....aug (1 Reply)
Discussion started by: ssaini
1 Replies

2. Shell Programming and Scripting

How to calculate months and display in shell scripting

I just want to know, how do we calculate the months in shell scripting. If i give the input as 20-01-2011, the output should be 20-02-2011, 20-03-2011 or 20-04-2011........ How do i get this ? Cheers. (6 Replies)
Discussion started by: sachin24
6 Replies

3. Shell Programming and Scripting

another cal command question.

I got this from this board yesterday cal | xargs -n1 | tail -1 which displays the current months days.. for instance if you type this in a shell today you will get 31. I would like to also display the month and year.. something like March 2011 has 31 days. how would I do that? ... (3 Replies)
Discussion started by: rontopia
3 Replies

4. Programming

C++ Display months of year in a double dimensional array

stupid question (0 Replies)
Discussion started by: puttster
0 Replies

5. UNIX for Dummies Questions & Answers

cal command

Hello, I wanted to display calender for the previou, current and next month in a single command... I used the command cal -3 for this. But its throwing me a Bad Argument error. I am using HP UX to execute this command. Is this a syntax error, or let me know if there any other ways to... (6 Replies)
Discussion started by: atlantis
6 Replies

6. Shell Programming and Scripting

parsing return from cal command

Jim , Anyone I do not have GNU date Besides I am particularly interested in how one can parse the return from the cal command. Say do - cal 11 2008 - and parse out a given date, say the 8th and return that the 8th was Saturday. ( diffrentiating between S for Saturday and Sunday , also in the case... (1 Reply)
Discussion started by: dragrid
1 Replies

7. UNIX for Dummies Questions & Answers

cal command display issues

I am using AIX version 5.3 I like the cal function because I can print a nice concise view of the calendar for the whole year. I want the calendar to display with 3 months across instead of 2, which is what is happening. My terminal display is set with 67 rows and 140 columns so that should... (0 Replies)
Discussion started by: ruddydaggerwing
0 Replies

8. Shell Programming and Scripting

Julian Dates and the Cal command

hey all, I was wondering if it was possible to get the julian date with the cal command. I know that the "-j" option will display it, however, i need the Julian Date of a specific date, in number. For example, the User would enter their age like 19800101 or YYYMMDD, like so. This info... (0 Replies)
Discussion started by: shan2on
0 Replies

9. AIX

doubt in cal command

I am new to unix... How to get all the saturdays of a specific year? for a specific month, i tried as below.. cal 02 2006 | awk '{print $7}' but it is not giving all saturdays.... can anyone help me with this? Thanks in advance, Sumi (9 Replies)
Discussion started by: sumi
9 Replies

10. UNIX for Dummies Questions & Answers

Cal command

I am trying to configure the cal command to recognize the month names. When you type: cal - you get the calander for the current month of the current year. Is there a way of making the system recognize March, and Mar. So I could type: cal March or cal mar and get the same response as cal.... (5 Replies)
Discussion started by: Astudent
5 Replies
Login or Register to Ask a Question