Es ist unklar, welche Befehlszeilenschnittstellen (CLI) es gibt und wann / warum sie verwendet werden sollten

452
TheGrapeBeyond

Vor einiger Zeit unternehme ich die geistige Anstrengung, um die Befehlszeilenschnittstelle für meine gesamte Arbeit zu verwenden, auf Windows-, Mac OSX- und LINUX-Systemen. Es stimmt, dass wir bei der Eingabeaufforderung über GUIs viel flexibler sind, und ich kann das ohne weiteres sehen.

Mein Problem ist, dass ich mich schnell im Wald von Begriffen, CLIs, diesem System, das mit diesem System arbeitet, usw. verliert. Ich normalerweise ein bestimmtes Programm google / wiki, aber es fällt mir schwer, alle zu "kleben" zusammen.

Ich würde es schätzen, wenn jemand sie zusammenhängend klebt.

Beispiel: Auf meinem Mac OSX habe ich 'Iterm2' als Befehlszeilenschnittstelle eingerichtet. Auf meinem LINIX-System verstehe ich, dass 'Terminator' gut zu verwenden ist, und ich habe vor, dies zu verwenden. Da ich auch CLI unter Windows verwenden möchte, habe ich 'conEmu' installiert, was bisher gut war.

Nun ... hier wird es für mich verwirrend ...: Auf meinem Windows-System habe ich git auch über mysgit installiert. Das gibt mir ein 'gitBash'. In gitBash kann ich LINUX-Befehle verwenden, aber keine Windows-DOS-Befehle. In der Windows-Eingabeaufforderung kann ich DOS-Befehle verwenden, keine LINUX-Befehle. Ich möchte jedoch LINUX-Befehle nur in Windows verwenden, und so wird Cygwin (mir wird gesagt) ein guter Anwärter. Aber warum habe ich das, wenn ich gitBash habe? Ist das wichtig? Kann ich einen Windows-Befehl über einen LINUXy-Emulator wie gitBash / Cygwin ausführen?

Sie können den Knoten sehen, den ich versuche zu lösen, ich bin mir nicht sicher, wie sie alle zusammenpassen.

Mein ultimatives Ziel ist es, LINUX-Befehle einfach von einer Befehlszeilenschnittstelle auf meiner Windows-Maschine zu verwenden, wenn möglich. Ich verliere mich bis ins Detail.

Vielen Dank.

1
Wenn Sie Cygwin installiert haben, benötigen Sie wahrscheinlich kein Gitbash, das bei der Installation von Windows Git wahrscheinlich installiert wird. Mein Vorschlag ist, alle Unixy-Programme wie git, die Sie ohne cygwin installiert haben, zu deinstallieren, sie dann über cygwin zu installieren und mit cygwin zu bleiben. Führen Sie dann ein Tutorial in der Unix-Befehlszeile aus. ein schneller google ergab diesen link: http://www.ee.surrey.ac.uk/Teaching/Unix/unix1.html Jason Lewis vor 9 Jahren 0
Aber noch besser wäre es, eine richtige Unix / Linux-Umgebung zu installieren. Sie können dies in einer virtuellen Maschine tun, wenn Sie die Windows-Installation nicht doppelt booten oder überschreiben möchten Jason Lewis vor 9 Jahren 0
Danke an JasonLewis. Wenn Sie sagen, sie über Cygwin zu installieren, werde ich etwas verwirrt. Soweit mir bekannt ist, können wir Sachen über Paketmanager installieren und so ... also, was meinen Sie mit Cygwin? Vielen Dank! TheGrapeBeyond vor 9 Jahren 0
Führen Sie den Befehl cygwin setup.exe erneut aus, und wählen Sie alles aus, was fehlen soll, z. B. git http://stackoverflow.com/questions/15692890/running-git-through-cygwin-from-windows Jason Lewis vor 9 Jahren 0
http://superuser.com/questions/304541/how-to-install-new-packages-on-cygwin Jason Lewis vor 9 Jahren 0
Cygwin hat einen eigenen "Paketmanager", den Sie ausführen. Sie nennen es einfach ihren Installateur. Sie können keine LINUX-Paketmanager wie "apt" oder "ipkg" von CYGWIN ausführen, da diese zu stark in die Plattform integriert sind. Julian Knight vor 9 Jahren 0

1 Antwort auf die Frage

2
Julian Knight

Wenn Sie das tun möchten, was Sie angegeben haben, würde ich empfehlen, CYGWIN zu verwenden.

Der Installer ist ausgereift und lässt Sie auswählen, welche Befehle und Funktionen Sie wünschen. Mit den Standardeinstellungen erhalten Sie so ziemlich alles, was Sie benötigen, und können dann später erweitert und angepasst werden.

