Command Line Arguments এর বেসিক কনসেপ্ট

অ্যাপাচি কমন্স সিআলআই (Apache Commons CLI) - Java Technologies

290

Apache Commons CLI একটি জনপ্রিয় Java লাইব্রেরি যা কমান্ড লাইন আর্গুমেন্ট (Command Line Arguments) পার্সিং এবং ম্যানেজমেন্ট সহজ করে। এটি বিভিন্ন ধরনের অপশন, আর্গুমেন্ট, এবং প্যারামিটার সমর্থন করে, যা অ্যাপ্লিকেশনের কমান্ড লাইন ইন্টারফেস (CLI) তৈরি করতে সহায়তা করে। CLI এর মাধ্যমে ব্যবহারকারীরা অ্যাপ্লিকেশনকে আর্গুমেন্ট পাঠিয়ে নিয়ন্ত্রণ করতে পারেন।

এই লাইব্রেরির মাধ্যমে আপনি কমান্ড লাইন থেকে আর্গুমেন্টগুলি পড়তে, যাচাই করতে এবং প্রসেস করতে পারেন। এতে কমপ্লেক্স কমান্ড লাইন ইন্টারফেস সিস্টেম তৈরি করা সহজ হয়, যেমন অ্যাপ্লিকেশনের কনফিগারেশন বা ইনপুট ফাইল সন্নিবেশ করা।


Command Line Arguments এর বেসিক কনসেপ্ট

Command Line Arguments হল আর্গুমেন্ট যা আপনি অ্যাপ্লিকেশন চালানোর সময় কমান্ড লাইন থেকে পাস করেন। Java অ্যাপ্লিকেশনে, এই আর্গুমেন্টগুলি main মেথডের মাধ্যমে প্রাপ্ত হয়:

public static void main(String[] args) {
    // args[] এ কমান্ড লাইন আর্গুমেন্টগুলো পাওয়া যাবে
}

যখন আপনি একটি Java প্রোগ্রাম চালান, আপনি args[] এর মাধ্যমে আর্গুমেন্টগুলোর মান গ্রহণ করতে পারেন। উদাহরণস্বরূপ:

public class CommandLineExample {
    public static void main(String[] args) {
        // আর্গুমেন্ট আউটপুট করা
        for (String arg : args) {
            System.out.println(arg);
        }
    }
}

এই কোডটি কমান্ড লাইন থেকে পাস করা সকল আর্গুমেন্ট প্রিন্ট করবে।


Apache Commons CLI এর সাহায্যে Command Line Arguments

Apache Commons CLI ব্যবহার করার মাধ্যমে আপনি সহজেই কমান্ড লাইন আর্গুমেন্টগুলিকে পার্স এবং যাচাই করতে পারেন। এটি কমান্ড লাইন আর্গুমেন্টগুলির জন্য ভ্যালিডেশন, অপশন প্যারামিটার, এবং একাধিক ফ্ল্যাগ সরবরাহ করে।

Apache Commons CLI Setup

প্রথমে আপনাকে commons-cli লাইব্রেরি আপনার প্রজেক্টে যুক্ত করতে হবে। যদি আপনি Maven ব্যবহার করেন, তবে pom.xml ফাইলে নিচের ডিপেনডেন্সি যুক্ত করুন:

<dependency>
    <groupId>commons-cli</groupId>
    <artifactId>commons-cli</artifactId>
    <version>1.4</version>
</dependency>

Command Line Arguments Parsing with Apache Commons CLI

এখন, আমরা দেখতে পারি কিভাবে Apache Commons CLI ব্যবহার করে কমান্ড লাইন আর্গুমেন্টগুলি পার্স করতে হয়। নিচে একটি উদাহরণ দেওয়া হলো:

import org.apache.commons.cli.*;

public class CLIExample {
    public static void main(String[] args) {
        // অপশন বিল্ডার তৈরি
        Options options = new Options();

        // অপশন যুক্ত করা
        options.addOption("n", "name", true, "Enter your name");
        options.addOption("a", "age", true, "Enter your age");

        // কমান্ড লাইন আর্গুমেন্ট পার্স করার জন্য পজার
        CommandLineParser parser = new DefaultParser();
        CommandLine cmd = null;

        try {
            // আর্গুমেন্ট পার্স করা
            cmd = parser.parse(options, args);

            // অপশন থেকে মান পাওয়া
            String name = cmd.getOptionValue("n");
            String age = cmd.getOptionValue("a");

            System.out.println("Name: " + name);
            System.out.println("Age: " + age);
        } catch (ParseException e) {
            System.err.println("Parsing failed.  Reason: " + e.getMessage());
        }
    }
}

এই কোডের মাধ্যমে:

  • আমরা দুটি অপশন (-n এবং -a) তৈরি করেছি, যেখানে n ব্যবহারকারীর নাম এবং a ব্যবহারকারীর বয়স সংগ্রহ করবে।
  • CommandLineParser ব্যবহার করে আর্গুমেন্টগুলি পার্স করা হচ্ছে।
  • getOptionValue মেথড ব্যবহার করে নির্দিষ্ট অপশন থেকে মান নেওয়া হচ্ছে।

এখন, যদি আপনি অ্যাপ্লিকেশনটি চালান:

