É possível obter o conjunto completo de opções unix para as ferramentas de linha de comando no OS X?


14

Eu sigo a Dica da ferramenta Unix no Twitter e é interessante que muitas das dicas publicadas não estejam disponíveis no OS X.

Por exemplo:

O cp - u copiará apenas os arquivos que não existem ou são mais recentes que os correspondentes existentes no diretório de destino.

Tentar isso na minha máquina resulta em:

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  

Por que essas opções não estão disponíveis e é possível obter acesso a elas no OS X?


Você também pode instalar o find, sed e awk com brew install coreutils findutils gnu-sed gawk. Consulte apple.stackexchange.com/questions/69223/… .
Lri

Aviso: se você instalar e usar as versões GNU das ferramentas cli, obterá as extensões do GNU, mas também as extensões da versão das ferramentas do OS X. Por exemplo, o comando cp nos coreutils do homebrew (nomeado gcppara evitar confusão) não sabe como copiar os metadados complexos que os arquivos do OS X podem ter (atributos estendidos, etc); portanto, se você usar gcpum arquivo de alias, a cópia terá informações críticas ausentes e não funcionará.
Gordon Davisson

@GordonDavisson obrigado pelo alerta. Esse é o arquivo adicionado adicionado a todos os meus diretórios? Eu acho que pode ser um plus :)
DQdlM

@KennyPeanuts: Você quer dizer o arquivo .DS_Store? É semelhante, mas não é o que estou falando (e gcp -Ro copiará junto com todo o resto). Se você quer dizer ._somefilename, que é um arquivo AppleDouble usado para armazenar metadados (a informação que eu estou falando) em alguns tipos de volumes estrangeiros, o que é ... complicado ...
Gordon Davisson

@GordonDavisson, obrigado pelo esclarecimento. É sobre esses arquivos ._somefilename que estou falando.
DQdlM 12/12

Respostas:


12

Obtenha o homebrew e instale os principais utilitários. Você pode ver se a versão GNU do cp suporta os sinalizadores que você deseja. Aqui está uma boa resposta em um site parceiro e trechos das etapas exatas necessárias para que o cp seja substituído pela versão GNU, se você desejar:

Aqui está o homebrew - http://mxcl.github.com/homebrew/
Aqui está a longa história - /superuser/476575/replace-os-xs-shell-commands-with-the-linux-versions/ 476594 # 476594


Um exemplo desse ambiente é o [Homebrew] ( http://mxcl.github.com/homebrew/ ) que, por exemplo, possui o GNU sedentre outras coisas. Depois de instalar o Homebrew, você pode digitar

brew install coreutils

e instale o GNU Coreutils . Estes irão fornecer-lhe sed, date, printf, wce muitas outras ferramentas que vêm com o GNU / Linux, mas não OS X. No entanto, de modo a não "substituição" binários OS padrão X, eles serão prefixados com gpor padrão. Então, depois de instalar o Coreutils, se você quiser usar o GNU sed, digite

gsed

Se isso é muito complicado de digitar toda vez, você pode adicionar um diretório "gnubin" ao seu PATH e apenas chamar o GNU sed com sed. Você precisará adicionar o seguinte ao seu ~/.bash_profile:

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


Está tudo bem em instalar usando port?
Adil Soomro 28/05

1
@AdilSoomro macports.org é uma ferramenta de longa data com uma boa reputação. Não vejo razão para não experimentá-lo - simplesmente não tenho experiência, uso e contribui para o homebrew.
bmike

3

A razão é que o OSX usa as ferramentas de linha de comando BSD e os usuários das dicas de ferramentas do Unix provavelmente estão usando o Linux, que usa as ferramentas de linha de comando GNU.

Você pode instalar ferramentas GNU no OSX (e BSD no Linux).

A maneira mais fácil é usar um gerenciador de pacotes como Macports, Homebrew ou Fink

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.