0Pricing
C# Academy · Lektion

CLI-Bedienkomfort

Erstellen Sie benutzerfreundliche Kommandozeilenprogramme: klare Hilfe, kurze Flags, Exit-Codes, stdout und stderr, grundlegendes Parsen und einfache Ausführlichkeitseinstellungen.

CLI-Bedienkomfort ist eine kostenlose C# Academy-Lektion auf CoddyKit. Dies ist Lektion 3 von 3. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des C# Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der C# Academy-Kurs umfasst insgesamt 3 Lektionen.

Grundlagen einer benutzerfreundlichen CLI

Ziele:

  • Zeigen Sie die Hilfe mit -h/--help an
  • Verwenden Sie eindeutige Flags (-i, -o, --verbose)
  • Geben Sie bei Erfolg 0, bei Fehlern einen Wert ungleich null zurück
  • Senden Sie Ergebnisse an stdout und Diagnosemeldungen an stderr

Nutzung und Hilfe

Fügen Sie einen kurzen Usage-Abschnitt hinzu und akzeptieren Sie kurze und lange Flags. Zeigen Sie ihn an, wenn Eingaben fehlen.

using System;

// A tiny CLI that prints help if no args or -h/--help is passed.
public class Program
{
  static void PrintUsage()
  {
    Console.WriteLine("usage: tool -i <input> [-o <output>] [--verbose]");
    Console.WriteLine("options:");
    Console.WriteLine("  -i, --input     input file path (required)");
    Console.WriteLine("  -o, --output    output file path (optional)");
    Console.WriteLine("  -h, --help      show help");
    Console.WriteLine("      --verbose   print extra diagnostics to stderr");
  }

  public static void Main(string[] args)
  {
    if (args.Length == 0 || args[0] == "-h" || args[0] == "--help")
    {
      PrintUsage();
      Environment.ExitCode = 0;
      return;
    }

    Console.WriteLine("OK: arguments received"); // placeholder success
  }
}

Flags und Exit-Codes

Geben Sie bei ungültigen Flags einen Wert ungleich 0 zurück. Halten Sie Meldungen kurz und spezifisch. Geben Sie die Erfolgsmeldung auf stdout aus.

using System;

// Minimal manual parsing for beginners (no external libs).
public class Program
{
  static void Error(string msg)
  {
    Console.Error.WriteLine("error: " + msg);
    Environment.ExitCode = 1; // non-zero means failure
  }

  public static void Main(string[] args)
  {
    string input = null;
    string output = null;

    for (int i = 0; i < args.Length; i++)
    {
      string a = args[i];
      if (a == "-i" || a == "--input")
      {
        if (i + 1 >= args.Length) { Error("missing value for " + a); return; }
        input = args[++i];
      }
      else if (a == "-o" || a == "--output")
      {
        if (i + 1 >= args.Length) { Error("missing value for " + a); return; }
        output = args[++i];
      }
      else if (a == "-h" || a == "--help")
      {
        Console.WriteLine("usage: tool -i <input> [-o <output>]");
        return;
      }
      else
      {
        Error("unknown option: " + a);
        return;
      }
    }

    if (input == null) { Error("input is required (-i)"); return; }

    // Success path: write result to stdout
    Console.WriteLine("Processed " + input + (output == null ? "" : (" -> " + output)));
    Environment.ExitCode = 0;
  }
}

Stdout und stderr

Geben Sie Ergebnisse auf stdout aus, damit sie per Pipe weiterverarbeitet werden können, und Diagnosemeldungen auf stderr. Fügen Sie ein einfaches --verbose-Flag hinzu.

using System;

// Show separation of streams: stdout (results) vs stderr (diagnostics).
public class Program
{
  public static void Main(string[] args)
  {
    bool verbose = false;
    for (int i = 0; i < args.Length; i++) if (args[i] == "--verbose") verbose = true;

    if (verbose) Console.Error.WriteLine("info: starting work");
    // pretend to compute a number
    int result = 42;
    // Result goes to stdout so it can be piped:  tool ... > out.txt
    Console.WriteLine(result);

    if (verbose) Console.Error.WriteLine("info: finished work");
    Environment.ExitCode = 0;
  }
}

Konventionen und Feinschliff

  • Akzeptieren Sie kurze und lange Flags (-h/--help)
  • Verwenden Sie klare Fehlermeldungen (was falsch ist und wie es behoben wird)
  • Halten Sie die Standardausgabe minimal und fügen Sie mit --verbose Details hinzu
  • Verwenden Sie konsistente Exit-Codes (0 Erfolg, 1 ungültige Argumente, 2 E/A-Fehler)

Smoke-Tests und Dokumentation

  • Testen Sie Umleitungen: command > out.txt und command 2> err.txt
  • Testen Sie Fehlerpfade: fehlende Datei, ungültige Argumente
  • Halten Sie den Usage-Text auf Mobilgeräten unter etwa 5 Zeilen
  • Dokumentieren Sie Beispiele, die sich leicht kopieren und einfügen lassen

Streams und Exit-Codes

Kurzer Check: Welche Vorgehensweise verbessert die Benutzerfreundlichkeit von CLIs und das Weiterleiten per Shell-Pipe?

Zusammenfassung

Zusammenfassung: Hilfe mit -h/--help, klare Flags, korrekte Exit-Codes und die Trennung von stdout/stderr machen Ihre Tools skriptfreundlich und vorhersehbar.

Häufig gestellte Fragen

Ist die Lektion „CLI-Bedienkomfort“ kostenlos?

Ja — der vollständige Text von „CLI-Bedienkomfort“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des C# Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der C# Academy-Kurs umfasst insgesamt 3 Lektionen.

Was lerne ich in „CLI-Bedienkomfort“?

Erstellen Sie benutzerfreundliche Kommandozeilenprogramme: klare Hilfe, kurze Flags, Exit-Codes, stdout und stderr, grundlegendes Parsen und einfache Ausführlichkeitseinstellungen. Du übst C# Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.

Brauche ich Erfahrung, um C# Academy zu starten?

Keine Vorkenntnisse erforderlich. C# Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 3 von 3.

Wie lange dauert die Lektion „CLI-Bedienkomfort“?

Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.

Kann ich in dieser C# Academy-Lektion Code schreiben und ausführen?

Ja. Jede C# Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.

Alle Lektionen in diesem Kurs

  1. C#-Scripting (dotnet script), Snippets und REPL
  2. Grundlagen der Interoperabilität (P/Invoke) im Überblick
  3. CLI-Bedienkomfort
← Zurück zu C# Academy