Come si confronta la riga di comando di Mac con Linux?


30

Adoro Ubuntu Linux, in particolare la linea commmand. Ma devo ammettere che, almeno per ora, Windows è più user-friendly: c'è più software per esso, più driver e più cose funzionano.

Sapere che il Mac è basato su Unix mi fa chiedere se sia il punto debole tra di loro. Ma mi chiedo: quanto è simile la riga di comando del Mac alla bash di Linux ? Potrei imparare subito usando Vim e Bash scripting e Git, ecc.? Comandi comuni come cambiare directory sarebbero diversi? Qualcuno conosce una risorsa online "confronta e contrapponi"?


Risposte:


11

Bash è bash quindi la shell e i suoi built-in sono gli stessi. Ma tieni presente che il comportamento di alcuni strumenti come pso headpuò differire nei dettagli, pertanto i tuoi script potrebbero non riuscire.


5
Tieni presente che questo non è tanto un problema Mac contro Linux, piuttosto che una varietà di unix fanno cose leggermente diverse. Troveresti la stessa (in realtà più differenze) tra Linux e, ad esempio, HP-UX.
KeithB,

2
È possibile standardizzare sul set di strumenti di gnu binutils su Linux e OSX. Macport e homebrew verranno entrambi installati su OSX. Questo almeno standardizzerà cose come ls / tar / etc. ps è ancora dipendente dal sistema operativo.
skarface,

anche file: file -isu linux mentre file -Iin osx ☹️
Anthony Kong il

30

Mac OS X è un sistema operativo Unix e la sua riga di comando è il 99,9% uguale a qualsiasi distribuzione Linux. bashè la shell predefinita e puoi compilare tutti gli stessi programmi e utilità. Non c'è alcuna differenza notevole. Puoi anche trovare vari progetti come MacPorts che forniscono la gestione dei pacchetti per Mac.


1
+1: quanto sopra è vero. Potrebbe essere necessario tenere presente che il tuo mac utilizza un processore Intel o PowerPC quando si tratta di compilare codice o utilizzare pacchetti predefiniti, capisco che i nuovi mac sono solo intel ma potrei sbagliarmi. typo @ w0rm: gestione del pacchetto *. :-)
Sirex,

2
Sebbene i tuoi script probabilmente funzioneranno sia per Mac che per Linux, è sempre consigliabile testarli su entrambe le piattaforme. Ho visto alcune (sottili) differenze tra le distribuzioni di Linux e persino tra diverse versioni della stessa versione di Linux.
Roalt,

1
FeeBSD per essere esatti.
digitxp

6
@digit, deve essere la versione BSD che fanno pagare? s / F / Fr /;)
John T

18
Il 99,9% non è corretto. OS X è una variante BSD e non ha utility GNU. Puoi sempre installarli, ma molti comandi hanno opzioni diverse. È Unix ma non Linux.
Matteo,

12

È molto simile, ma se conosci differenze BSD v. Linux, ti aspetti che il Mac abbia il comportamento BSD.


Interessante. Puoi approfondire questo? Perché?
fat_mike,

@fat_milke perché OSX utilizza le utility BSD non GNU utilizzate da
Linix

b / c il Mac OSX derivava da un kernel * nix (NeXTSTEP basato su BSD) che si ramificava da Unix prima di Linux. Quindi, hanno finito con implementazioni leggermente diverse di alcuni programmi di utilità. Vedi en.wikipedia.org/wiki/MacOS
Nietzsche il


9

Un paio di cose: dipende davvero da cosa intendi per riga di comando.

  1. Probabilmente eseguirai bash, che sarà lo stesso di bash su qualsiasi altro UNIX. Anche il linguaggio di programmazione bash sarà lo stesso, purché sia ​​la stessa versione. Le versioni di Bash hanno lievi differenze nella lingua, ma questo non ha nulla a che fare con MacOSX rispetto a Linux in sé.

Puoi effettivamente imbatterti in questo - / bin / bash su un Mac è bloccato su 3.x per motivi di licenza. Potresti riscontrare problemi di compatibilità minori se sei abituato a 4 o anche a 5.

  1. bash di per sé è un piccolo sottoinsieme di "riga di comando". Per essere utile, in genere si utilizzano alcune altre utilità UNIX comuni come awk, o ls o cut. A causa della sua storia (discende da BSD, non da Linux o SystemV), le versioni di utility per Mac saranno diverse da quelle a cui sei abituato su Linux (ovvero le versioni GNU). Questi avranno almeno alcune differenze di flag e alcune differenze di output e funzionalità rispetto a Linux. Gli script che usano questi dovranno essere modificati per compensare. BSD awk vs GNU gawk è piuttosto diverso. OPPURE, puoi ottenere queste versioni GNU da macport o birra fatta in casa e impostare il tuo PERCORSO in modo che queste siano le impostazioni predefinite (rispetto alle versioni integrate).

  2. MacOS X ha anche alcuni nuovi fantastici strumenti. openè bello, aprirà l'oggetto come se avessi fatto doppio clic su di esso. defaultsconsente di impostare alcune preferenze, alcune nemmeno nei pannelli delle preferenze della GUI. textutilpuò essere utile e saypuò essere divertente.


3

Le funzionalità della riga di comando su Mac e Linux sono effettivamente simili poiché OS X ha un sapore di UNIX (chiamato Darwin) sotto la GUI che vedi.

La shell predefinita su OS X è bash, quindi se hai familiarità con questo ti adatterai bene.

Su un Mac, l'applicazione della riga di comando predefinita è Terminale. Esistono anche molti altri emulatori, ma nel complesso Terminal fornisce un aspetto molto simile alla shell a cui siete abituati in Linux.

La fonte primaria di differenze è però:

  • A volte diversi argomenti della riga di comando (ad es. Vedere duad esempio). I comandi primari come cdo lsecc. Sono simili.
  • Ci sono più parti di OS X che non dovrebbero essere modificate a mano come si potrebbe fare in Linux. Questo è un argomento a sé stante, ma tieni presente che eseguire un Mac non è esattamente come eseguire un box Linux in termini di configurazione e manutenzione.

Detto questo, ci sono anche molti fantastici hack disponibili dalla riga di comando in OS X (ad es. openComando). Esistono molti thread e post di blog precedenti con ulteriori informazioni.

Puoi anche mettere le mani su un sacco di pacchetti opensource (ad esempio git, hgecc.) Tramite MacPorts, Fink o alcuni altri sistemi di gestione dei pacchetti per OS X. Puoi anche creare altri pacchetti sorgente destinati a sistemi UNIX / Linux come necessario .


0

Ecco una differenza. Prova questo comando in entrambe le shell bash per Mac e Linux

find /etc -name "*.conf"

Il Mac non mostra nulla, anche se ci sono molti file .conf all'interno di / etc.


1
Forse potresti dire alla gente perché questo è.
Mads,

1
Non sono sicuro, forse ha a che fare con le espansioni del percorso in POSIX. Questo comando funziona find /etc/* -name "*.conf". Tuttavia, ciò è stato fornito come esempio per contrastare la riga di comando MAC con la riga di comando LINUX. Non riesco a ragionare con un voto.
Antony Thomas,

4
Questo perché / etc su OSX è un collegamento simbolico. Se ci provi find /etc/ -name "*.conf"indica / etc è una directory anziché un file. Fa findin Linux trattare collegamenti simbolici a directory come directory di default?
MechEthan
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.