0Pricing
C# Academy · Lección

Ergonomía de la CLI

Construya herramientas de línea de comandos fáciles de usar: ayuda clara, flags cortos, códigos de salida, stdout frente a stderr, análisis básico y verbosidad sencilla.

Ergonomía de la CLI es una lección gratuita de C# Academy en CoddyKit. Esta es la lección 3 de 3. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de C# Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de C# Academy incluye 3 lecciones en total.

Conceptos básicos de una CLI amigable

Objetivos:

  • Muestre la ayuda con -h/--help
  • Use opciones claras (-i, -o, --verbose)
  • Devuelva 0 si la operación tiene éxito y un valor distinto de cero si hay un error
  • Envíe los resultados a stdout y los diagnósticos a stderr

Uso y ayuda

Añada una sección breve de uso y acepte opciones cortas y largas; muéstrela cuando falte la entrada.

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

Opciones y códigos de salida

Devuelva un valor distinto de cero ante opciones no válidas; mantenga los mensajes breves y específicos. Imprima los resultados correctos en 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 frente a stderr

Coloque los resultados en stdout (para poder canalizarlos) y los diagnósticos en stderr. Añada una opción sencilla --verbose.

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

Convenciones y detalles finales

  • Acepte opciones cortas y largas (-h/--help)
  • Use mensajes de error claros (qué está mal y cómo solucionarlo)
  • Mantenga mínima la salida predeterminada; añada --verbose para ver más detalles
  • Use códigos de salida coherentes (0 éxito, 1 argumentos no válidos, 2 error de E/S)

Pruebas rápidas y documentación

  • Pruebe la redirección: command > out.txt y command 2> err.txt
  • Pruebe las rutas de error: archivo inexistente y argumentos incorrectos
  • Mantenga el texto de uso por debajo de unas 5 líneas en dispositivos móviles
  • Documente ejemplos fáciles de copiar y pegar

Flujos y códigos de salida

Comprobación rápida: ¿Qué práctica mejora la facilidad de uso de una CLI y la canalización en el shell?

Resumen

Resumen: La ayuda en -h/--help, las opciones claras, los códigos de salida adecuados y la separación entre stdout y stderr hacen que sus herramientas sean fáciles de usar en scripts y previsibles.

Preguntas frecuentes

¿La lección «Ergonomía de la CLI» es gratis?

Sí — el texto completo de «Ergonomía de la CLI» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de C# Academy, actualiza a CoddyKit PRO. El curso de C# Academy incluye 3 lecciones en total.

¿Qué aprenderé en «Ergonomía de la CLI»?

Construya herramientas de línea de comandos fáciles de usar: ayuda clara, flags cortos, códigos de salida, stdout frente a stderr, análisis básico y verbosidad sencilla. Practicas C# Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar C# Academy?

No se requiere experiencia previa. C# Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 3 de 3.

¿Cuánto tiempo toma la lección «Ergonomía de la CLI»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de C# Academy?

Sí. Cada lección de C# Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. Scripting de C# (dotnet script), snippets y REPL
  2. Fundamentos de interoperabilidad (P/Invoke) de un vistazo
  3. Ergonomía de la CLI
← Volver a C# Academy