Benötige ich eine Linux-Distribution, um die Kommandozeile zu erlernen, oder würde OS X ausreichen?

12

Ich werde lernen, wie man die Kommandozeile benutzt. Konkret werde ich das Buch "Die Linux-Befehlszeile: Eine vollständige Einführung" verwenden . Muss ich jetzt eine Linux-Distribution verwenden, um durch das Buch zu gehen, oder würde OS X ausreichen?

Wenn ich eine Linux-Distribution benötige, würde es ausreichen, sie über eine VM zu verwenden, oder muss ich sie nativ installieren?

Utku
quelle
8
Der einzige Grund, warum Sie ein Betriebssystem auf physischer Hardware und keine VM installieren müssen, ist die Leistung. Wenn Sie nur versuchen, grundlegende Verfahren zu erlernen, ist dies kein Problem. Es ist wahrscheinlich vorzuziehen, so etwas wie Arch in einer VM auszuführen.
Bratchley
gleiche Diskussion auf apple.stackexchange.com/q/208692/7057
Glenn Jackman
4
Die Befehlszeile ist nur eine Verbindung zwischen Ihnen und dem System. Die Syntax der Bash-Shell mag identisch sein, aber wenn Sie sich mit systemspezifischen Teilen befassen müssen, wird es Unterschiede geben. Zum Beispiel hat OS X kein /procDateisystem, USB-Laufwerke erscheinen in der Regel /Volumesnicht so /media/usernamewie unter Ubuntu. CentOS hat eine andere dhclient.confDatei. Und so weiter und so fort
Sergiy Kolodyazhnyy
4
Bei dem vorgeschlagenen standortübergreifenden Duplikat handelt es sich eindeutig um eine andere Frage zur Virtualisierungsleistung auf MacBooks. Die Frage ist nicht gekreuzt.
Michael Homer
2
@Utku Ich denke, was helfen könnte, wäre ein paar Konzepte zu trennen: Verwenden einer Befehlszeile und des Betriebssystems, auf dem Sie sie verwenden. Wenn Sie wissen möchten, ob Sie eine Befehlszeile haben, funktioniert OS X mit einigem Aufwand genauso gut wie Linux, BSD oder sogar Windows. Wenn Sie UNIX oder Linux kennenlernen möchten, ist die Befehlszeile nur ein kleiner Teil davon - es ist nur die Schnittstelle, über die Sie mit dem Betriebssystem interagieren. Ich denke, klären, was Sie wollen, wird es auch einfacher zu lernen :)
Rickcnagy

Antworten:

33

Ich würde dringend empfehlen, Linux in einer VM auszuführen. Die gesamte Software kann kostenlos heruntergeladen werden, und es gibt keinen praktischen Unterschied zwischen der Ausführung in einer VM und der nativen Ausführung zum Erlernen der Befehlszeile.

Darüber hinaus besteht die Linux-Kommandozeile hauptsächlich aus bash + GNU-Coreutils , die sich stark von BSD Unix unterscheiden (und OS X ist ein Nachfolger von BSD Unix). In BSD Unix und GNU Linux gibt es einen großen Unterschied in den Präferenzen beim Schreiben von Argumenten. Sie können sich auch als Nicht-Neuling mit verschiedenen Optionen auf Standard-Dienstprogramme wie beißen psund tarwenn Sie auf beiden Systemen arbeiten.

Wenn Sie OS X verwenden, wenn Ihr Buch Linux-spezifisch ist, treten regelmäßig Inkonsistenzen und Unterschiede auf, die oberflächlich erscheinen, wenn Sie erfahrener sind, aber beim Lernen einfach verwirrend sind. Machen Sie es sich einfach.

Auf diese Weise können Sie auch experimentieren, ohne Ihr Gerät beschädigen zu müssen, indem Sie wichtige Dateien löschen oder ändern.

Und zu guter Letzt können Sie damit von Ihrem OS X-Terminal aus eine SSH-Verbindung zu Ihrer VM herstellen, damit Sie sich an die Verwendung von SSH-Schlüsseln gewöhnen können. Dabei spielt es keine Rolle, ob es sich um Ihren Linux-Server handelt ist eine native Maschine, eine lokale VM oder läuft nicht mehr auf AWS oder Digital Ocean: Es funktioniert alles gleich!

seumasmac
quelle
Übrigens, werde ich die gleiche Verzeichnisstruktur auch in einer VM im Vergleich zu einem nativen Linux haben?
Utku
3
Ja. Für Ihre Zwecke entspricht dies genau einer nativen Installation.
Seumasmac
Dies ist die sicherste Antwort, aber je nach Buch würde ich davon ausgehen, dass eine Einführung in das Befehlszeilenbuch nicht viele (wenn überhaupt) Unterschiede aufweist. Nach einem Blick in das Handbuch fiel mir nur die Erklärung der Verzeichnisstruktur auf.
Bitte
1
@Utku Wenn im Buch / dev / sda oder / dev / hda erwähnt wird und Sie es in Ihrer Installation nicht finden, suchen Sie nach / dev / vda. Dies ist der einzig mögliche Unterschied, den ich mir vorstellen kann und der für Sie von Bedeutung wäre.
Kimmax
1
Sie müssen nicht einmal eine VM verwenden. Die Verwendung einer Live-CD ist auch möglich, wenn Sie nicht viel Speicherplatz auf Ihrer Festplatte belegen möchten. Es kann auch von einem Flash-Laufwerk gebootet werden, und das Erstellen eines CD / bootfähigen Flash-Laufwerks dauert sehr wenig.
Chris Cirefice
18

