Playing With Time in Bash Shell
The “date” command in Bash shell offers a remarkable array of features that can be very useful in performing many system administration tasks. As you will see below, it is easy to determine date, time, day of week for any interval of time. This can be very useful for system automation tasks with “cron” and “at”.
Current date in a common database-style format (YYYY-MM-DD HH:MM:SS):
date +'%Y-%m-%d %H:%M:%S' Example: $ date +'%Y-%m-%d %H:%M:%S' 2012-02-24 19:19:22
—————————————————————–
Dates of yesterday and tomorrow:
date --date="yesterday" +'%Y-%m-%d' date --date="tomorrow" +'%Y-%m-%d' Examples: $ date --date="yesterday" +'%Y-%m-%d' 2012-02-23 $ date --date="tomorrow" +'%Y-%m-%d' 2012-02-25
—————————————————————–
Date of next Saturday and last Monday:
date --date="next saturday" +'%Y-%m-%d' date --date="last monday" +'%Y-%m-%d' Examples: $ date --date="next saturday" +'%Y-%m-%d' 2012-02-25 $ date --date="last monday" +'%Y-%m-%d' 2012-02-20
—————————————————————–
Date of four day ago and two weeks from now:
date --date="4 days ago" +'%Y-%m-%d' date --date="2 weeks" +'%Y-%m-%d' Examples: $ date --date="4 days ago" +'%Y-%m-%d' 2012-02-20 $ date --date="2 weeks" +'%Y-%m-%d' 2012-03-09
—————————————————————–
Convert current date/time to epoch time:
date -d "`date +'%Y-%m-%d %H:%M:%S'`" "+%s" Example: $ date -d "`date +'%Y-%m-%d %H:%M:%S'`" "+%s" 1330128938
—————————————————————–
Convert epoch time to date/time:
date -d @${epoch_time} "+%Y-%m-%d %H:%M:%S" Example: $ epoch_time=$(date -d "`date +'%Y-%m-%d %H:%M:%S'`" "+%s") ; echo ${epoch_time} ; date -d @${epoch_time} "+%Y-%m-%d %H:%M:%S" 1330129014 2012-02-24 19:16:54
—————————————————————–
Determine if one date is older or newer than the other
Let’s say you have a bill due on February 21, 2012. Today is February 24. You need to write a script that will tell you if a) the bill is past due; and b) if so, then by how many days
#!/bin/bash today_epoch=$(date -d "`date +'%Y-%m-%d'`" "+%s") due_date="2012-02-21" due_date_epoch=$(date -d "${due_date}" "+%s") if [ ${today_epoch} -gt ${due_date_epoch} ] then past_due_days=$(echo "scale=0;(${today_epoch}-${due_date_epoch})/60/60/24"|bc -l) echo "The bill was due ${past_due_days} days ago." fi Example: $ if [ ${today_epoch} -gt ${due_date_epoch} ] > then > past_due_days=$(echo "scale=0;(${today_epoch}-${due_date_epoch})/60/60/24"|bc -l) > echo "The bill was due ${past_due_days} days ago." > fi The bill was due 3 days ago.
I want to build a linux distro which is entirely terminal based. I’m considering LFS and I want to include only terminal based applications. But I want it to be as simple as possible. No long commands to remember or anything like that. Anyone want to form a team?
Hey I’m at the VERY last level called “Turn the tables on Plankton”. I need help because what do I do once all of the tables are turned? And how do I defeat King Neptune? I’ve been trying to use the Spongebowl move but it’s not working…Help?
I tried to turn all the tables and stand behind Mr. Krabs but King N. still shoots me and I die so the “reflect” thing doesn’t work. Tips?
How did it get that name? Is it American?
I had a brown derby in mind.
(this isn’t an advert for the Wimpy bar, by the way, I don’t own them) Any more info?
Please, anyone please help me solve this problem with some examples.
I am dead if I don’t finish my assignment.
Hi, I have a few questions about learning Linux. Some friends have told me to switch to Linux because it is more stable and more reliable. I’ve played with several automated DVDs like UBUNTU Knoppix and others but so far I don’t see a big difference between them and the usual Windows or Unix based Mac OS. For those familiar with Linux, could you please give me good advice or reasons why I should switch to LINUX? I’m not a programmer or developer but I’d be interesting to know what the opinions of people are on this. Thank you all.