java CLIExample -n John -a 30

তাহলে আউটপুট হবে:

Name: John
Age: 30

Commonly Used Options in Apache Commons CLI

Apache Commons CLI বিভিন্ন ধরনের অপশন এবং ফ্ল্যাগ সমর্থন করে, যা অ্যাপ্লিকেশনের কমান্ড লাইন ইন্টারফেসকে আরও ফ্লেক্সিবল করে তোলে:

1. Mandatory Options

যদি কোনো অপশন আবশ্যক হয়, তবে required(true) ব্যবহার করতে হবে।

options.addOption(Option.builder("n")
                        .longOpt("name")
                        .hasArg(true)
                        .desc("Enter your name")
                        .required(true)
                        .build());

2. Default Values

অপশনের জন্য ডিফল্ট মান সেট করা যেতে পারে।

options.addOption(Option.builder("v")
                        .longOpt("verbose")
                        .hasArg(false)
                        .desc("Enable verbose mode")
                        .build());

3. Multiple Arguments

একাধিক আর্গুমেন্ট গ্রহণের জন্য:

options.addOption("p", "ports", true, "List of ports");

4. Help Option

কমন লাইনে -h বা --help আর্গুমেন্ট দিলে, সাহায্য মেসেজ দেখানোর জন্য:

options.addOption("h", "help", false, "Show help");

সারাংশ

Apache Commons CLI একটি শক্তিশালী এবং ফ্লেক্সিবল লাইব্রেরি যা Java অ্যাপ্লিকেশনগুলির জন্য সহজ এবং কার্যকরী কমান্ড লাইন আর্গুমেন্ট পার্সিং প্রদান করে। এটি আপনাকে বিভিন্ন ধরনের অপশন, প্যারামিটার এবং ফ্ল্যাগ সমর্থন করতে সহায়তা করে, যা কমান্ড লাইন ইন্টারফেস (CLI) তৈরি করতে খুবই উপকারী। কমান্ড লাইন আর্গুমেন্টগুলি ব্যবহারকারীর ইনপুট গ্রহণ এবং অ্যাপ্লিকেশনটি আরও কাস্টমাইজডভাবে নিয়ন্ত্রণ করতে সাহায্য করে।

Content added By

কমান্ড লাইন আর্গুমেন্টস (Command Line Arguments) হলো সেই ইনপুট প্যারামিটার বা আর্গুমেন্ট যা ইউজার বা অ্যাপ্লিকেশন কমান্ড লাইন বা টার্মিনাল থেকে কোনো প্রোগ্রাম চালানোর সময় প্রেরণ করে। এই আর্গুমেন্টস প্রোগ্রামটি কিভাবে চলবে বা কোন কার্যাবলি সম্পাদন করবে তা নির্ধারণ করতে ব্যবহৃত হয়। Java প্রোগ্রামিং ভাষায়, কমান্ড লাইন আর্গুমেন্টস সাধারণত main মেথডের মাধ্যমে গ্রহণ করা হয় এবং এগুলি অ্যাপ্লিকেশন বা স্ক্রিপ্টের ভিতরে বিভিন্ন কার্যক্রমের জন্য ইনপুট হিসেবে ব্যবহৃত হয়।

অ্যাপাচি কমন্স সিআলআই (Apache Commons CLI) লাইব্রেরি Java ডেভেলপারদের জন্য কমান্ড লাইন আর্গুমেন্টস হ্যান্ডলিং প্রক্রিয়াকে সহজ ও কার্যকরী করে তোলে। এটি আর্গুমেন্টগুলিকে পার্স, ভ্যালিডেট এবং প্রক্রিয়া করতে সাহায্য করে, যা CLI অ্যাপ্লিকেশন তৈরি করার সময় অত্যন্ত গুরুত্বপূর্ণ।


Command Line Arguments কি?

কমান্ড লাইন আর্গুমেন্টস হলো একটি তালিকা যা কমান্ড লাইন বা টার্মিনাল থেকে একটি প্রোগ্রাম চালানোর সময় আর্গুমেন্টস হিসেবে পাস করা হয়। এই আর্গুমেন্টগুলি প্রোগ্রামের ইনপুট হিসেবে ব্যবহৃত হয়। উদাহরণস্বরূপ:

java MyProgram arg1 arg2 arg3

এখানে arg1, arg2, এবং arg3 হলো কমান্ড লাইন আর্গুমেন্টস। এই আর্গুমেন্টগুলো প্রোগ্রামটি চালানোর সময় প্রোগ্রামে ইনপুট হিসেবে গ্রহণ করা হয়।

কমান্ড লাইন আর্গুমেন্টস এর উদাহরণ:

public class CommandLineExample {
    public static void main(String[] args) {
        // আর্গুমেন্ট গুলোর প্রিন্ট করা
        for (String arg : args) {
            System.out.println("Argument: " + arg);
        }
    }
}

যদি আপনি এই প্রোগ্রামটি কমান্ড লাইনে চালান:

java CommandLineExample Hello World

তাহলে আউটপুট হবে:

Argument: Hello
Argument: World

এখানে, Hello এবং World হল কমান্ড লাইন আর্গুমেন্টস, যা প্রোগ্রামের মাধ্যমে প্রিন্ট করা হয়েছে।


