Creación de una herramienta CLI
Ejemplo práctico
Creación de una herramienta CLI es una lección gratuita de C Academy en CoddyKit. Esta es la lección 4 de 4. 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 4 lecciones en total.
Unir todas las piezas
Ahora combinaremos argumentos, opciones y análisis en una pequeña pero completa herramienta CLI.
Nuestro ejemplo es una utilidad de formato numérico que lee un valor y algunas opciones, y después imprime un resultado.
#include <stdio.h>
int main(int argc, char *argv[]) {
if (argc < 2) {
printf("Usage: %s <number>\n", argv[0]);
return 1;
}
printf("You passed: %s\n", argv[1]);
return 0;
}Diseñar la interfaz
Las buenas herramientas CLI definen su interfaz de antemano. La nuestra aceptará:
-vsalida detallada-r Nrepetir la salida N veces- un argumento posicional: el texto que se imprimirá
#include <stdio.h>
int main(void) {
printf("Interface: prog [-v] [-r N] <text>\n");
return 0;
}Declarar la configuración
Guarde cada comportamiento configurable en una variable con un valor predeterminado razonable. Esto mantiene el análisis separado del trabajo real.
#include <stdio.h>
int main(void) {
int verbose = 0;
int repeat = 1;
const char *text = NULL;
printf("defaults: verbose=%d repeat=%d\n", verbose, repeat);
return 0;
}Analizar con getopt
Utilice getopt para rellenar los flags. -r recibe un valor, por lo que su entrada en la optstring es r:.
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
int main(int argc, char *argv[]) {
int verbose = 0, repeat = 1, opt;
while ((opt = getopt(argc, argv, "vr:")) != -1) {
if (opt == 'v') verbose = 1;
else if (opt == 'r') repeat = atoi(optarg);
}
printf("verbose=%d repeat=%d\n", verbose, repeat);
return 0;
}Leer el argumento posicional
Después de getopt, optind apunta al primer argumento que no es una opción. Tomamos el texto de esa posición.
Si no hay ninguno, imprimimos el mensaje de uso y salimos con un código de error.
#include <stdio.h>
#include <unistd.h>
int main(int argc, char *argv[]) {
while (getopt(argc, argv, "vr:") != -1) { }
if (optind >= argc) {
printf("Error: missing text argument\n");
return 1;
}
printf("text = %s\n", argv[optind]);
return 0;
}Validar la entrada numérica
Una herramienta sólida comprueba que -r haya recibido un número válido. Rechace los valores de repetición iguales o menores que cero.
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
int main(int argc, char *argv[]) {
int repeat = 1, opt;
while ((opt = getopt(argc, argv, "r:")) != -1) {
if (opt == 'r') repeat = atoi(optarg);
}
if (repeat < 1) {
printf("Error: repeat must be >= 1\n");
return 1;
}
printf("repeat = %d\n", repeat);
return 0;
}Realizar el trabajo
Una vez analizada y validada la configuración, realice la tarea correspondiente. Aquí imprimimos el texto repeat veces.
#include <stdio.h>
int main(void) {
const char *text = "hello";
int repeat = 3;
for (int i = 0; i < repeat; i++) {
printf("%s\n", text);
}
return 0;
}Salida detallada
El flag de modo detallado puede añadir información de diagnóstico. Proteja estas impresiones con el flag para que la salida normal se mantenga limpia.
#include <stdio.h>
int main(void) {
int verbose = 1;
const char *text = "hi";
if (verbose) printf("[debug] about to print text\n");
printf("%s\n", text);
return 0;
}La herramienta completa
Aquí tiene el programa completo que reúne todas las piezas: analizar, validar y ejecutar.
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
int main(int argc, char *argv[]) {
int verbose = 0, repeat = 1, opt;
while ((opt = getopt(argc, argv, "vr:")) != -1) {
if (opt == 'v') verbose = 1;
else if (opt == 'r') repeat = atoi(optarg);
}
if (optind >= argc) { printf("Usage: prog [-v] [-r N] <text>\n"); return 1; }
const char *text = argv[optind];
if (verbose) printf("[debug] repeat=%d\n", repeat);
for (int i = 0; i < repeat; i++) printf("%s\n", text);
return 0;
}Los códigos de salida son importantes
Las herramientas CLI comunican el éxito mediante su código de salida. Devuelva 0 cuando todo salga bien y un valor distinto de cero en caso de error.
Los scripts y otros programas dependen de esto para decidir qué hacer a continuación.
#include <stdio.h>
int main(int argc, char *argv[]) {
if (argc < 2) {
printf("failure\n");
return 2;
}
printf("success\n");
return 0;
}Escribir errores en stderr
Por convención, la salida normal se envía a stdout y los errores a stderr mediante fprintf(stderr, ...).
Esto permite separar los resultados de los diagnósticos al redirigir la salida.
#include <stdio.h>
int main(int argc, char *argv[]) {
if (argc < 2) {
fprintf(stderr, "Error: need an argument\n");
return 1;
}
printf("%s\n", argv[1]);
return 0;
}Comprobación rápida
Compruebe su comprensión de las convenciones de las herramientas CLI.
Resumen
Ha creado una herramienta CLI completa:
- Defina la interfaz y declare la configuración con valores predeterminados.
- Analice los flags con
getopt; lea los argumentos posicionales desdeoptind. - Valide las entradas antes de realizar el trabajo.
- Devuelva códigos de salida significativos y envíe los errores a
stderr.
Preguntas frecuentes
¿La lección «Creación de una herramienta CLI» es gratis?
Sí — el texto completo de «Creación de una herramienta 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 4 lecciones en total.
¿Qué aprenderé en «Creación de una herramienta CLI»?
Ejemplo práctico 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 4 de 4.
¿Cuánto tiempo toma la lección «Creación de una herramienta 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
- argc y argv
- Análisis de opciones
- getopt
- Creación de una herramienta CLI