Wann lerne ich die Kommandozeilenversion eines Programmiertools? [geschlossen]

12

Fast jedes Programmiertool verfügt über eine Befehlszeilenversion. Viele von ihnen haben auch eine GUI-Version. Das Erlernen der verschiedenen Befehle und Optionen / Schalter der Befehlszeilenversion erfordert viel Zeit und Mühe.

Ich habe also ein paar Fragen (die sich nicht unbedingt gegenseitig ausschließen):

1) Wann würden Sie sich die Mühe machen, die Befehle in der Befehlszeilenversion eines Tools zu lernen / zu speichern, das auch in einer GUI-Version vorliegt?

2) Von welchen Tools soll ich die Kommandozeilenversion lernen? .... Compiler? Versionskontrollsystem? etc, etc

erforschen
quelle
Wenn das von Ihnen verwendete Tool eine Befehlszeilenschnittstelle bereitstellt, aber keine angemessene Dokumentation dafür hat, wäre ich bei der Verwendung eines solchen Tools vorsichtig. Wenn ja, dann RTFM. Es ist nicht so schwer, und wenn es soweit ist, dann stellen Sie eine Frage auf StackOverflow.com. Wenn Sie nicht sicher sind, ob Sie etwas herausfinden müssen, tun Sie dies wahrscheinlich nicht. Das Leben ist voll von interessanten Dingen außerhalb der Arbeit, wenn es nur genug Zeit gäbe ...
Job

Antworten:

21

Ich sehe zwei Gründe, warum Sie die Befehlszeilenoptionen eines Programms lernen sollten:

  1. Wenn Sie das Programm auf irgendeine Weise automatisieren müssen - Skripte erstellen, Stapelverarbeitung usw.

  2. Wenn Sie das Verhalten des Programms optimieren müssen, reduzieren Sie den Speicherbedarf usw.

Welche Tools Sie lernen sollten - nun, das hängt ganz davon ab, was Sie als Nächstes tun möchten.

ChrisF
quelle
1
Sie möchten immer in der Lage sein, ein Programm zu
1
@ Thorbjørn - habe ich das nicht gesagt? Oder war ich nicht klar?
ChrisF
3
Ja. Ich habe nur den Automatisierungsteil hervorgehoben - ich verstehe nicht, dass dies später zu Problemen führen wird, wenn versucht wird, die aktuellen Methoden in etwas Skriptfähiges umzuwandeln.
9

Viele gute Antworten schon. Ich füge noch einen zusätzlichen Standpunkt hinzu.

Sie ersetzen die GUI durch Befehlszeilentools, wenn Sie den Menschen aus der Gleichung / dem Prozess herausholen möchten. Einige Gründe und / oder Vorteile dafür:

  • Sie werden den menschlichen Fehler los (wenn Sie den Befehl wiederholen)
  • Hervorragend für jede Art von Automatisierung geeignet, zum Beispiel für die Bereitstellung, Erstellung oder Ausführung von Tests mit zufälligen Eingaben.
  • Sie werden wirklich ein Power- User. Es gibt Ihnen die Möglichkeit, auf der Leiter der Metaprogrammierung zu klettern. Sie müssen nicht jede Aktion (klicken Sie auf die GUI) selbst ausführen, Sie können sie einfach per Skript ausführen!
  • Sie können Werkzeuge miteinander verketten (denken Sie an Unix-Pipes).
  • Lassen Sie Computer die Arbeit erledigen - Sie skalieren nicht, Computer tun es!

Wann soll es gemacht werden? Wenn du es findest, dich zu wiederholen.

Natürlich gibt es Platz und Zeit für die GUI. Aber wenn Sie wirklich die Leistung von Computern nutzen und auf der Welle von Moores Gesetzen surfen möchten, müssen Sie lernen, wie Sie Skripte für Ihre Aufgaben erstellen.

Bearbeiten : Extra Bonus. Du darfst dieses T-Shirt tragen :)

Maglob
quelle
7

Minen sind:

