Refactor ShellCmd to reuse CliCommandExecutor