Date command does not follow Linux specifications (Mac OS X Lion)

Kaushik Shankar picture Kaushik Shankar · Mar 21, 2012 · Viewed 28.8k times · Source

I have been developing a script on my linux box for quite some time, and wanted to run it on my Mac as well.

I thought that the functions on the Mac were the same as the functions on linux, but today I realized it was wrong. I knew that fewer functions existed on the Mac, but I thought that the functions that did exist, had the same implementation.

This problem is specifically in regards to the date command.

When I run the command on my linux machine with the parameter to provide some time in nanoseconds, I get the correct result, but when I run it on my mac, it does not have that option.

Linux-Machine> date +%N
55555555555 #Current time in nanoseconds
Mac-Machine> date +%N
N

How do I go about getting the current time in nanoseconds as a bash command on the Mac?

Worst case is I create a small piece of code that calls a system function in C or something and then call it within my script.

Any help is much appreciated!

Answer

JoeLinux picture JoeLinux · Mar 21, 2012

This is because OSX and Linux use two different sets of tools. Linux uses the GNU version of the date command (hence, GNU/Linux). Remember that Linux is Linux and OS X is Unix. They're different.

You can install the GNU date command which is included in the "coreutils" package from MacPorts. It will be installed on your system as gdate. You can either use that, or link the date binary with the new gdate binary; your choice.