1) Um produktiver zu werden . Für mich ist es schneller, Dinge in einer Shell zu erledigen, als nur zu klicken. Ich spreche über die Verwendung eines Tools, nicht über das Einrichten eines Dienstes / Tools / usw., da es manchmal schneller ist, einen Assistenten zu haben und einfach darauf zu klicken Next Next Next, obwohl diese Assistenten auch in Befehlszeilenversionen vorhanden sind :)

2) So verwenden Sie die Befehlszeilenversion in Ihren Anwendungen. Angenommen, Sie möchten eine PDF- Datei in eine Textdatei konvertieren . Wenn Sie die GUI-Version verwenden, ist dies in Ordnung. Wenn es jedoch auch eine Befehlszeilenschnittstelle bietet, über die Sie Folgendes ausführen können: ./pdf2text input.pdf output.txtWenn Sie eine Anwendung entwickeln müssen, die Text aus einer PDF-Datei liest, können Sie sie problemlos verwenden, ohne APIs zu verwenden oder einige Änderungen vorzunehmen. .

3) Um die allgemeinen Dinge einer Anwendung zu lernen. Zum Beispiel, wenn Sie diff unter Windows installiert haben und ein Front-End zum Vergleichen von zwei Dateien. Das ist perfekt. Aber was ist, wenn Sie es unter Linux verwenden müssen ? Sie können das gleiche Front-End für Linux finden, aber was ist, wenn es nicht existiert? Sie müssen noch einmal lernen, wie man es unter Linux benutzt, ein neues Front-End installieren und sich daran gewöhnen, damit zu arbeiten. Wenn Sie gelernt hätten, wie man die Kommandozeilenversion benutzt, hätten Sie sie nicht gebraucht;)

Über 3) ... einige Leute haben viele Probleme, sich an die Arbeit mit Git unter Windows zu gewöhnen . Sie sagen, dass es unter Windows keine guten Frontends gibt, aber wenn Sie nur die Befehlszeilenmethode erlernen, werden Sie keine Probleme haben. Das funktioniert genauso. Das Problem ist natürlich, dass die Leute manchmal Angst vor der Kommandozeile haben ;)

Ich schlage vor, Sie lernen Befehlszeilenversionen von:

Oscar Mederos
quelle
Yeahhhh +1 für git: D Obwohl diff das einzige Beispiel ist, würde ich den echten Befehl nicht verwenden. Ich bevorzuge vimdiff (obwohl ich denke, technisch ist das Terminal auch so, was auch immer)
Alternative
@mathepic du hast recht, aber es vimdiffist auch ein Kommandozeilen-Tool, nicht wahr ?
Oscar Mederos
Gleichzeitig sind seine Flüche (ich glaube nicht sicher), so dass ich einen kleinen Unterschied mache.
Alternative
Ja, aber ich nehme diese auch als Kommandozeilen-Tools :)
Oscar Mederos
@ Mathepic: Die Antwort auf Ihr Anliegen:gvimdiff
Lie Ryan
3

Warum müssen Sie die Parametersyntax in den Speicher schreiben? Das ist, warum manexistiert und --help( /?wenn Sie in Winblowz Land sind).

Ich finde, ich kann die Optionen für fast alles in weniger als einer Minute nachschlagen. Das Ziel ist es, sich zu merken, was die Befehle bewirken , damit Sie wissen, was Sie nachschlagen müssen!

Orbling
quelle
1

Pragmatisch kommt es darauf an, ob dem GUI-Tool ein Feature fehlt oder ob es über die Befehlszeile schneller ist.

Der Nebeneffekt der Verwendung einer Befehlszeile ist jedoch, dass Sie mit größerer Wahrscheinlichkeit die Dokumentation lesen und herausfinden, was wirklich vor sich geht. Insbesondere bei Ihrem Beispiel für die Versionskontrolle bringt Ihnen dies einiges bei, wenn Sie dies über die Befehlszeile tun.

jdl
quelle
1
  • Compiler: Wird für automatisierte Builds benötigt
  • Make oder Ihr Build-System: Automatische Builds erkennen Fehler
  • Versionskontrolle: Ich denke schon, aber es ist die unwichtigste der drei. Aber dann kann ich andere Befehlszeilenoperationen ausführen, z. B. die Änderungsnachrichten durchgehen.