Zuerst müssen Sie den Unterschied zwischen einer Terminal- und einer Befehlsumgebung (AKA-Shell) verstehen. Ersteres ermöglicht den Zugriff auf ein entferntes oder lokales System auf einem niedrigen Niveau. Letzteres wird ausgeführt, wenn Sie sich über das Terminal verbinden. Dies gilt für alle Systeme, es ist in manchen Systemen besser als in anderen verborgen. Es ist auch erwähnenswert, dass Befehlsumgebungen integrierte Befehle wie UNIXy lsund DOSy enthalten dir, dass jedoch alle Systeme über andere Befehlszeilen-Tools verfügen, beispielsweise ifconfigunter Linux undipconfig.exeunter Windows. Es kann schwierig sein, zwischen ihnen zu unterscheiden, aber Sie werden manchmal gestolpert, wenn Sie versuchen, einen UNIX-Befehl unter Windows auszuführen. Viele der besten UNIX-Befehlszeilen-Tools sind jedoch auch für Windows verfügbar, entweder über CYGWIN selbst oder über native Versionen. Zum Beispiel das ausgezeichnete exiftool, das ich für das Umbenennen von Fotos unter Linux und Windows verwende.

So können Sie das Terminal durch etwas umfassenderes ersetzen, wenn Sie es benötigen, beispielsweise Lterm2 auf Ihrem Mac. Selbst Windows hat ein paar Alternativen, obwohl ich persönlich nichts dagegen hätte - mehr Ärger als es wert ist.

Unter Windows (sowieso neuere Versionen) ist die Standardbefehlsumgebung cmd.exe. Es ist bei weitem nicht so gut wie ein Linux-Äquivalent BASH. Unter Linux ist BASH der am weitesten verbreitete Standard, aber Sie können auf andere wie ASHKorn Shell SHund andere stoßen . Windows bietet tatsächlich mehrere andere Befehlsshells, von denen PowerShell am häufigsten verwendet wird. PowerShell ist so leistungsfähig, weil es Schnittstellen für die meisten .NET-Bibliotheken verwenden und verfügbar machen kann, von denen es viele gibt, die alle möglichen cleveren Dinge ausführen. Es handelt sich ebenfalls um die von Microsoft gewählte Verwaltungs-Shell, sodass Sie sie für die Wartung von Remote-Systemen (sowohl Server als auch Clients) und sogar von Cloud-Services wie Office 365 und Azure verwenden können. Wenn Sie ein Windows-System-GURU sein möchten, ist PowerShell ein wesentlicher Lernprozess.

Zurück zu deiner Frage. Sie können BASH einfach über CYGWIN ausführen, wodurch es und eine Reihe von unterstützenden Befehlen installiert werden. CYGWIN bietet Ihnen nicht nur eine UNIX-Möglichkeit, mit Laufwerken, Dateien und Ordnern auf Windows-Computern zu interagieren, sondern stellt auch Dinge wie die Windows-Registrierung auf ähnliche Weise zur Verfügung.

Natürlich gibt es andere Grenzen. Für den Anfang ist das Ordnerlayout unter Windows immer anders als bei Linux- oder MAC-Hosts. Sie müssen dies in allen Skripts berücksichtigen, die Sie schreiben, wenn sie auf allen Plattformen funktionieren sollen.

Sie können gitBASH natürlich weiterhin verwenden, aber Sie werden wahrscheinlich feststellen, dass es nicht die Befehle gibt, von denen Sie erwarten, dass sie verfügbar sind. Sie müssten es einfach ausprobieren und sehen. Wenn Sie diesen Pfad hinuntergehen und einen fehlenden Befehl finden, können Sie ihn online suchen. Er ist möglicherweise als native Windows-Programmdatei verfügbar und sollte daher von gitBASH verwendet werden, wenn er in einem Ordner auf Ihrem PATH abgelegt wird.

Erläuterung 1: Wenn Sie an Linux gewöhnt sind, sind Sie mit der Tatsache vertraut, dass jede Distribution über einen "Paketmanager" verfügt, der bei der Installation von Software aus anerkannten und (hoffentlich) vertrauenswürdigen Quellen hilft. Sie stellen sicher, dass Sie über alle erforderlichen Komponenten und Abhängigkeiten verfügen. CYGWIN verwendet seinen "Installer" für den gleichen Zweck, obwohl es viel einfacher ist. Denken Sie daran, dass die meisten Linux-Tools für die Verwendung unter Linux kompiliert sind (im Allgemeinen müssen Sie den verwendeten Prozessortyp kennen und eine Menge interner Abhängigkeiten vom Linux-Kernel benötigen). Um Linux-Befehle unter Windows verwenden zu können, müssen sie alle neu kompiliert werden, damit sie auf einer Windows-Plattform funktionieren. Es gibt eine Hilfsbibliothek, die es relativ schmerzlos macht (MSYS? Sie müssen das eigentlich nicht wissen).

Sie sagen zu Recht, dass Chocolatey ein Versuch eines Paketmanagers für Windows ist. Ein großer Fehler von Windows ist das Fehlen einer einzigen vertrauenswürdigen, anerkannten Paketquelle - oder "App Store", wie es jetzt der Wahnsinn ist, diese Dinge zu nennen! Mit W8 versucht Microsoft (nicht so gut muss gesagt werden), das zu korrigieren, aber derzeit ist es sehr begrenzt - für mobile und ModernUI-Apps.

