Comment la ligne de commande de Mac se compare-t-elle à Linux?

30

J'adore Ubuntu Linux - en particulier la ligne de commande. Mais je dois admettre que, du moins pour l'instant, Windows est plus convivial - il y a plus de logiciels, plus de pilotes et plus de choses qui fonctionnent.

Sachant que Mac est construit sur Unix, je me demande si c'est le point idéal entre eux. Mais je me demande: dans quelle mesure la ligne de commande Mac est-elle similaire à la bash de Linux ? Puis-je reprendre avec l'utilisation de scripts vim et bash et git, etc.? Les commandes courantes comme changer les répertoires seraient-elles différentes? Quelqu'un connaît-il une ressource en ligne «comparer et contraster»?

Nathan Long
la source

Réponses:

11

Bash est bash donc le shell et ses éléments intégrés sont les mêmes. Mais sachez que le comportement de certains outils comme psou headpeut différer dans les détails, vos scripts peuvent donc échouer.

Cees Timmerman
la source
5
Gardez à l'esprit que ce n'est pas tellement un problème Mac contre Linux, plutôt qu'une variété de saveurs d'Unix qui font des choses légèrement différentes. Vous trouveriez les mêmes (en fait plus de différences) entre Linux et, par exemple, HP-UX.
KeithB
2
Vous pouvez standardiser le jeu d'outils gnu binutils sur linux et OSX. Macports et homebrew s'installeront tous les deux sur OSX. Cela normalisera au moins des choses comme ls / tar / etc. ps dépend toujours du système d'exploitation.
skarface
aussi file: file -isur linux file -Ien osx
Anthony
30

Mac OS X est un système d'exploitation Unix et sa ligne de commande est identique à 99,9% à toute distribution Linux. bashest votre shell par défaut et vous pouvez compiler tous les mêmes programmes et utilitaires. Il n'y a pas de différence notable. Vous pouvez également trouver divers projets comme MacPorts qui fournissent la gestion des packages pour Mac.

w0rm
la source
1
+1: ce qui précède est vrai. Vous devrez peut-être garder à l'esprit que votre Mac utilise un processeur Intel ou PowerPc lorsqu'il s'agit de compiler du code ou d'utiliser des packages prédéfinis, je comprends que les nouveaux Mac ne sont que des Intel mais je peux me tromper. typo @ w0rm: gestion du package *. :-)
Sirex
2
Bien que vos scripts fonctionnent probablement pour Mac et Linux, il est toujours judicieux de les tester sur les deux plates-formes. J'ai vu pas mal de différences (subtiles) entre les distributions linux et même entre les différentes versions de la même version linux.
Roalt
1
FeeBSD pour être exact.
digitxp
6
@digit, ce doit être la version BSD qu'ils facturent? s / F / Fr /;)
John T
18
99,9% n'est pas correct. OS X est une variante BSD et n'a pas d'utilitaires GNU. Vous pouvez toujours les installer mais de nombreuses commandes ont différentes options. C'est Unix mais pas Linux.
Matteo
12

C'est très similaire, mais si vous connaissez des différences entre BSD et Linux, attendez-vous à ce que le Mac ait le comportement BSD.

Neth
la source
Intéressant. Pouvez-vous nous en dire plus à ce sujet? Pourquoi donc?
fat_mike
@fat_milke car OSX utilise les utilitaires BSD et non GNU que Linix utilise
user151019
b / c le Mac OSX dérivé d'un noyau * nix (NeXTSTEP basé sur BSD) qui a dérivé d'Unix plus tôt que Linux. Ainsi, ils ont fini avec des implémentations légèrement différentes de certains utilitaires. Voir en.wikipedia.org/wiki/MacOS
Nietzsche
9

Quelques choses - cela dépend vraiment de ce que vous entendez par ligne de commande.

  1. Vous exécuterez probablement bash, qui sera le même que bash sur tout autre UNIX. Le langage de programmation bash sera également le même - tant qu'il s'agit de la même version. Les versions de Bash ont de légères différences dans la langue, mais cela n'a rien à voir avec MacOSX contre Linux en soi.

