Magento2 Cli Command

Today, We will create our custom module to add CLI Command. 
First of all, you need to have basic knowledge of magento2 module. 
We will create module : Mageclinics_Command

1. Module Structure

Our module structure will be like below.

Basic module file



File for our CLI commands



2. Step 1: Command node in di.xml

create di.xml file, Use a type with name Magento\Framework\Console\CommandList to define the command option.

File: app/code/Mageclinics/Command/etc/di.xml

<?xml version="1.0"?>
<config xmlns:xsi="" xsi:noNamespaceSchemaLocation="urn:magento:framework:ObjectManager/etc/config.xsd"> 
 <type name="Magento\Framework\Console\CommandList"> 
  <argument name="commands" xsi:type="array">       
       <item name="hello" xsi:type="object">Mageclinics\Command\Console\Hello</item> 

3. Create Console class file

File: app/code/Mageclinics/Command/Console/Hello.php

namespace Mageclinics\Command\Console;

use Symfony\Component\Console\Command\Command;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Output\OutputInterface;
use Symfony\Component\Console\Input\InputOption;

class Hello extends Command

const TEST = 'test';

protected function configure()
$options = [ new InputOption( self::TEST, null, InputOption::VALUE_REQUIRED, 'Test' ) ];
->setDescription('Test command line')
protected function execute(InputInterface $input, OutputInterface $output)
if ($test = $input->getOption(self::TEST)) {
$output->writeln("Hello " . $test);

} else {
$output->writeln("Hello World");
return $this;

configure() : function will set the name, description, command line arguments of the Magento 2 add command line

execute() : function will run when we run this command line via console.

4. Run command.

From Command line run php bin/magento list to see all available commands.
And you will see example:hello in the list of commands.
Once you run php bin/magento example:hello --test="John"
The result will be Hello John

Read more »