Como a linha de comando do Mac se compara ao Linux?

30

Eu amo o Ubuntu Linux - especialmente a linha de comando. Mas tenho que admitir que, pelo menos por enquanto, o Windows é mais fácil de usar - há mais software para isso, mais drivers e mais coisas simplesmente funcionam.

Saber que o Mac é baseado no Unix me faz pensar se é o ponto ideal entre eles. Mas eu me pergunto: qual a similaridade da linha de comando do Mac com a festança do Linux ? Eu poderia começar usando vim e bash scripting e git, etc? Comandos comuns, como alterar diretórios, seriam diferentes? Alguém conhece um recurso on-line de "comparação e contraste"?

Nathan Long
fonte

Respostas:

11

Bash é bash, portanto, o shell e seus built-ins são os mesmos. Mas esteja ciente de que o comportamento de algumas ferramentas como psou headpode diferir nos detalhes, portanto, seus scripts podem falhar.

Cees Timmerman
fonte
5
Lembre-se de que esse não é um problema do Mac vs. Linux, e sim de vários tipos de unix que fazem um problema ligeiramente diferente. Você encontrará o mesmo (na verdade, mais diferenças) entre o Linux e, por exemplo, o HP-UX.
precisa saber é o seguinte
2
Você pode padronizar o conjunto de ferramentas gnu binutils no Linux e OSX. Macports e homebrew serão instalados no OSX. Isso pelo menos padronizará coisas como ls / tar / etc. O ps ainda depende do SO.
Skarface
também file: file -ino linux enquanto estiver file -Ino osx Anthony️
Anthony Kong
30

O Mac OS X é um sistema operacional Unix e sua linha de comando é 99,9% igual a qualquer distribuição Linux. bashé o seu shell padrão e você pode compilar todos os mesmos programas e utilitários. Não há diferença notável. Você também pode encontrar vários projetos, como o MacPorts, que fornecem gerenciamento de pacotes para o Mac.

w0rm
fonte
1
+1: o acima é verdadeiro. Talvez você precise ter em mente que o seu mac usa uma intel ou um processador powerpc quando se trata de compilar código ou usar pacotes pré-criados. Entendo que novos macs são apenas intel, mas posso estar errado. typo @ w0rm: gerenciamento de pacotes *. :-)
Sirex 23/08
2
Embora seus scripts provavelmente funcionem para Mac e Linux, é sempre aconselhável testá-los nas duas plataformas. Eu já vi algumas diferenças (sutis) entre distribuições Linux e até mesmo entre versões diferentes da mesma versão Linux.
Roalt 23/08/10
1
FeeBSD para ser exato.
digitxp
6
@ Digit, que deve ser a versão BSD que eles cobram? s / F / Fr /;)
John T
18
99,9% não está correto. O OS X é uma variante BSD e não possui utilitários GNU. Você sempre pode instalá-los, mas muitos comandos têm opções diferentes. É Unix, mas não Linux.
Matteo
12

É muito semelhante, mas se você souber de alguma diferença entre o BSD e o Linux, espere que o Mac tenha o comportamento do BSD.

Neth
fonte
Interessante. Você pode elaborar mais sobre isso? Por que é que?
fat_mike
@fat_milke porque o OSX usa os utilitários BSD e não o GNU que o Linix usa
user151019
b / c o Mac OSX derivava de um kernel * nix (NeXTSTEP baseado em BSD) que se ramificava do Unix antes do Linux. Assim, eles acabaram com implementações ligeiramente diferentes de alguns utilitários. Veja en.wikipedia.org/wiki/MacOS
Nietzsche em
9

Algumas coisas - realmente depende do que você quer dizer com linha de comando.

  1. Você provavelmente executará o bash, que será o mesmo que o bash em qualquer outro UNIX. A linguagem de programação bash também será a mesma - desde que seja a mesma versão. As versões do Bash têm pequenas diferenças no idioma, mas isso não tem nada a ver com o MacOSX vs. Linux em si.

Você pode realmente se deparar com isso - / bin / bash em um Mac está fixado em 3.x por motivos de licenciamento. Você pode encontrar pequenos problemas de compatibilidade se estiver acostumado a 4 ou até 5.

  1. o bash por si só é um pequeno subconjunto de 'linha de comando'. Para ser útil, você normalmente usa outros utilitários UNIX comuns, como awk, ls ou cut. Devido à sua história (descendente do BSD, não do Linux ou SystemV), as versões dos utilitários para Mac serão diferentes daquelas com as quais você está acostumado no Linux (também conhecido como versões GNU). Eles terão pelo menos algumas diferenças de sinalizador e algumas diferenças de saída e funcionalidade que o Linux. Os scripts que os usam terão que ser alterados para compensar. BSD awk vs GNU gawk é bem diferente. OU, você pode obter essas versões GNU de macports ou home brew e definir seu PATH para que esses sejam os padrões (acima das versões incorporadas).

  2. O MacOS X também possui algumas novas ferramentas interessantes. opené bom, ele abrirá o objeto como se você tivesse clicado duas vezes nele. defaultspermite definir algumas preferências, outras nem nos painéis de preferências da GUI. textutilpode ser útil e saydivertido.

Rich Homolka
fonte
3

A funcionalidade da linha de comando no Mac e Linux é de fato semelhante, já que o OS X possui uma espécie de UNIX (chamado Darwin) sob a GUI que você vê.

O shell padrão no OS X é o bash, portanto, se você estiver familiarizado com isso, irá ajustar-se perfeitamente.

Em um Mac, o aplicativo de linha de comando padrão é Terminal. Também existem vários outros emuladores por aí, mas, em geral, o Terminal oferece uma aparência muito semelhante ao shell com o qual você está acostumado no Linux.

A principal fonte de diferenças, porém, são:

  • Diferentes argumentos de linha de comando às vezes ( dupor exemplo, veja, por exemplo). Os comandos principais como cdou lsetc. são semelhantes.
  • Há mais partes do OS X que não devem ser editadas manualmente, como você pode fazer no Linux. Este é um tópico por si só, mas lembre-se de que executar um Mac não é exatamente como executar uma caixa Linux em termos de configuração e manutenção.

Dito isto, também existem muitos hacks interessantes disponíveis na linha de comando no OS X (por exemplo, opencommnand). Existem muitos tópicos anteriores e posts no blog com mais informações.

Você também pode chegar em suas mãos um monte de pacotes de código aberto (ou seja git, hg, etc.) via MacPorts, alguns outros sistemas de gerenciamento de pacotes para OS X. Você Fink ou também pode construir outros pacotes fonte destinado para UNIX / Linux como sistemas como necessário .

dtlussier
fonte
0

Aqui está uma diferença. Experimente este comando no shell bash para Mac e Linux

find /etc -name "*.conf"

O Mac não exibe nada, mesmo que haja muitos arquivos .conf dentro do / etc.

Antony Thomas
fonte
1
Talvez você possa dizer às pessoas por que isso acontece.
Mads
1
Não tenho certeza, talvez isso tenha a ver com as expansões de nome de caminho no POSIX. Este comando funciona find /etc/* -name "*.conf". No entanto, isso foi fornecido como exemplo para contrastar a linha de comando MAC com a linha de comando LINUX. Não é possível justificar um voto negativo.
Antony Thomas
4
Isso porque / etc no OSX é um link simbólico. Se você tentar find /etc/ -name "*.conf", indica / etc é um diretório em vez de um arquivo. Por findpadrão, no Linux, os links simbólicos para os diretórios são tratados como diretórios?
MechEthan