অ্যাপাচি কমন্স সিআলআই (Apache Commons CLI) দিয়ে Command Line Arguments কীভাবে কাজ করে?

অ্যাপাচি কমন্স সিআলআই লাইব্রেরি কমান্ড লাইন আর্গুমেন্টস পার্স করার জন্য কিছু শক্তিশালী ফিচার প্রদান করে, যেমন আর্গুমেন্টের ধরন চিহ্নিত করা, হেল্প মেসেজ তৈরি করা, এবং আর্গুমেন্টের ভুল ব্যবহার শনাক্ত করা। নিচে কিছু গুরুত্বপূর্ণ পদক্ষেপ দেওয়া হলো:

১. অ্যাপাচি কমন্স সিআলআই লাইব্রেরি ইনস্টল করা

প্রথমে আপনাকে অ্যাপাচি কমন্স সিআলআই লাইব্রেরিটি আপনার প্রজেক্টে যুক্ত করতে হবে। যদি আপনি Maven ব্যবহার করেন, তাহলে pom.xml ফাইলে এটি যুক্ত করতে হবে:

<dependency>
    <groupId>org.apache.commons</groupId>
    <artifactId>commons-cli</artifactId>
    <version>1.4</version>
</dependency>

২. কমান্ড লাইন আর্গুমেন্টস পার্স করা

অ্যাপাচি কমন্স সিআলআই ব্যবহার করে আর্গুমেন্টস পার্স করার জন্য Options, Option, এবং CommandLineParser ব্যবহার করতে হবে। নিচে এর একটি উদাহরণ দেওয়া হলো:

import org.apache.commons.cli.*;

public class CommandLineExample {
    public static void main(String[] args) {
        // অপশন তৈরি করা
        Options options = new Options();
        
        options.addOption("u", "user", true, "Username");
        options.addOption("p", "password", true, "Password");
        
        // পার্সার তৈরি করা
        CommandLineParser parser = new DefaultParser();
        CommandLine cmd = null;
        
        try {
            // কমান্ড লাইন আর্গুমেন্টস পার্স করা
            cmd = parser.parse(options, args);
            
            // আর্গুমেন্টস থেকে ভ্যালু নেয়া
            String username = cmd.getOptionValue("u");
            String password = cmd.getOptionValue("p");
            
            // আউটপুট
            System.out.println("Username: " + username);
            System.out.println("Password: " + password);
            
        } catch (ParseException e) {
            System.out.println("Parsing failed. Reason: " + e.getMessage());
        }
    }
}

এখানে, -u এবং -p আর্গুমেন্টস হিসাবে ব্যবহারকারী নাম এবং পাসওয়ার্ড গ্রহণ করা হচ্ছে।

৩. কমান্ড লাইন আর্গুমেন্টস চালানো

যদি আপনি উপরের প্রোগ্রামটি চালান, তাহলে কমান্ড লাইন আর্গুমেন্টস নিচের মত হবে:

java CommandLineExample -u JohnDoe -p secretPassword

এখানে, -u এর পরে ব্যবহারকারী নাম এবং -p এর পরে পাসওয়ার্ড প্রদান করা হয়েছে। প্রোগ্রামটি আর্গুমেন্টগুলো প্রিন্ট করবে।


সারাংশ

কমান্ড লাইন আর্গুমেন্টস হলো সেই ইনপুট প্যারামিটার যেগুলি টার্মিনাল বা কমান্ড লাইন থেকে প্রোগ্রামে পাস করা হয়। অ্যাপাচি কমন্স সিআলআই (Apache Commons CLI) লাইব্রেরি Java প্রোগ্রামগুলোর জন্য কমান্ড লাইন আর্গুমেন্টস পরিচালনা সহজ করে তোলে। এটি আর্গুমেন্ট পাস, পার্স এবং ভ্যালিডেট করার জন্য শক্তিশালী ফিচার সরবরাহ করে। এটি ডেভেলপারদের CLI অ্যাপ্লিকেশন তৈরি করার জন্য একটি শক্তিশালী টুলকিট হিসেবে কাজ করে।

Content added By

Apache Commons CLI লাইব্রেরি Java অ্যাপ্লিকেশনগুলিতে কমান্ড-লাইন আর্গুমেন্ট প্রোসেসিং সহজ করে তোলে। কমান্ড-লাইন আর্গুমেন্টগুলিকে বিভিন্ন ধরনের হিসেবে শ্রেণিবদ্ধ করা যেতে পারে, যেমন Required (অবশ্যই প্রয়োজনীয়), Optional (ঐচ্ছিক), এবং Positional (পজিশনাল)। এই আর্গুমেন্টগুলো প্রতিটি কমান্ডের মাধ্যমে অ্যাপ্লিকেশন চালানোর সময় ইউজার ইনপুট প্রদান করতে ব্যবহৃত হয়।

এখানে আমরা আলোচনা করব Required, Optional, এবং Positional আর্গুমেন্ট কিভাবে Apache Commons CLI ব্যবহার করে হ্যান্ডল করা যায়।


১. Required Arguments (অবশ্যই প্রয়োজনীয় আর্গুমেন্ট)

