14 votos

¿Es posible obtener el conjunto completo de opciones unix para las herramientas de línea de comandos en OS X?

Sigo Consejo de herramientas de Unix en Twitter y es interesante que muchos de los consejos que se publican no están disponibles en OS X.

Por ejemplo:

cp - u sólo copiará los archivos que no existan, o que sean más nuevos que sus homólogos existentes, en el directorio de destino.

Probando esto en mi máquina resulta en:

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 qué no están disponibles estas opciones y es posible acceder a ellas en OS X?

0 votos

También puedes instalar find, sed y awk con brew install coreutils findutils gnu-sed gawk . Ver apple.stackexchange.com/questions/69223/ .

2 votos

Advertencia: si instalas y utilizas las versiones GNU de las herramientas cli, ganas las extensiones de GNU, pero también pierdes las extensiones de la versión de OS X de las herramientas. Por ejemplo, el comando cp en coreutils de homebrew (llamado gcp para evitar confusiones) no sabe cómo copiar los complejos metadatos que pueden tener los archivos de OS X (attrs extendidos, etc.); así que si utiliza gcp en un archivo de alias, a la copia le faltará información crítica y no funcionará.

0 votos

@GordonDavisson gracias por el aviso. ¿Es el archivo que se agrega ir todos mis directorios? Creo que eso puede ser una ventaja :)

14voto

Oskar Puntos 1242

Consigue homebrew y haz que instale las utilidades principales. Luego puedes ver si la versión GNU de cp soporta las banderas que deseas. Aquí hay una buena respuesta en un sitio asociado y voy a extractar los pasos exactos que necesitarás para que cp sea reemplazado por la versión GNU si lo deseas:

Aquí está la cerveza casera - http://mxcl.github.com/homebrew/
Esta es la larga historia - https://superuser.com/questions/476575/replace-os-xs-shell-commands-with-the-linux-versions/476594#476594


Un ejemplo de este tipo de entorno es [Homebrew] ( http://mxcl.github.com/homebrew/ ) que por ejemplo tiene GNU sed entre otras cosas. Una vez que hayas instalado Homebrew, puedes escribir

brew install coreutils

e instalar el GNU Coreutils . Estos le proporcionarán sed , date , printf , wc y muchas otras herramientas que se suministran con GNU/Linux, pero no con OS X. Sin embargo, para no "anular" los binarios por defecto de OS X, llevarán el prefijo g por defecto. Por lo tanto, después de instalar Coreutils, si desea utilizar GNU sed, escriba

gsed

Si esto es demasiado molesto para escribirlo cada vez, puede añadir un directorio "gnubin" a su PATH y simplemente llamar a GNU sed con sed . Deberá añadir lo siguiente a su ~/.bash_profile :

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

1 votos

¿Está bien instalar usando port ?

2 votos

@AdilSoomro macports.org es una herramienta de larga data con buena reputación. No veo ninguna razón para no probarla - sólo que no tengo experiencia y sí uso y contribuyo al homebrew.

0 votos

@AdilSoomro Sí, MacPorts es muy recomendable sobre otros gestores de paquetes ya que fue construido por los ingenieros de Apple - sudo port install coreutils .

4voto

yoliho Puntos 340

La razón es que OSX utiliza herramientas de línea de comandos BSD y los usuarios de herramientas Unix probablemente estén utilizando Linux, que utiliza herramientas de línea de comandos GNU.

Puedes instalar herramientas GNU en OSX (y BSD en Linux).

La forma más sencilla es utilizar un gestor de paquetes como Macports, Homebrew o Fink

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X