C# Academy · Lektion

CLI-brugervenlighed

Byg venlige kommandolinjeværktøjer: tydelig hjælp, korte flags, exitkoder, stdout kontra stderr, grundlæggende parsing og enkel verbosity.

Lektion 3 af 38 trin

CLI-brugervenlighed er en gratis C# Academy-lektion på CoddyKit. Dette er lektion 3 af 3. Du kan læse hele lektionen gratis nedenfor — og derefter øve dig praktisk i browseren med en indbygget kodeeditor og en AI-vejleder, der er tilgængelig døgnet rundt. Den er en del af læringsforløbet i C# Academy, og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. C# Academy-kurset indeholder 3 lektioner i alt.

Grundlæggende om brugervenlige CLI-værktøjer

Mål:

  • Vis hjælp med -h/--help
  • Brug tydelige flag (-i, -o, --verbose)
  • Returnér 0 ved succes og en værdi forskellig fra nul ved fejl
  • Send resultater til stdout og diagnostik til stderr

Brug og hjælp

Tilføj et kort afsnit om brug, og acceptér både korte og lange flag; vis det, når der mangler indtastning.

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
  }
}

Flag og afslutningskoder

Returnér en værdi forskellig fra nul ved ugyldige flag; hold meddelelser korte og specifikke. Skriv succesmeddelelser til stdout.

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 kontra stderr

Anbring resultater på stdout, så de kan sendes videre, og diagnostik på stderr. Tilføj et enkelt --verbose-flag.

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;
  }
}

Konventioner og finpudsning

  • Acceptér både korte og lange flag (-h/--help)
  • Brug tydelige fejlmeddelelser (hvad der er galt + hvordan det løses)
  • Hold standarduddata på et minimum; tilføj --verbose for detaljer
  • Brug konsistente afslutningskoder (0 succes, 1 ugyldige argumenter, 2 I/O-fejl)

Røgtest og dokumentation

  • Prøv omdirigering: command > out.txt og command 2> err.txt
  • Test fejlforløb: manglende fil, ugyldige argumenter
  • Hold brugsteksten under ~5 linjer på mobil
  • Dokumentér eksempler, der er nemme at kopiere og indsætte

Datastrømme og afslutningskoder

Hurtigt tjek: Hvilken praksis gør CLI-værktøjer nemmere at bruge og forbedrer videresendelse i shellen?

Opsummering

Opsummering: Hjælp med -h/--help, tydelige flag, korrekte afslutningskoder og adskillelse af stdout/stderr gør dine værktøjer velegnede til scripts og forudsigelige.

Gratis at komme i gang

Lær C# med en AI-underviser — gratis

Skriv og kør rigtig kode i din browser, få øjeblikkelig hjælp fra en AI-underviser døgnet rundt, og fortsæt, hvor du slap, på web eller i appen.

Kurser
93
Lektioner
346

Ofte stillede spørgsmål

Er lektionen “CLI-brugervenlighed” gratis?

Ja — hele teksten til “CLI-brugervenlighed” kan læses gratis her på nettet. Hvis du vil øve dig interaktivt med en indbygget kodeeditor og en AI-vejleder døgnet rundt og få adgang til resten af C# Academy-kurset, skal du opgradere til CoddyKit PRO. C# Academy-kurset indeholder 3 lektioner i alt.

Hvad lærer jeg i “CLI-brugervenlighed”?

Byg venlige kommandolinjeværktøjer: tydelig hjælp, korte flags, exitkoder, stdout kontra stderr, grundlæggende parsing og enkel verbosity. Du øver dig i C# Academy med praktisk kode, som du kører direkte i browseren, og en AI-vejleder døgnet rundt besvarer dine spørgsmål, mens du arbejder dig gennem lektionen.

Skal jeg have erfaring for at begynde på C# Academy?

Der kræves ingen tidligere erfaring. C# Academy på CoddyKit er tilrettelagt for både begyndere og øvede, så du kan starte her eller fra begyndelsen og lære i dit eget tempo. Dette er lektion 3 af 3.

Hvor lang tid tager lektionen “CLI-brugervenlighed”?

De fleste CoddyKit-lektioner tager cirka 5–10 minutter. Hver lektion er kort og interaktiv, så du gør løbende fremskridt og kan fortsætte, hvor du slap – på både web og app.

Kan jeg skrive og køre kode i denne C# Academy-lektion?

Ja. Alle C# Academy-lektioner har en indbygget kodeeditor, så du kan skrive og køre rigtig kode direkte i din browser og få øjeblikkelig feedback fra AI – uden lokal opsætning.

Alle lektioner i dette kursus

  1. C#-scripting (dotnet script), snippets og REPL
  2. Grundlæggende interop (P/Invoke) i overblik
  3. CLI-brugervenlighed
← Tilbage til C# Academy