Viele Windows-Entwickler haben jedoch schon lange ein Tool namens NUGET verwendet, um das Paketieren von Anwendungen für die Installation unter Windows zu unterstützen. NUGET nutzt PowerShell im Hintergrund. Chocolately ist eine Reihe von Skripts, die mit PowerShell und NUGET erstellt wurden, um die Installation zu automatisieren. Es funktioniert in Ordnung, bietet jedoch nicht die Unterstützung, die es wahrscheinlich haben sollte. Es ist leicht genug, Installationspakete für Chocolatey zu erstellen. Ich habe vor ein paar Wochen mein erstes für das Mind-Mapping-Tool Open Source Freeplane erstellt.

Aber wie Sie sagen, es gibt überhaupt keine Verbindung zwischen Chocolatey (mit PowerShell) und BASH unter CYGWIN. In Ihrem Beispiel müssen Sie entscheiden, wo und wie Sie VIM verwenden möchten. Wenn Sie es immer nur im Zusammenhang mit CYGWIN verwenden möchten, installieren Sie es über das CYGWIN-Installationsprogramm. Wenn Sie es jedoch als allgemeinen Windows-Editor verwenden möchten, ist die Installation über Chocolatey möglicherweise besser. Leider gibt es keine einfache Möglichkeit vorherzusagen, was am besten wäre. Sie könnten sogar beides beenden. Auf der anderen Seite können Sie feststellen, dass einige Windows-Anwendungen auch gut funktionieren, wenn sie von BASH aufgerufen werden, und andere nicht! Schmerz, huh!

UPDATE 2: Habe ich erwähnt, dass Sie bei PowerShell bleiben sollten !! Willkommen in der Welt des plattformübergreifenden Arbeitens. CYGWIN möchte, dass ein eigenes Python-Paket installiert wird, um interne Abhängigkeiten zu befriedigen. Die Verwendung von nativem Windows-Python (z. B. durch Chocolately oder manuell installiert) funktioniert möglicherweise, aber möglicherweise auch nicht. Keine einfache Möglichkeit zu sagen, aber es ist sehr wahrscheinlich, dass Sie eventuell ein Problem haben, wenn Sie das Cygwin-Paket nicht installiert haben. Aus diesem Grund hat jemand anderes empfohlen, stattdessen eine virtuelle Maschine zu verwenden, damit Sie die Dinge sauber und getrennt halten.

Ehrlich gesagt ist es besser, wenn Sie akzeptieren, dass Sie verschiedene Tools für verschiedene Plattformen erlernen müssen. Es ist nicht so schwer. Es hängt wirklich davon ab, was Sie tun möchten. Wenn Sie die Linux-Befehlszeile lernen möchten, verwenden Sie eine virtuelle Maschine. Wenn Sie Windows-Aufgaben automatisieren möchten, lernen Sie PowerShell oder alternativ, wenn Sie Python bereits kennen, verwenden Sie stattdessen das! So viele Möglichkeiten!

Vielen Dank für den heruntergekommenen Julian, sehr geschätzt. Könnten Sie bitte Ihre Antwort angesichts der unzähligen Anzahl von Paketinstallateuren erweitern? Zum Beispiel: Nehmen wir an, ich habe Cygwin installiert und natürlich habe ich cmd.exe. Nun habe ich über cmd schokoladig installiert. Es scheint mir, dass ich CANT schokoladig verwenden kann, wenn ich bei Cygwin war. Wenn ich jedoch zu cmd gehen sollte, könnte ich es verwenden, richtig? Nehmen wir gleich an, ich möchte das Programm 'vim' verwenden, von dem ich weiß, dass es unter LINUX läuft. Kann ich es jetzt nur noch über CYGWIN und nicht über cmd benutzen? Vielen Dank TheGrapeBeyond vor 9 Jahren 0
Aktualisiert wie gewünscht! Julian Knight vor 9 Jahren 0
Nochmals vielen Dank Julian, ich habe deine Antwort angenommen! Übrigens, seit Sie schokoladig verwendet haben, können Sie sich an dieser Frage von mir wenden (http://superuser.com/questions/760323/chocolatey-install-of-cygwin-keeps-looping-through- Websites)? Danke vielmals! TheGrapeBeyond vor 9 Jahren 0
Julian - hier ist ein gutes Beispiel: Ich habe Python34 bereits auf meinem Rechner installiert. Jetzt, während ich Cygwin installiere, frage ich mich, ob ich 'Das Python-Paket' installieren möchte. Ich weiß nicht, was ich hier machen soll. Warum fragt es mich überhaupt nach Python? Wenn es in der Tat fraglich ist, ob ich Python will, sollte ich Python über cygwin installieren, damit ich es über cygwin verwenden kann? Oder kann ich es, da ich es schon habe, trotzdem benutzen? ...: - / TheGrapeBeyond vor 9 Jahren 0
Noch ein Update. Danke für die Annahme. Julian Knight vor 9 Jahren 0