Required Arguments হলো সেই আর্গুমেন্টগুলো, যেগুলি কমান্ড-লাইন ইনপুটের জন্য অবশ্যই প্রদান করতে হয়। যদি এই আর্গুমেন্ট প্রদান না করা হয়, তাহলে অ্যাপ্লিকেশনটি ইউজারকে ভুল বার্তা দেখাবে এবং প্রয়োজনে সাহায্য মেসেজ প্রদর্শন করবে।

উদাহরণ:

ধরা যাক, আমরা একটি অ্যাপ্লিকেশন তৈরি করছি যা ইউজার থেকে একটি ইনপুট ফাইলের নাম গ্রহণ করে এবং সেই ফাইল প্রক্রিয়া করবে। এখানে ফাইল নাম একটি Required Argument

import org.apache.commons.cli.*;

public class RequiredArgumentExample {

    public static void main(String[] args) {
        // অপশন কনফিগারেশন
        Options options = new Options();
        Option inputFile = new Option("f", "file", true, "Input file path");
        inputFile.setRequired(true);  // এই অপশনটি Required
        options.addOption(inputFile);

        CommandLineParser parser = new DefaultParser();
        CommandLine cmd = null;

        try {
            // আর্গুমেন্ট পার্সিং
            cmd = parser.parse(options, args);

            // ইনপুট ফাইল নাম গ্রহণ
            String fileName = cmd.getOptionValue("f");
            System.out.println("Input file: " + fileName);

        } catch (ParseException e) {
            // যদি Required আর্গুমেন্ট না দেওয়া হয়
            System.err.println("Missing required option: -f");
            HelpFormatter formatter = new HelpFormatter();
            formatter.printHelp("RequiredArgumentExample", options);
        }
    }
}

ব্যাখ্যা:

  1. setRequired(true): inputFile অপশনকে required করা হয়েছে, যার মানে ইউজারকে এই অপশনটি অবশ্যই প্রদান করতে হবে।
  2. HelpFormatter: যদি কমান্ড-লাইন আর্গুমেন্টে -f অপশন প্রদান না করা হয়, তবে HelpFormatter দিয়ে সাহায্য মেসেজ প্রদর্শন করা হয়।

আউটপুট:

যদি আপনি -f অপশন ছাড়া অ্যাপ্লিকেশনটি চালান:

java RequiredArgumentExample

এখানে সাহায্য মেসেজ দেখাবে:

Missing required option: -f

২. Optional Arguments (ঐচ্ছিক আর্গুমেন্ট)

Optional Arguments হলো সেই আর্গুমেন্টগুলো, যেগুলি ইউজার চাইলে দিতে পারে, তবে তা দেওয়া বাধ্যতামূলক নয়। এগুলি না দিলেও অ্যাপ্লিকেশনটি সঠিকভাবে কাজ করতে পারে।

উদাহরণ:

ধরা যাক, একটি অ্যাপ্লিকেশন তৈরি করা হচ্ছে, যেখানে ইউজার একটি ইনপুট ফাইল প্রদান করবে, এবং ঐচ্ছিকভাবে আউটপুট ফাইলের নামও দিতে পারে।

import org.apache.commons.cli.*;

public class OptionalArgumentExample {

    public static void main(String[] args) {
        // অপশন কনফিগারেশন
        Options options = new Options();
        Option inputFile = new Option("f", "file", true, "Input file path");
        options.addOption(inputFile);

        // ঐচ্ছিক আর্গুমেন্ট: আউটপুট ফাইল নাম
        Option outputFile = new Option("o", "output", true, "Output file path");
        outputFile.setRequired(false);  // এই অপশনটি Optional
        options.addOption(outputFile);

        CommandLineParser parser = new DefaultParser();
        CommandLine cmd = null;

        try {
            // আর্গুমেন্ট পার্সিং
            cmd = parser.parse(options, args);

            // ইনপুট ফাইল নাম গ্রহণ
            String input = cmd.getOptionValue("f");
            System.out.println("Input file: " + input);

            // যদি আউটপুট ফাইল দেওয়া থাকে
            if (cmd.hasOption("o")) {
                String output = cmd.getOptionValue("o");
                System.out.println("Output file: " + output);
            } else {
                System.out.println("No output file specified.");
            }

        } catch (ParseException e) {
            // যদি আর্গুমেন্টগুলো সঠিকভাবে না দেওয়া হয়
            System.err.println("Error: " + e.getMessage());
            HelpFormatter formatter = new HelpFormatter();
            formatter.printHelp("OptionalArgumentExample", options);
        }
    }
}

ব্যাখ্যা:

  1. setRequired(false): outputFile অপশনটি optional। অর্থাৎ, ইউজার চাইলে এটি দিতে পারে, কিন্তু বাধ্যতামূলক নয়।
  2. cmd.hasOption("o"): এখানে আমরা চেক করি যে ইউজার আউটপুট ফাইল প্রদান করেছে কিনা।

আউটপুট:

  • যদি আপনি আউটপুট ফাইল উল্লেখ না করেন:
java OptionalArgumentExample -f input.txt

আউটপুট:

Input file: input.txt
No output file specified.
  • যদি আপনি আউটপুট ফাইল উল্লেখ করেন:
java OptionalArgumentExample -f input.txt -o output.txt

