Take the 2-minute tour ×
Ask Different is a question and answer site for power users of Apple hardware and software. It's 100% free, no registration required.

I follow Unix Tool Tip on Twitter and it is interesting that many of the tips that are posted are not available on OS X.

For example:

cp - u will only copy files that don't exist, or are newer than their existing counterparts, in the destination directory.

Trying this on my machine results in:

cp: illegal option -- u
usage: cp [-R [-H | -L | -P]] [-fi | -n] [-apvX] source_file target_file
   cp [-R [-H | -L | -P]] [-fi | -n] [-apvX] source_file ... target_directory  

Why are these options not available and is it possible to get access to them on OS X?

share|improve this question
    
You can also install find, sed, and awk with brew install coreutils findutils gnu-sed gawk. See apple.stackexchange.com/questions/69223/…. –  ؘؘؘؘ May 9 '13 at 15:50
    
Warning: if you install and use the GNU versions of cli tools, you gain GNU's extensions, but you also lose the extensions in OS X's version of the tools. For example, the cp command in homebrew's coreutils (named gcp to avoid confusion) doesn't know how to copy the complex metadata that OS X files can have (extended attrs, etc); so if you use gcp on an alias file, the copy will be missing critical info and will not work. –  Gordon Davisson May 11 '13 at 23:05
    
@GordonDavisson thanks for the heads up. Is that the .file that gets added go all my directories? I think that may be a plus :) –  KennyPeanuts May 11 '13 at 23:40
    
@KennyPeanuts: Do you mean the .DS_Store file? That's similar but not what I'm talking about (and gcp -R will copy it along with everything else). If you mean ._somefilename, that's an AppleDouble file used to store metadata (the info I'm talking about) on some kinds of foreign volumes, which is ... complicated... –  Gordon Davisson May 12 '13 at 1:32
    
@GordonDavisson thanks for the clarification. It's those ._somefilename files I am talking about. –  KennyPeanuts May 12 '13 at 12:29

2 Answers 2

up vote 6 down vote accepted

Get homebrew and have it install the core utilities. You can then see if the GNU version of cp supports the flags you desire. Here is a good answer on a partner site and I'll excerpt the exact steps you'll need to have cp be replaced by the GNU version if you wish:

Here's homebrew - http://mxcl.github.com/homebrew/
Here's the long story - http://superuser.com/questions/476575/replace-os-xs-shell-commands-with-the-linux-versions/476594#476594


An example of such an environment is [Homebrew] (http://mxcl.github.com/homebrew/) which for example has GNU sed among other things. Once you've installed Homebrew, you can type

brew install coreutils

and install the GNU Coreutils. These will provide you with sed, date, printf, wc and many other tools that ship with GNU/Linux, but not OS X. However, so as not to "override" default OS X binaries, they will be prefixed with g by default. So, after installing the Coreutils, if you want to use GNU sed, type

gsed

If this is too much of a hassle to type every time, you can add a "gnubin" directory to your PATH and just call GNU sed with sed. You will need to add the following to your ~/.bash_profile:

PATH="$(brew --prefix coreutils)/libexec/gnubin:$PATH"

share|improve this answer

The reason is that OSX uses BSD command line tools and the Unix tool tip users are probably using Linux which uses GNU command line tools.

You can install GNU tools on OSX (and BSD on Linux).

The easiest way is to use a package manager like Macports, Homebrew or Fink

share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.