Sie müssen sich die Optionen für den Compiler oder make jedoch nicht merken. Sobald diese für das Projekt eingerichtet sind, müssen Sie sie nicht mehr häufig ändern.

Brian Carlton
quelle
1

Die Vorteile des Lernens eines Befehlszeilentools stehen meines Erachtens in keinem Verhältnis zu den Vorteilen der Verwendung der grafischen Benutzeroberfläche. Es gibt viele Fälle, in denen die GUI Funktionen verliert. Es ist jedoch nicht fair zu sagen, dass dies immer der Fall ist (z. B. bei cmake unter Windows - es gibt keinen Grund, die Befehlszeile außerhalb der normalen Umstände zu verwenden).

Was das Speichern angeht, muss der Befehlssatz dieses Programms beim ersten Gebrauch nicht besonders beachtet werden. Setzen Sie einfach ein Lesezeichen für das Handbuch (wenn Sie das Online-Handbuch verwenden, verwenden Sie andernfalls "man" unter * nix), und wenn Sie eine bestimmte Funktionalität benötigen (die Sie nicht gespeichert haben), lesen Sie einfach das Handbuch. Das Auswendiglernen dieser Dinge sollte natürlich von Nutzen sein. Zum Beispiel führe ich "tar" und "gzip" sehr oft von der Kommandozeile aus, aber ich müsste auf das Handbuch verweisen, um Aufgaben zu erledigen, die ich normalerweise nicht erledige.

Vor allem, wenn Sie ein Produkt versenden oder eine Art Quellcode oder auf andere Weise an einen anderen Entwickler senden, ist es viel einfacher, ein Skelett von Befehlen einzuschließen, als detaillierte Anweisungen zur Verwendung der GUI zu verfassen. Wenn der Entwickler die von Ihnen verwendeten Befehlszeilenoptionen nicht versteht, kann er sie einfach nachschlagen. Jemandem eine GUI zu erklären, ist nicht immer die portabelste Lösung.

Grüße,
Dennis M.

RageD
quelle
0

Alles, damit Sie bei der Entwicklung nicht auf X11 / Windows angewiesen sind. Es ist schön, sich komplett aus einem Terminal entwickeln zu können.

Alternative
quelle
Ich stimme dir zu;)
Oscar Mederos
0

Kurze Antwort: Die beste Zeit zum Ändern (dh Verwenden der Befehlszeile) ist JETZT . Echte Männer benutzen Tastatur. Echte Männer klicken NICHT. Zeitraum.

Längere Antwort: Auf lange Sicht können / werden / sollten Sie durch die Verwendung der Befehlszeile nicht nur produktiver und damit wertvoller (weniger wahrscheinlich), sondern auch schlauer (aufgrund erheblicher Übung / Auswendiglernen) und gesünder (weil ...) werden Die gleichzeitige Verwendung beider Hände in der Befehlszeilenschnittstelle anstelle einer Maus ist aus ergonomischen Gründen besser geeignet.

Hier ist ein sehr empfehlenswerter Artikel / Aufsatz, " Warum Windows Dummheit verursacht ", unter http://www.over-yonder.net/~fullermd/rants/winstupid/1


quelle
3
Scherz oder nicht, dieser echte Männer-Mist wird keine Preise gewinnen, obwohl ich zu 100% der Meinung bin, dass die Verwendung von CLI so viel produktiver ist, dass das Macho-Geräusch einfach nur dumm ist.
ocodo
0

Ich bin mir nicht sicher, ob Sie jemals versuchen sollten, die Schalter in einem Befehlszeilentool auswendig zu lernen. Wenn Sie ein Shell-Skript erstellen oder was auch immer, um eine Aufgabe zu automatisieren, sollten Sie das ganze Zeug nachschlagen - verbringen Sie die 30 Sekunden jetzt, um stundenlange Schmerzen zu vermeiden, wenn Sie herausfinden, was später schief gelaufen ist. Wenn Sie immer und immer wieder dasselbe Befehlszeilentool verwenden, sollten Sie vielleicht ein Shell-Skript erstellen ...

mjfgates
quelle