def mkdir_chown(paths, user_group=None, permissions='ug=rwX,o=rX', create_parent=True, check_if_exists=False, recursive=False):
    """
    Generates a unix command line for creating a directory and assigning permissions to it. Shortcut to a combination of
    :func:`~mkdir`, :func:`~chown`, and :func:`~chmod`.

    Note that if `check_if_exists` has been set to ``True``, and the directory is found, `mkdir` is not called, but
    `user_group` and `permissions` are still be applied.

    :param paths: Can be a single path string, or a list or tuple of path strings.
    :type paths: unicode | str | tuple[unicode | str] | list[unicode | str]
    :param: Optional owner of the directory. For notation, see :func:`~get_user_group`.
    :type user_group: unicode | str | int | tuple
    :param permissions: Optional permission mode, in any notation accepted by the unix `chmod` command.
      Default is ``ug=rwX,o=rX``.
    :type permissions: unicode | str
    :param create_parent: Parent directories are created if not present (`-p` argument to `mkdir`).
    :type create_parent: bool
    :param check_if_exists: Prior to creating the directory, checks if it already exists.
    :type check_if_exists: bool
    :param recursive: Apply permissions and owner change recursively.
    :type recursive: bool
    :return: Unix shell command line.
    :rtype: unicode | str
    """

    def _generate_str(path):
        mkdir_str = mkdir(path, create_parent, check_if_exists)
        chown_str = chown(user_group, path, recursive) if user_group else None
        chmod_str = chmod(permissions, path, recursive) if permissions else None
        return ' && '.join(n for n in (mkdir_str, chown_str, chmod_str) if n)

    if isinstance(paths, (tuple, list)):
        return '; '.join((_generate_str(path) for path in paths))
    return _generate_str(paths)