OS X reicht aus, um die Befehlszeile zu erlernen, da es sich um ein zertifiziertes UNIX handelt und POSIX-konform ist. Wenn Sie sich ein Linux-spezifisches Befehlszeilenbuch ansehen, müssen Sie bedenken, dass die Userland-Tools in OS X von BSD abgeleitet sind, während die Tools unter Linux GNU sind und es einige subtile (und nicht so subtile) Unterschiede zwischen ihnen gibt.

Wenn Sie mit GNU-Tools lernen möchten, können Sie ein GNU-Userland über Macports oder Homebrew installieren oder eine vollständige Linux-Installation in einer VM durchführen.

casey
quelle
Also, ich vermute, dass es kein "allgemeines" Buch auf der Kommandozeile gibt? Ein Buch verwendet entweder GNU- oder BSD-Tools. Ist das richtig?
Utku
1
Wenn Sie ein Buch auf einer Shell haben (z. B. bash), passt es zu fast jedem System, auf dem es ausgeführt wird. Dies ist unterschiedlich, wenn Sie Betriebssystemfunktionen oder bestimmte Tools außerhalb der Shell verwenden.
Teppic
1
@teppic Aber wie nützlich ist eine Shell für sich ? AFAIK, eine Shell für sich ist nutzlos, da sie keinen auszuführenden Befehl hat. Selbst die grundlegendsten Befehle wie lsmüssen entweder von GNU oder BSD stammen (bitte korrigieren, wenn ich falsch liege). Ich denke, dies bedeutet, dass ich eine Toolchain (oder Umgebung) auswählen und dort mit dem Erlernen der Befehlszeile beginnen muss. Ist das richtig?
Utku
@Utku die Befehle sind die gleichen (zum größten Teil), aber Optionen und Ausgabe können unterschiedlich sein (oft, weil GNU viele Erweiterungen implementiert). Es ist einfach, zwischen BSD- und GNU-Werkzeugen hin und her zu wechseln.
Casey
@casey Ich beginne also vielleicht mit dem Buch über OS X. Wenn ich dann auf ein Verhalten stoße, das nicht wie im Buch beschrieben ist, kann ich es unter Linux versuchen oder einfach die BSD-Variante desselben Befehls anschauen?
Utku
9

Einige gute Antworten, aber ein weiterer Grund, sich von den Standard-Befehlszeilentools von OS X fernzuhalten, ist, dass es sich um sehr alte Versionen handelt. Zum Beispiel ist OS X grepaus dem Jahr 2004 und bashist aus dem Jahr 2007! Der Grund dafür ist, dass Apple es ablehnt, unter der GPL3 lizenzierte Tools zu versenden.

Wenn Sie Linux nicht richtig installieren möchten, können Sie die neuesten Versionen manuell installieren (möglicherweise über ein Port-System wie MacPorts, Fink oder Homebrew).

Sparhawk
quelle
3

Erster Unterschied:

ls * -lah

Funktioniert unter Linux, schlägt unter Mac fehl (Parameter müssen an erster Stelle stehen). Verwenden Sie eine VM oder besorgen Sie sich ein Buch für Mac OS. Sie sollten später lernen, welche Sie verwenden, und dann die Unterschiede.

user136809
quelle
3
Sie sollten sagen , ls * -lahArbeiten auf Linux, wie es unter Linux funktioniert, und es funktioniert auf OS X, wie es auf OS X funktioniert so , wie es auf OS X funktioniert , ist korrekt nach POSIX (12. Utility - Konventionen / 12.2 Dienstprogramm Syntax - Richtlinien / Richtlinie 9) : "Alle Optionen sollten Operanden in der Befehlszeile vorangehen." Wie in getopt (3) beschrieben : "Wenn ... die Umgebungsvariable POSIXLY_CORRECT gesetzt ist, wird die Optionsverarbeitung gestoppt, sobald ein Nichtoptionsargument angetroffen wird."
G -Mann sagt, 'Monica wieder einführen'
3

Der beste Weg, um Unix zu lernen, ist, echte Arbeit damit zu haben. Ich würde sagen, es lohnt sich, auf die Unterschiede zwischen den Linux-spezifischen Beispielen in Ihrem Buch und den Mac-Versionen der Standardtools zu stoßen, nur um in Ihrer normalen Arbeitsumgebung (OS X) mit Ihren eigenen Dateien und Daten arbeiten zu können.

Die Begegnung mit den Unterschieden ist auch eine wertvolle Lernerfahrung, auch wenn sie manchmal frustrierend ist.

Eine Linux-VM zum Üben (insbesondere für potenziell gefährliche Befehle) ist ebenfalls nützlich, aber es gibt nichts Schöneres, als sie in der Praxis zu erlernen.

cas
quelle