Vous pouvez en fait tomber dessus - / bin / bash sur un Mac est épinglé à 3.x pour des raisons de licence. Vous pouvez rencontrer des problèmes de compatibilité mineurs si vous êtes habitué à 4 ou même 5.

  1. bash en lui-même est un petit sous-ensemble de «ligne de commande». Pour être utile, vous utilisez généralement d'autres utilitaires UNIX courants tels que awk, ls ou cut. En raison de son historique (il est issu de BSD, pas de Linux ou SystemV), les versions Mac des utilitaires seront différentes de celles auxquelles vous êtes habitué sous Linux (aka versions GNU). Ceux-ci auront au moins quelques différences d'indicateur et quelques différences de sortie et de fonctionnalité par rapport à Linux. Les scripts qui les utilisent devront être modifiés pour compenser. BSD awk vs GNU gawk est assez différent. OU, vous pouvez obtenir ces versions GNU depuis macports ou home brew, et définir votre PATH de sorte que ce soient les valeurs par défaut (par rapport aux versions intégrées).

  2. MacOS X propose également de nouveaux outils sympas. openest agréable, il ouvrira l'objet comme si vous double-cliquiez dessus. defaultsvous permet de définir certaines préférences, d'autres même pas dans les panneaux de préférences de l'interface graphique. textutilpeut être utile et sayamusant.

Rich Homolka
la source
3

Les fonctionnalités de ligne de commande sur Mac et Linux sont en effet similaires car OS X a une saveur UNIX (appelée Darwin) sous l'interface graphique que vous voyez.

Le shell par défaut sur OS X est bash, donc si vous êtes familier avec cela, vous vous ajusterez bien.

Sur un Mac, l'application de ligne de commande par défaut est Terminal. Il existe également un certain nombre d'autres émulateurs, mais dans l'ensemble, Terminal offre une apparence et une convivialité très similaires au shell auquel vous êtes habitué sous Linux.

La principale source de différences est cependant:

  • Différents arguments de ligne de commande parfois (c.-à-d. Voir dupar exemple). Les commandes principales comme cdou lsetc. sont similaires.
  • Il y a plus de parties d'OS X qui ne devraient pas être éditées à la main comme vous pourriez le faire sous Linux. C'est un sujet qui lui est propre, mais sachez que l'exécution d'un Mac n'est pas exactement comme l'exécution d'une boîte Linux en termes de configuration et d'entretien.

Cela étant dit, il existe également de nombreux hacks sympas disponibles à partir de la ligne de commande dans OS X (par exemple, opencommande). Il existe de nombreux fils de discussion et articles de blog précédents avec plus d'informations.

Vous pouvez également mettre la main sur un tas de packages opensource (c.-à git- d . hg, Etc.) via MacPorts, Fink ou quelques autres systèmes de gestion de packages pour OS X. Vous pouvez également créer d'autres packages source destinés à des systèmes de type UNIX / Linux si nécessaire. .

dtlussier
la source
0

Voici une différence. Essayez cette commande dans le shell bash Mac et Linux

find /etc -name "*.conf"

Mac n'affiche rien, même s'il y a beaucoup de fichiers .conf dans / etc.

Antony Thomas
la source
1
Vous pourriez peut-être expliquer aux gens pourquoi.
Mads
1
Pas sûr, peut-être que cela a à voir avec les extensions de chemin dans POSIX. Cette commande fonctionne find /etc/* -name "*.conf". Néanmoins, cela a été fourni à titre d'exemple pour comparer la ligne de commande MAC à la ligne de commande LINUX. Impossible de raisonner un vote -ve.
Antony Thomas
4
C'est parce que / etc sur OSX est un lien symbolique. Si vous essayez, find /etc/ -name "*.conf"cela indique que / etc est un répertoire au lieu d'un fichier. Sous findLinux, les liens symboliques vers les répertoires sont-ils traités comme des répertoires par défaut?
MechEthan