¿Cómo se compara la línea de comandos de Mac con Linux?

30

Me encanta Ubuntu Linux, especialmente la línea de comandos. Pero debo admitir que, al menos por ahora, Windows es más fácil de usar: hay más software, más controladores y más cosas simplemente funcionan.

Saber que Mac está construido en Unix me hace preguntarme si es el punto óptimo entre ellos. Pero me pregunto: ¿qué tan similar es la línea de comandos de Mac al bash de Linux ? ¿Podría continuar usando vim y bash scripting y git, etc.? ¿Serían diferentes los comandos comunes como cambiar directorios? ¿Alguien conoce un recurso en línea de "comparar y contrastar"?

Nathan Long
fuente

Respuestas:

11

Bash es bash, por lo que el shell y sus elementos integrados son iguales. Pero tenga en cuenta que el comportamiento de algunas herramientas les gusta pso headpuede diferir en los detalles, por lo que sus scripts pueden fallar.

Cees Timmerman
fuente
55
Tenga en cuenta que esto no es tanto un problema de Mac vs. Linux, en lugar de una variedad de sabores de Unix que hacen un problema ligeramente diferente. Encontraría lo mismo (en realidad, más diferencias) entre Linux y, por ejemplo, HP-UX.
KeithB el
2
Puede estandarizar el conjunto de herramientas gnu binutils en Linux y OSX. Macports y homebrew se instalarán en OSX. Esto al menos estandarizará cosas como ls / tar / etc. ps sigue dependiendo del sistema operativo.
skarface
también file: file -ien linux mientras está file -Ien osx ☹️
Anthony Kong
30

Mac OS X es un sistema operativo Unix y su línea de comando es 99.9% igual que cualquier distribución de Linux. bashes su shell predeterminado y puede compilar todos los mismos programas y utilidades. No hay diferencia notable. También puede encontrar varios proyectos como MacPorts que proporcionan administración de paquetes para Mac.

w0rm
fuente
1
+1: lo anterior es cierto. Es posible que deba tener en cuenta si su Mac usa un procesador Intel o PowerPc cuando se trata de compilar código o usar paquetes preconstruidos, entiendo que los nuevos Mac son solo Intel pero puedo estar equivocado. error tipográfico @ w0rm: paquete * gestión. :-)
Sirex
2
Aunque sus scripts probablemente funcionarán tanto para Mac como para Linux, siempre es aconsejable probarlos en ambas plataformas. He visto algunas diferencias (sutiles) entre las distribuciones de Linux e incluso entre diferentes versiones de la misma versión de Linux.
Roalt el
1
FeeBSD para ser exactos.
digitxp
66
@digit, ¿esa debe ser la versión BSD que cobran? s / F / Fr /;)
John T
18
99.9% no es correcto. OS X es una variante BSD y no tiene utilidades GNU. Siempre puede instalarlos, pero muchos comandos tienen diferentes opciones. Es Unix pero no Linux.
Matteo
12

Es muy similar, pero si conoce alguna diferencia entre BSD y Linux, espere que la Mac tenga el comportamiento BSD.

Neth
fuente
Interesante. ¿Puedes dar más detalles sobre eso? ¿Porqué es eso?
fat_mike
@fat_milke porque OSX usa las utilidades BSD no GNU que usa
Linix
b / c Mac OSX derivado de un kernel * nix (NeXTSTEP basado en BSD) que se ramificó de Unix antes que Linux. Por lo tanto, terminaron con implementaciones ligeramente diferentes de algunas utilidades. Ver en.wikipedia.org/wiki/MacOS
Nietzsche
9

Un par de cosas: realmente depende de lo que entiendas por línea de comandos.

  1. Probablemente ejecutará bash, que será lo mismo que bash en cualquier otro UNIX. El lenguaje de programación bash también será el mismo, siempre y cuando sea la misma versión. Las versiones de Bash tienen ligeras diferencias en el idioma, pero esto no tiene nada que ver con MacOSX vs. Linux per se.

En realidad, puede toparse con esto: / bin / bash en una Mac está anclado a 3.x por razones de licencia. Puede encontrar problemas menores de compatibilidad si está acostumbrado a 4 o incluso 5.

  1. bash en sí mismo es un pequeño subconjunto de 'línea de comando'. Para ser útil, normalmente utiliza otras utilidades comunes de UNIX como awk, o ls, o cut. Debido a su historia (desciende de BSD, no de Linux o SystemV), las versiones de Mac de las utilidades serán diferentes a las que está acostumbrado en Linux (también conocido como versiones de GNU). Estos tendrán al menos algunas diferencias de bandera, y algunas diferencias de salida y funcionalidad que Linux. Los scripts que usan estos tendrán que cambiarse para compensar. BSD awk vs GNU gawk es bastante diferente. O bien, puede obtener estas versiones de GNU de macports o home brew, y configurar su RUTA para que estos sean los valores predeterminados (sobre las versiones integradas).

  2. MacOS X también tiene algunas herramientas nuevas y geniales. openes agradable, abrirá el objeto como si hiciera doble clic en él. defaultsle permite establecer algunas preferencias, algunas ni siquiera en los paneles de preferencias de la GUI. textutilPuede ser útil y saypuede ser divertido.

Rich Homolka
fuente
3

La funcionalidad de la línea de comandos en Mac y Linux es de hecho similar, ya que OS X tiene un sabor de UNIX (llamado Darwin) debajo de la GUI que ve.

El shell predeterminado en OS X es bash, por lo que si está familiarizado con eso, se ajustará bien.

En una Mac, la aplicación de línea de comando predeterminada es Terminal. También hay una serie de otros emuladores, pero el Terminal en general proporciona una apariencia muy similar al shell al que está acostumbrado en Linux.

Sin embargo, la fuente principal de diferencias son:

  • Diferentes argumentos de línea de comando a veces (es decir, ver dupor ejemplo). Los comandos principales como cdo lsetc. son similares.
  • Hay más partes de OS X que no deberían editarse a mano como lo haría en Linux. Este es un tema en sí mismo, pero tenga en cuenta que ejecutar una Mac no es exactamente como ejecutar una caja de Linux en términos de configuración y mantenimiento.

Dicho esto, también hay muchos hacks geniales disponibles desde la línea de comandos en OS X (por ejemplo, opencommnand). Hay muchos hilos y publicaciones de blog anteriores con más información.

También puede obtener un montón de paquetes de código abierto (es decir git, hgetc.) a través de MacPorts, Fink o algunos otros sistemas de administración de paquetes para OS X. También puede crear otros paquetes fuente destinados a sistemas similares a UNIX / Linux, según sea necesario. .

dtlussier
fuente
0

Aquí hay una diferencia. Pruebe este comando en el shell bash de Mac y Linux

find /etc -name "*.conf"

Mac no muestra nada, aunque hay muchos archivos .conf dentro de / etc.

Antony Thomas
fuente
1
Tal vez podrías decirle a la gente por qué es esto.
Mads
1
No estoy seguro, tal vez tenga que ver con las expansiones de nombre de ruta en POSIX. Este comando funciona find /etc/* -name "*.conf". Sin embargo, eso se proporcionó como un ejemplo para contrastar la línea de comando MAC con la línea de comando LINUX. No se puede razonar un voto -ve.
Antony Thomas el
44
Eso es porque / etc en OSX es un enlace simbólico. Si lo intenta find /etc/ -name "*.conf", indica que / etc es un directorio en lugar de un archivo. ¿ findEn Linux trata los enlaces simbólicos a directorios como directorios por defecto?
MechEthan