How does Mac's command line compare to Linux?

86,679

Solution 1

Bash is bash so the shell and its built-ins are the same. But be aware that the behavior of some tools like ps or head can differ in the details thus your scripts might fail.

Solution 2

Mac OS X is a Unix OS and its command line is 99.9% the same as any Linux distribution. bash is your default shell and you can compile all of the same programs and utilities. There's no notable difference. You can also find various projects like MacPorts which provide package management for Mac.

Solution 3

A couple things - it really depends on what you mean by command line.

  1. You'll probably run bash, which will be the same as bash on any other UNIX. The bash programming language will be the same too - as long as it's the same version. Bash versions have slight differences in the language, but this has nothing to do with MacOSX vs. Linux per se.

You may actually bump into this - /bin/bash on a Mac is pinned to 3.x for licensing reasons. You may find minor compatibility issues if you’re used to 4 or even 5.

  1. bash by itself is a small subset of 'command line'. To be useful you typically use some other common UNIX utilities such as awk, or ls, or cut. Because of its history (it's descended from BSD, not Linux or SystemV), the Mac versions of utilities will be different than the ones you're used to on Linux (a.k.a. GNU versions). These will have at least some flag differences, and some output and functionality differences than Linux. Scripts that use these will have to be changed to compensate. BSD awk vs GNU gawk is pretty different. OR, you can get these GNU versions from macports or home brew, and set your PATH so that these are the defaults (over the built in versions).

  2. MacOS X also has some new cool tools. open is nice, it will open the object as if you double clicked it. defaults allows you to set some preferences, some not even in the GUI preferences panels. textutil can be useful and say can be fun.

Solution 4

It's very similar, but if you know of any BSD v. Linux differences, expect the Mac to have the BSD behavior.

Solution 5

The command line functionality on Mac and Linux are indeed similar as OS X has a flavour of UNIX (called Darwin) underneath the GUI that you see.

The default shell on OS X is bash, so if you're familiar with that you will adjust nicely.

On a Mac, the default command line application is Terminal. There are also a number of other emulators out there but overall Terminal provides a very similar look and feel to the shell you are used to in Linux.

The primary source of differences though are:

  • Different command line arguments at times (i.e. see du for example). The primary commands like cd or ls etc. are similar.
  • There are more parts of OS X that shouldn't be edited by hand as you might do in Linux. This is a topic of its own, but just be aware that running a Mac is not exactly like running a Linux box in terms of configuration and upkeep.

That being said there are also a lot of cool hacks available from the command line in OS X (e.g. open commnand). There are lots of previous threads and blog posts out there with more info.

You can also get your hands on a bunch of opensource packages (i.e. git, hg, etc.) via MacPorts, Fink or a few other package management systems for OS X. You can also build other source packages intended for UNIX/Linux like systems as necessary.

Share:
86,679

Related videos on Youtube

Nathan Long
Author by

Nathan Long

I code mostly in Ruby and Elixir. More about me at nathanmlong.com and Stackoverflow Careers.

Updated on September 17, 2022

Comments

  • Nathan Long
    Nathan Long over 1 year

    I love Ubuntu Linux - especially the commmand line. But I have to admit that, at least for now, Windows is more user-friendly - there's more software for it, more drivers, and more stuff just works.

    Knowing that Mac is built on Unix makes me wonder if it's the sweet spot between them. But I wonder: how similar is the Mac command line to Linux's bash? Could I pick right up with using vim and bash scripting and git, etc? Would common commands like changing directories be different? Does anybody know an online "compare and contrast" resource?

    • Cees Timmerman
      Cees Timmerman about 5 years
    • siliconrockstar
      siliconrockstar about 4 years
      Dude - VmWare. I run an Ubuntu 18.04.4 virtual machine on top of Windows 10 on cheap but beefy server hardware. Everywhere I work hands me a four thousand dollar Macbook that I try to work on for a couple weeks until I want to throw it out a window due to shell differences. Then it becomes a nice paperweight.
  • Roalt
    Roalt over 13 years
    Although your scripts will probably work for both Mac and Linux, it's always wise to test them on both platforms. I've seen quite some (subtle) differences between linux distributions and even between different versions of the same linux version.
  • KeithB
    KeithB over 13 years
    Bear in mind that this isn't so much a Mac vs. Linux problem, rather than a various flavors of unix do things slightly different problem. You would find the same (actually more differences) between Linux and, for example, HP-UX.
  • digitxp
    digitxp over 13 years
    FeeBSD to be exact.
  • John T
    John T over 13 years
    @digit, that must be the BSD version they charge for? s/F/Fr/ ;)
  • Nathan Long
    Nathan Long almost 12 years
    Another thing I've discovered is that some programs one uses from the command line have small differences. For example, GNU find supports an exec option, but the default find on OSX doesn't.
  • Mads
    Mads over 11 years
    Maybe you could tell people why this is.
  • brevno
    brevno over 11 years
    @NathanLong OS X's find should support -exec, but not -printf.
  • MechEthan
    MechEthan over 11 years
    That's because /etc on OSX is a symbolic link. If you try find /etc/ -name "*.conf" it indicates /etc is a directory instead of a file. Does find in Linux treat symbolic links to directories as directories by default?
  • Matteo
    Matteo about 11 years
    99.9% is not correct. OS X is a BSD variant and does not have GNU utilities. You can always install them but an a lot of commands have different options. It's Unix but not Linux.
  • Nathan Long
    Nathan Long about 10 years
    @Matteo - good point. I've found it helpful to check man pages to see if something is the same on Mac/Linux. Eg, run man sort on two systems and look at the attribution.
  • Diego Andrés Díaz Espinoza
    Diego Andrés Díaz Espinoza almost 10 years
    also take as example 'date' command; far not the same. eg: date "+%Y-%m-%d %H:%M:%S" --date "2014-05-06 05:05:05" which on OSx doesnt work
  • skarface
    skarface about 9 years
    You can standardize on the gnu binutils toolset across linux and OSX. Macports and homebrew will both install on OSX. This will at least standardize things like ls/tar/etc. ps is still OS dependent.
  • Benubird
    Benubird almost 9 years
    I frequently use the commands cat and cal. Imagine my surprise, to discover that on a mac they accept different parameters. 99.9% is way off, when I have to consult a manual to use basic utilities like cat or find.
  • fat_mike
    fat_mike over 7 years
    Interesting. Can you elaborate more on that? Why is that?
  • mmmmmm
    mmmmmm over 7 years
    @fat_milke because OSX uses the BSD utilities not GNU which Linix uses
  • tripleee
    tripleee about 6 years
    Indeed, this is an example of 100% bogus statistics. Depending on your use case the range is off the cuff something like 70%-100% but attempting to quantify this as a percentage is really just silly.
  • Anthony Kong
    Anthony Kong almost 5 years
    also file: file -i on linux while file -I in osx ☹️
  • Nietzsche
    Nietzsche over 4 years
    b/c the Mac OSX derived from a *nix kernel (NeXTSTEP based on BSD) that branched off of Unix earlier than Linux. Thus, they ended up w/ slightly different implementations of some utils. See en.wikipedia.org/wiki/MacOS
  • Nietzsche
    Nietzsche over 4 years
  • siliconrockstar
    siliconrockstar about 4 years
    'There's no notable difference.' Lol. Just because you haven't found the differences doesn't mean they aren't there. There are significant differences in switches and behavior for some common utilities - grep being the one I stumble across most frequently.
  • eddy147
    eddy147 almost 3 years
    Agree with @siliconrockstar it's not the same, try $ rm dirname -rf for instance. You have to use rm -rf dirname. Don't know why this is the highest rated answer, it's just plain wrong.