আউটপুট:

Input file: input.txt
Output file: output.txt

৩. Positional Arguments (পজিশনাল আর্গুমেন্ট)

Positional Arguments এমন আর্গুমেন্ট যা নির্দিষ্ট পজিশনে থাকতে হয় এবং সাধারণত স্বল্প আকারে উল্লেখ করা হয়। এ ধরনের আর্গুমেন্টে সাধারণত অপশন চিহ্ন (যেমন -f বা --file) ব্যবহার করা হয় না। এগুলি সোজা এবং সরাসরি ইনপুট হিসেবে দেওয়া হয়।

উদাহরণ:

ধরা যাক, একটি কমান্ড-লাইন অ্যাপ্লিকেশন তৈরি করা হচ্ছে যেখানে প্রথম আর্গুমেন্টটি ইনপুট ফাইল এবং দ্বিতীয় আর্গুমেন্টটি আউটপুট ফাইল।

import org.apache.commons.cli.*;

public class PositionalArgumentExample {

    public static void main(String[] args) {
        // অপশন কনফিগারেশন
        Options options = new Options();

        // পজিশনাল আর্গুমেন্ট: ইনপুট ফাইল
        Option inputFile = new Option("f", "file", true, "Input file path");
        options.addOption(inputFile);

        CommandLineParser parser = new DefaultParser();
        CommandLine cmd = null;

        try {
            // আর্গুমেন্ট পার্সিং
            cmd = parser.parse(options, args);

            // প্রথম পজিশনাল আর্গুমেন্ট: ইনপুট ফাইল
            String inputFilePath = cmd.getArgs()[0];  // ইনপুট ফাইল
            System.out.println("Input file: " + inputFilePath);

            // দ্বিতীয় পজিশনাল আর্গুমেন্ট: আউটপুট ফাইল
            String outputFilePath = cmd.getArgs()[1];  // আউটপুট ফাইল
            System.out.println("Output file: " + outputFilePath);

        } catch (ParseException e) {
            // যদি আর্গুমেন্টগুলো সঠিকভাবে না দেওয়া হয়
            System.err.println("Error: " + e.getMessage());
            HelpFormatter formatter = new HelpFormatter();
            formatter.printHelp("PositionalArgumentExample", options);
        }
    }
}

ব্যাখ্যা:

  • Positional Argument Parsing: পজিশনাল আর্গুমেন্টগুলো cmd.getArgs() থেকে নেওয়া হয়।
  • এটি পজিশনাল আর্গুমেন্ট হিসেবে কাজ করে, যেখানে আর্গুমেন্টের পজিশন অনুযায়ী মান নেয়া হয়।

আউটপুট:

java PositionalArgumentExample input.txt output.txt

আউটপুট:

Input file: input.txt
Output file: output.txt

সারাংশ

Apache Commons CLI লাইব্রেরি ব্যবহার করে আপনি তিন ধরনের আর্গুমেন্ট হ্যান্ডল করতে পারেন:

  1. Required Arguments: এই আর্গুমেন্টগুলো অবশ্যই প্রদান করতে হয়।
  2. Optional Arguments: এই আর্গুমেন্টগুলো ঐচ্ছিক এবং প্রদান না করলেও অ্যাপ্লিকেশনটি কাজ করবে।
  3. Positional Arguments: এই আর্গুমেন্টগুলো নির্দিষ্ট পজিশনে থাকতে হয় এবং কোনো অপশন চিহ্ন ছাড়াই সরাসরি ইনপুট হিসেবে দেওয়া হয়।

এভাবে, Apache Commons CLI এর মাধ্যমে আপনি খুব সহজেই কমান্ড-লাইন আর্গুমেন্ট প্রোসেসিং করতে পারবেন এবং আপনার অ্যাপ্লিকেশনটিকে কাস্টমাইজ করতে পারবেন।

Content added By

Apache Commons CLI একটি শক্তিশালী লাইব্রেরি যা কমান্ড লাইন অ্যাপ্লিকেশনগুলিতে আর্গুমেন্ট হ্যান্ডলিং সহজ করে। এটি ব্যবহারকারীদের কমান্ড লাইন আর্গুমেন্টগুলি সহজভাবে পার্স করতে সাহায্য করে, যাতে তারা সফটওয়্যারের কাজ সম্পাদন করতে পারেন। এই লাইব্রেরি একক (single) এবং একাধিক (multiple) আর্গুমেন্টের সঙ্গে কাজ করতে সক্ষম।

এখন আমরা দেখব Single এবং Multiple Arguments এর ধারণা এবং Apache Commons CLI ব্যবহার করে এগুলোর প্রক্রিয়া কিভাবে করা হয়।


Single Argument

Single argument হল একটি একক মান বা অপশন যা কমান্ড লাইন থেকে একটি নির্দিষ্ট ইনপুট গ্রহণ করে। এটি সাধারণত একটি ফ্ল্যাগ বা টোকেন হিসেবে ব্যবহৃত হয়, যেমন একটি ফাইল পাথ, একটি নম্বর, বা অন্য কোনো সাধারণ মান।

Apache Commons CLI এর সাহায্যে single argument সঠিকভাবে পার্স করা সম্ভব, এবং এটি একটি নির্দিষ্ট অপশন বা ফ্ল্যাগের সাথে সম্পর্কিত থাকে।

