Ai-je besoin d'une distribution Linux pour apprendre la ligne de commande ou OS X serait-il suffisant?

12

Je vais apprendre à utiliser la ligne de commande. Plus précisément, j'utiliserai le livre: "La ligne de commande Linux: une introduction complète" . Maintenant, dois-je utiliser une distribution Linux pour parcourir le livre, ou OS X serait-il suffisant?

Si j'ai besoin d'une distribution Linux, est-ce que son utilisation via une machine virtuelle serait suffisante ou dois-je l'installer en mode natif?

Utku
la source
8
La seule raison pour laquelle vous auriez besoin d'installer un système d'exploitation sur du matériel physique et non une machine virtuelle serait pour les performances. Si vous essayez simplement d'apprendre les procédures de base, cela ne posera pas de problème. Il est probablement préférable d'exécuter quelque chose comme Arch dans une machine virtuelle.
Bratchley
même discussion sur apple.stackexchange.com/q/208692/7057
glenn jackman
4
La ligne de commande n'est qu'un lien entre vous et le système. La syntaxe du shell Bash peut être la même, mais lorsque vous devrez traiter des parties spécifiques au système, il y aura des différences. Par exemple, OS X n'a ​​pas de /procsystème de fichiers, les lecteurs USB ont tendance à n'apparaître /Volumespas /media/usernamecomme sur Ubuntu. CentOS a un dhclient.conffichier différent . Et ainsi de suite et ainsi de suite
Sergiy Kolodyazhnyy
4
Le doublon intersite proposé est très clairement une question différente , concernant les performances de virtualisation sur MacBook. La question n'est pas transposée.
Michael Homer
2
@Utku Je pense que ce qui pourrait aider serait de séparer quelques concepts: utiliser une ligne de commande et le système d'exploitation sur lequel vous l'utilisez. Si vous voulez connaître votre ligne de commande, OS X fonctionnerait, ainsi que Linux, BSD ou même Windows avec un certain effort. Si vous voulez vous familiariser avec UNIX ou Linux, la ligne de commande n'est qu'une petite partie de cela - c'est seulement l'interface à travers laquelle vous interagirez avec le système d'exploitation. Je pense que clarifier ce que vous cherchez facilitera également l'apprentissage :)
rickcnagy

Réponses:

33

Je recommande fortement d'exécuter Linux sur une machine virtuelle. Tous les logiciels sont disponibles en téléchargement gratuit et il n'y a aucune différence pratique entre l'exécution dans une machine virtuelle et l'exécution en mode natif à des fins d'apprentissage de la ligne de commande.

De plus, la ligne de commande Linux se compose principalement de coreutils bash + GNU , ce qui est très différent de BSD Unix (et OS X est un successeur de BSD Unix). Il y a une très grande différence de préférences dans l'écriture d'arguments dans BSD Unix et GNU Linux. Vous pouvez vous mordre même en tant que non-débutant avec différentes options aux utilitaires standard comme pset tarsi vous travaillez sur les deux systèmes.

L'utilisation d'OS X lorsque votre livre est spécifique à Linux génère régulièrement des incohérences et des différences qui apparaîtront superficielles lorsque vous serez plus expérimenté, mais seront tout simplement déroutantes lorsque vous apprendrez. Gardez les choses faciles pour vous.

Cela vous permettra également d'expérimenter sans craindre de casser votre machine en supprimant ou en modifiant des fichiers importants.

Et enfin, mais certainement pas des moindres, cela vous permettra de configurer une connexion SSH à votre machine virtuelle à partir de votre terminal OS X, afin que vous puissiez vous habituer à utiliser des clés SSH, et à l'idée que cela ne fait aucune différence que votre serveur Linux est une machine native, une VM locale, ou en cours d'exécution sur AWS ou Digital Ocean: tout fonctionne de la même façon!

seumasmac
la source
Soit dit en passant, est-ce que j'aurai également la même structure de répertoires dans une machine virtuelle que dans un Linux natif?
Utku
3
Oui. Pour vos besoins, c'est exactement la même chose qu'une installation native.
seumasmac
C'est la réponse la plus sûre mais en fonction du livre, je suppose qu'une introduction au livre de ligne de commande ne montrera pas beaucoup (le cas échéant) des différences. Après un coup d'œil au manuel, la seule chose qui m'est restée à l'esprit serait l'explication de la structure du répertoire.
suppliez
1
@Utku Si / dev / sda ou / dev / hda est mentionné dans le livre et que vous ne le trouvez pas dans votre installation, essayez de rechercher / dev / vda. C'est la seule différence possible à laquelle je puisse penser, qui vous importerait.
Kimmax
1
Vous n'avez même pas besoin d'utiliser une machine virtuelle, l'utilisation d'un CD live est également possible si vous ne voulez pas occuper beaucoup d'espace sur votre disque dur. Il peut également être démarré à partir d'un lecteur flash, et la création d'un lecteur flash CD / bootable prend très peu de temps.
Chris Cirefice du
18

