docs: 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)