উদাহরণ: Single Argument

ধরি, আপনি একটি কমান্ড লাইন অ্যাপ্লিকেশন তৈরি করছেন যা ব্যবহারকারীর কাছ থেকে একটি ফাইল পাথ নেয়। এখানে -f অপশন ব্যবহার করা হবে ফাইল পাথ দেওয়ার জন্য।

import org.apache.commons.cli.*;

public class SingleArgumentExample {
    public static void main(String[] args) {
        // অপশন তৈরি
        Options options = new Options();
        options.addOption("f", "file", true, "Path to the input file");

        // পার্সার তৈরি
        CommandLineParser parser = new DefaultParser();
        HelpFormatter formatter = new HelpFormatter();

        try {
            // কমান্ড লাইন আর্গুমেন্ট পার্স করা
            CommandLine line = parser.parse(options, args);

            if (line.hasOption("f")) {
                String filePath = line.getOptionValue("f");
                System.out.println("File path provided: " + filePath);
            } else {
                System.out.println("No file path provided.");
            }

        } catch (ParseException exp) {
            System.out.println("Error parsing the command line: " + exp.getMessage());
            formatter.printHelp("SingleArgumentExample", options);
        }
    }
}

আউটপুট:

java SingleArgumentExample -f /path/to/file
File path provided: /path/to/file

এখানে, -f অপশন ব্যবহার করে ব্যবহারকারী ফাইল পাথ প্রদান করছে, এবং সেই পাথটি পার্স করা হচ্ছে।


Multiple Arguments

Multiple arguments ব্যবহারকারীকে একাধিক আর্গুমেন্ট প্রদান করার সুযোগ দেয়। উদাহরণস্বরূপ, যখন আপনি একাধিক ফাইল পাথ, সংখ্যা, বা অন্য কিছু ইনপুট চান, তখন multiple arguments ব্যবহার করা হয়। Apache Commons CLI লাইব্রেরি একাধিক আর্গুমেন্টের জন্য আলাদা পার্সিং সমর্থন করে।

এটি varargs (variable arguments) বা multiple options এর মাধ্যমে পরিচালনা করা যায়। আপনি একাধিক মান গ্রহণ করতে পারেন এবং সেগুলোর উপর ভিত্তি করে প্রক্রিয়া চালাতে পারেন।

উদাহরণ: Multiple Arguments

ধরি, আপনি একটি কমান্ড লাইন অ্যাপ্লিকেশন তৈরি করছেন যা ব্যবহারকারীর কাছ থেকে একাধিক ফাইল পাথ নেবে। এখানে -f অপশন ব্যবহার করে একাধিক ফাইল পাথ নেওয়া হবে।

import org.apache.commons.cli.*;

public class MultipleArgumentsExample {
    public static void main(String[] args) {
        // অপশন তৈরি
        Options options = new Options();
        options.addOption("f", "file", true, "Path to the input files");

        // পার্সার তৈরি
        CommandLineParser parser = new DefaultParser();
        HelpFormatter formatter = new HelpFormatter();

        try {
            // কমান্ড লাইন আর্গুমেন্ট পার্স করা
            CommandLine line = parser.parse(options, args);

            if (line.hasOption("f")) {
                // একাধিক ফাইল পাথ সংগ্রহ করা
                String[] filePaths = line.getOptionValues("f");

                // ফাইল পাথ গুলি আউটপুট করা
                System.out.println("File paths provided:");
                for (String path : filePaths) {
                    System.out.println(path);
                }
            } else {
                System.out.println("No file paths provided.");
            }

        } catch (ParseException exp) {
            System.out.println("Error parsing the command line: " + exp.getMessage());
            formatter.printHelp("MultipleArgumentsExample", options);
        }
    }
}

আউটপুট:

java MultipleArgumentsExample -f /path/to/file1 /path/to/file2
File paths provided:
/path/to/file1
/path/to/file2

এখানে, -f অপশন ব্যবহার করে একাধিক ফাইল পাথ দেওয়া হয়েছে এবং সেগুলো পার্স করে আউটপুট করা হচ্ছে।


Single এবং Multiple Arguments এর মধ্যে পার্থক্য

FeatureSingle ArgumentMultiple Arguments
সংজ্ঞাএকক মান বা অপশন যা ব্যবহারকারী একবার ইনপুট দেয়।একাধিক মান বা অপশন যা ব্যবহারকারী একাধিকবার ইনপুট দেয়।
উদাহরণ-f /path/to/file-f /path/to/file1 /path/to/file2
আর্গুমেন্টের সংখ্যাএকমাত্র একটি আর্গুমেন্ট গ্রহণ করা হয়।একাধিক আর্গুমেন্ট গ্রহণ করা হয়।
পদ্ধতিgetOptionValue() ব্যবহার করে একক মান পাওয়া যায়।getOptionValues() ব্যবহার করে একাধিক মান পাওয়া যায়।
ব্যবহারসাধারণত একক ফাইল পাথ বা নির্দিষ্ট একটি মান দেওয়ার জন্য ব্যবহৃত হয়।একাধিক ফাইল বা বিভিন্ন ধরণের ইনপুট আর্গুমেন্টের জন্য ব্যবহৃত হয়।

