C# CLI टूल्स: एक शाम में आइडिया से तैयार टूल तक

शुरुआती लोगों के लिए ऑनलाइन Python प्रशिक्षक

Python आसानी से सीखें बिना सिद्धांत के बोझ के। स्वचालित जांच के साथ व्यावहारिक कार्य हल करें और ब्राउज़र में सीधे कोड लिखें।

पाठ्यक्रम शुरू करें

C# CLI टूल्स के लिए क्यों बेस्ट है, और Python डेवलपर के लिए यह क्यों ज़रूरी है

\n

जब हम कंसोल यूटिलिटी बनाने की बात करते हैं, तो सबसे पहले Python, Bash या Go का ख्याल आता है। लेकिन क्या हो अगर मैं कहूं कि C# तेज़, क्रॉस-प्लेटफॉर्म और शानदार CLI टूल्स बनाने के लिए सबसे कम आंके जाने वाली भाषाओं में से एक है? हाँ, वही C# जिसे ज़्यादातर लोग वेब फॉर्म और कॉर्पोरेट एप्लीकेशन से जोड़ते हैं।

\n

.NET 6/8 के आने के बाद, C# में मिनिमल API, नेटिव कंपाइलेशन (AOT) और बेहद आसान System.CommandLine लाइब्रेरी आ गई है। अब Windows, Linux और macOS पर काम करने वाली यूटिलिटी सिर्फ 15 मिनट में बनाई जा सकती है। Python सीखने वाले छात्रों और डेवलपर्स के लिए, यह अपने टूलकिट को बढ़ाने और दूसरी भाषाओं में CLI टूल्स को समझने का शानदार मौका है।

\n

इस लेख में हम सिर्फ "Hello World" नहीं लिखेंगे। हम एक पूरी फाइल-मैनेजमेंट यूटिलिटी बनाएंगे जो आर्गुमेंट पार्स करेगी, रंगीन टेक्स्ट दिखाएगी, एरर हैंडल करेगी और प्रोग्रेस बार भी दिखाएगी। चलिए शुरू करते हैं!

\n\n

प्रोजेक्ट सेटअप: कम से कम मेहनत

\n

सबसे पहले, सुनिश्चित करें कि आपके पास .NET SDK (वर्जन 6.0 या उससे ऊपर) इंस्टॉल है। चेक करना आसान है:

\n
dotnet --version
\n

अगर सब ठीक है, तो नया कंसोल प्रोजेक्ट बनाएं:

\n
dotnet new console -n FileGuardian\ncd FileGuardian
\n

इस स्टेप पर हमें एक तैयार स्केलेटन मिल जाता है। लेकिन एक असली CLI यूटिलिटी के लिए हमें आर्गुमेंट पार्स करने वाली लाइब्रेरी चाहिए। इसे जोड़ें:

\n
dotnet add package System.CommandLine --version 2.0.0-beta4.22272.1
\n

हो गया। अब हमारे पास C# कंसोल एप्लीकेशन बनाने के लिए सब कुछ है।

\n\n

System.CommandLine क्यों, मैन्युअल पार्सिंग क्यों नहीं?

\n

कई नौसिखिए args[0], args[1] लिखते हैं और IndexOutOfRangeException पकड़ते हैं। यह दर्द का रास्ता है। System.CommandLine देता है:

\n
    \n
  • फ्लैग्स का ऑटोमैटिक पार्सिंग (--output, -o)
  • \n
  • गलत इनपुट पर सुझाव
  • \n
  • बिल्ट-इन --help जनरेशन
  • \n
  • सब-कमांड का सपोर्ट (जैसे git में)
  • \n
\n

यह किसी भी गंभीर C# कंसोल यूटिलिटी के लिए ज़रूरी है।

\n\n

यूटिलिटी का कोर लिखें: पहला कमांड

\n

मान लीजिए हम एक फाइल मॉनिटरिंग टूल बना रहे हैं — FileGuardian। यह फाइलों का साइज़ चेक करेगा और अगर वे लिमिट से ज़्यादा हों तो चेतावनी देगा। उपयोगी लगता है, है ना?

\n

Program.cs खोलें और यह कोड लिखें:

\n
using System.CommandLine;\n\nvar rootCommand = new RootCommand("FileGuardian — फाइल मॉनिटरिंग यूटिलिटी");\n\nvar fileOption = new Option<FileInfo?>(\n    name: "--file",\n    description: "विश्लेषण के लिए फाइल का पथ"\n);\nrootCommand.AddOption(fileOption);\n\nrootCommand.SetHandler((file) =>\n{\n    if (file is null || !file.Exists)\n    {\n        Console.Error.WriteLine("❌ फाइल नहीं मिली!");\n        return;\n    }\n    \n    long sizeInBytes = file.Length;\n    double sizeInMb = sizeInBytes / (1024.0 * 1024.0);\n    \n    Console.WriteLine($"📄 फाइल: {file.Name}");\n    Console.WriteLine($"📏 साइज़: {sizeInMb:F2} MB");\n    \n    if (sizeInMb > 100)\n        Console.WriteLine("⚠️ चेतावनी: फाइल 100 MB से ज़्यादा है!");\n}, fileOption);\n\nawait rootCommand.InvokeAsync(args);
\n

रन करें:

\n
dotnet run -- --file somefile.txt
\n

यह पहले से काम कर रहा है। लेकिन यह सिर्फ शुरुआत है। चलिए इसमें रंग और प्रोग्रेस बार जोड़ते हैं।

\n\n

आकर्षक आउटपुट: रंग और इमोजी जोड़ें

\n

कंसोल को काला-सफेद ही रहना ज़रूरी नहीं है। C# में टेक्स्ट का रंग बदलना आसान है। एक हेल्पर क्लास बनाएं:

\n
public static class ConsoleHelper\n{\n    public static void WriteSuccess(string message)\n    {\n        Console.ForegroundColor = ConsoleColor.Green;\n        Console.WriteLine($"✅ {message}"

ब्लॉग

पुस्तक अनुशंसाएँ