OS X est suffisant pour apprendre la ligne de commande car c'est un UNIX certifié et conforme à POSIX. Si vous regardez un livre de ligne de commande spécifique à Linux, vous devez garder à l'esprit que les outils de l'espace utilisateur dans OS X sont dérivés de BSD tandis que les outils sur Linux sont GNU et qu'il existe des différences subtiles (et pas si subtiles) entre eux.

Si vous voulez apprendre avec les outils GNU, vous pouvez installer un espace utilisateur GNU via macports ou homebrew, ou faire une installation Linux complète dans une machine virtuelle.

casey
la source
Donc, je suppose qu'il n'y a pas de livre "générique" en ligne de commande? Un livre utilisera des outils GNU ou BSD. Est-ce correct?
Utku
1
Si vous avez un livre sur un shell (par exemple bash), il conviendra à peu près à n'importe quel système qui l'exécute. Cela varie lorsque vous commencez à utiliser les fonctionnalités du système d'exploitation ou des outils spécifiques en dehors du shell.
teppic
1
@teppic Mais quelle est l'utilité d'un shell tout seul ? AFAIK, un shell en lui-même est inutile car il n'a aucune commande à exécuter. Même les commandes les plus élémentaires comme lsdoivent provenir de GNU ou BSD (veuillez corriger si je me trompe). Donc, je pense que cela signifie que je dois choisir une chaîne d'outils (ou un environnement) et commencer à y apprendre la ligne de commande. Est-ce correct?
Utku
@Utku les commandes sont les mêmes (pour la plupart) mais les options et la sortie peuvent différer (souvent parce que GNU implémente de nombreuses extensions). Il est facile de faire la navette entre les outils BSD et GNU.
casey
@casey Je pourrais donc commencer par le livre sur OS X. Ensuite, si je rencontre un comportement non décrit comme dans le livre, je pourrais l'essayer sous Linux ou simplement regarder la variante BSD de la même commande?
Utku
9

Quelques bonnes réponses jusqu'à présent, mais une raison de plus de rester à l'écart des outils par défaut de la ligne de commande OS X est qu'il s'agit de versions très anciennes. Par exemple, OS X date grepde 2004 et date bashde 2007! La raison en est qu'Apple refuse d'expédier des outils sous licence GPL3.

Si vous ne souhaitez pas installer Linux proprement dit, vous pouvez installer manuellement les dernières versions (peut-être via un système de port comme MacPorts, Fink ou Homebrew).

Sparhawk
la source
3

Première différence:

ls * -lah

Fonctionne sur linux, échoue sur mac (les paramètres doivent venir en premier). Utilisez une machine virtuelle ou obtenez un livre pour mac os. Vous devriez apprendre celui que vous utiliserez plus tard, puis les différences.

user136809
la source
3
Vous devriez dire qu'il ls * -lahfonctionne sous Linux comme il fonctionne sous Linux et il fonctionne sous OS X comme il fonctionne sous OS X. La façon dont il fonctionne sous OS X est correcte selon POSIX (12. Conventions utilitaires / 12.2 Consignes de syntaxe utilitaire / Directive 9) : "Toutes les options doivent précéder les opérandes sur la ligne de commande." Comme décrit dans getopt (3) : «Si… la variable d'environnement POSIXLY_CORRECT est définie, le traitement des options s'arrête dès qu'un argument de non-option est rencontré.»
G-Man dit «Réinstalle Monica»
3

La meilleure façon d'apprendre unix est d'avoir un vrai travail à faire avec. Je dirais qu'il vaut la peine de rencontrer les différences entre les exemples spécifiques à Linux dans votre livre et les versions Mac des outils standard, juste pour pouvoir travailler avec vos propres fichiers et données dans votre environnement de travail normal (OS X).

La rencontre des différences sera également une expérience d'apprentissage précieuse, même si elle est parfois frustrante.

Il est également utile d'avoir une machine virtuelle Linux pour s'exercer (en particulier pour les commandes potentiellement dangereuses), mais rien ne vaut l'utilisation du monde réel pour l'apprentissage.

cas
la source