সারাংশ

Apache Commons CLI লাইব্রেরি single এবং multiple arguments উভয় ধরনের আর্গুমেন্ট হ্যান্ডলিং সহজ করে তোলে। এটি কমান্ড লাইন থেকে আর্গুমেন্টের মান পার্স করতে সহায়তা করে, এবং একক বা একাধিক আর্গুমেন্ট গ্রহণের জন্য উপযুক্ত পদ্ধতি প্রদান করে। একক আর্গুমেন্টের জন্য getOptionValue() এবং একাধিক আর্গুমেন্টের জন্য getOptionValues() মেথড ব্যবহার করা হয়। CLI অ্যাপ্লিকেশনগুলির জন্য Apache Commons CLI একটি অত্যন্ত কার্যকরী এবং শক্তিশালী লাইব্রেরি যা ডেভেলপারদের আর্গুমেন্ট হ্যান্ডলিং সহজ করে তোলে।

Content added By

Apache Commons CLI লাইব্রেরি Java অ্যাপ্লিকেশনগুলিতে কমান্ড লাইন আর্গুমেন্ট এবং বিকল্প (Option) প্রক্রিয়াকরণ করতে ব্যবহৃত হয়। এটি Option এবং OptionGroup ক্লাস ব্যবহার করে অ্যাপ্লিকেশনে বিকল্প (Options) সংজ্ঞায়িত এবং সংগঠিত করতে সাহায্য করে। Option এবং OptionGroup এর মাধ্যমে আপনি কমান্ড লাইন থেকে ইনপুট আর্গুমেন্টগুলিকে আরও সুসংগঠিত এবং কার্যকরভাবে প্রক্রিয়া করতে পারেন।


Option এর ভূমিকা

Option ক্লাস অ্যাপাচি কমন্স সিআলআই-এর একটি মৌলিক উপাদান যা একক বা বহু আর্গুমেন্টে পরিণত হওয়া বিকল্প তৈরি করতে ব্যবহৃত হয়। প্রতিটি Option একটি নির্দিষ্ট কমান্ড লাইন বিকল্প (যেমন -f বা --file) এবং তার সাথে যুক্ত মান (যেমন filename.txt) বা একটি ফ্ল্যাগ (যেমন -v বা --verbose) বোঝায়।

প্রধান বৈশিষ্ট্য:

  1. নাম এবং শর্ট নাম: প্রতিটি বিকল্পের একটি পূর্ণ নাম (যেমন --file) এবং একটি শর্ট নাম (যেমন -f) থাকতে পারে।
  2. মান সহ বা ফ্ল্যাগ: কিছু বিকল্পের মান থাকতে পারে (যেমন -f <file>), এবং কিছু বিকল্প শুধুমাত্র ফ্ল্যাগ হিসেবে থাকতে পারে (যেমন -v বা --verbose)।
  3. বাধ্যতামূলক বা ঐচ্ছিক: আপনি বিকল্পটিকে বাধ্যতামূলক বা ঐচ্ছিক (optional) হিসাবে চিহ্নিত করতে পারেন।

উদাহরণ:

import org.apache.commons.cli.*;

public class OptionExample {
    public static void main(String[] args) {
        Options options = new Options();

        // -f বা --file বিকল্প যোগ করা
        Option fileOption = new Option("f", "file", true, "Input file");
        options.addOption(fileOption);

        // -v বা --verbose ফ্ল্যাগ যোগ করা
        Option verboseOption = new Option("v", "verbose", false, "Enable verbose output");
        options.addOption(verboseOption);

        CommandLineParser parser = new DefaultParser();
        CommandLine cmd = null;

        try {
            cmd = parser.parse(options, args);

            // --file বা -f আর্গুমেন্ট চেক করা
            if (cmd.hasOption("f")) {
                String file = cmd.getOptionValue("f");
                System.out.println("Input file: " + file);
            }

            // --verbose বা -v ফ্ল্যাগ চেক করা
            if (cmd.hasOption("v")) {
                System.out.println("Verbose mode enabled");
            }
        } catch (ParseException e) {
            System.out.println("Error parsing command line: " + e.getMessage());
        }
    }
}

ব্যাখ্যা:

  • Option("f", "file", true, "Input file"): এখানে -f এবং --file বিকল্প তৈরি করা হয়েছে, যার মান true মানে এটি একটি মান (যেমন filename.txt) গ্রহণ করবে।
  • Option("v", "verbose", false, "Enable verbose output"): এটি একটি ফ্ল্যাগ বিকল্প তৈরি করে, যা কোনো মান গ্রহণ করবে না এবং কেবল উপস্থিত থাকলেই সক্রিয় হবে।

OptionGroup এর ভূমিকা

OptionGroup একসাথে সম্পর্কিত বিকল্পগুলির একটি গ্রুপ তৈরি করার জন্য ব্যবহৃত হয়। এটি প্রধানত দুটি বা তার বেশি বিকল্পের মধ্যে পারস্পরিক সম্পর্ক বজায় রাখে, যেমন শুধুমাত্র এক বিকল্প নির্বাচন করা যেতে পারে। OptionGroup কমান্ড লাইনে একাধিক বিকল্পের মধ্যে একটিকে চয়ন করতে সাহায্য করে, এবং একাধিক বিকল্প একসাথে উপস্থিত হলে ত্রুটি বার্তা প্রদান করতে পারে।

প্রধান বৈশিষ্ট্য:

  1. একক বিকল্প নির্বাচন: একবারে একটির বেশি বিকল্প নির্বাচন করা সম্ভব নয়। উদাহরণস্বরূপ, যদি আপনি -v (verbose) এবং -d (debug) একসাথে নির্বাচন করেন, তবে এটি সঠিক নয় এবং ত্রুটি প্রদান করবে।
  2. বিকল্পের গোষ্ঠী: OptionGroup একটি সেট বিকল্প ধারণ করতে পারে, যেগুলির মধ্যে একটিকে শুধুমাত্র নির্বাচন করা যায়।

উদাহরণ:

import org.apache.commons.cli.*;

public class OptionGroupExample {
    public static void main(String[] args) {
        Options options = new Options();

        // --help বা -h বিকল্প যোগ করা
        Option helpOption = new Option("h", "help", false, "Show help");
        options.addOption(helpOption);

        // --verbose বা -v বিকল্প যোগ করা
        Option verboseOption = new Option("v", "verbose", false, "Enable verbose output");
        options.addOption(verboseOption);

        // --debug বা -d বিকল্প যোগ করা
        Option debugOption = new Option("d", "debug", false, "Enable debug mode");
        options.addOption(debugOption);

        // একাধিক বিকল্পের জন্য OptionGroup তৈরি করা
        OptionGroup group = new OptionGroup();
        group.addOption(verboseOption);
        group.addOption(debugOption);

        // বিকল্পগুলি Group হিসেবে যুক্ত করা
        options.addOptionGroup(group);

        CommandLineParser parser = new DefaultParser();
        CommandLine cmd = null;

        try {
            cmd = parser.parse(options, args);

            // --help চেক করা
            if (cmd.hasOption("h")) {
                HelpFormatter formatter = new HelpFormatter();
                formatter.printHelp("OptionGroupExample", options);
                return;
            }

            // --verbose অথবা --debug চেক করা
            if (cmd.hasOption("v")) {
                System.out.println("Verbose mode enabled");
            } else if (cmd.hasOption("d")) {
                System.out.println("Debug mode enabled");
            }
        } catch (ParseException e) {
            System.out.println("Error parsing command line: " + e.getMessage());
        }
    }
}

ব্যাখ্যা:

  • OptionGroup ব্যবহার করা হয়েছে যাতে -v এবং -d বিকল্পগুলি একসাথে থাকে এবং ব্যবহারকারী শুধুমাত্র একটি বিকল্প চয়ন করতে পারে।
  • OptionGroup-এ একাধিক বিকল্প যোগ করা হয়েছে, এবং এই গ্রুপের বিকল্পগুলির মধ্যে শুধু একটি বিকল্প নির্বাচিত হতে পারে। যদি ব্যবহারকারী দুটি বিকল্প একসাথে প্রদান করে, তবে তা ত্রুটি প্রদর্শন করবে।

Option এবং OptionGroup এর সুবিধা

  1. নমনীয়তা: Option এবং OptionGroup আপনাকে সহজে বিভিন্ন ধরনের বিকল্প এবং আর্গুমেন্ট হ্যান্ডল করতে সহায়ক।
  2. স্বচ্ছতা: বিকল্পগুলির প্রকার, তাদের মান এবং ফ্ল্যাগস সহজেই চিহ্নিত করা যায়, যা কোডের স্বচ্ছতা বাড়ায়।
  3. এনফোর্সড রুলস: OptionGroup ব্যবহার করে আপনি কিছু বিকল্প একসাথে ব্যবহারের ক্ষেত্রে নিষেধাজ্ঞা আরোপ করতে পারেন, যা সিস্টেমের মধ্যে অসঙ্গতি এড়ায়।
  4. সহজ সহায়ক বার্তা: Option এবং OptionGroup এর সাহায্যে, ব্যবহারকারীকে কীভাবে CLI ব্যবহার করতে হবে, তা সহজে ব্যাখ্যা করা যায়।

Apache Commons CLI এর Option এবং OptionGroup এর সাহায্যে Java অ্যাপ্লিকেশনগুলিতে কমান্ড লাইন আর্গুমেন্ট হ্যান্ডলিং অনেক সহজ এবং কার্যকরী হয়ে ওঠে। Option ব্যবহার করে একক বিকল্প তৈরি করা যায়, এবং OptionGroup ব্যবহার করে সম্পর্কিত বিকল্পগুলিকে একসাথে গ্রুপ করা যায়, যা কমান্ড লাইনে কিছু বিকল্প একসাথে নির্বাচন করার সীমাবদ্ধতা আরোপ করে। এই বৈশিষ্ট্যগুলি CLI অ্যাপ্লিকেশনগুলির জন্য খুবই গুরুত্বপূর্ণ, এবং এগুলি অ্যাপ্লিকেশনের ইন্টারফেসকে আরও ব্যবহারবান্ধব এবং কার্যকরী করে তোলে।

Content added By
Promotion

Are you sure to start over?

Loading...