{
  "name": "tar",
  "description": "Manipulating archive files",
  "subcommands": [
    {
      "name": "A",
      "aliases": [
        "-A",
        "--catenate",
        "--concatenate"
      ],
      "description": "Append archive to the end of another archive",
      "args": [
        {
          "name": "ARCHIVE",
          "is_variadic": true,
          "template": "filepaths"
        }
      ]
    },
    {
      "name": "c",
      "aliases": [
        "-c",
        "--create"
      ],
      "description": "Create a new archive",
      "options": [
        {
          "names": [
            "--check-device"
          ],
          "description": "Check device numbers when creating incremental archives"
        },
        {
          "names": [
            "--level"
          ],
          "description": "Set dump level for created listed-incremental archive",
          "takes_arg": true,
          "arg": {
            "name": "NUMBER"
          }
        },
        {
          "names": [
            "--no-check-device"
          ],
          "description": "Do not check device numbers when creating incremental archives"
        },
        {
          "names": [
            "--ignore-failed-read"
          ],
          "description": "Do not exit with nonzero on unreadable files"
        },
        {
          "names": [
            "--restrict"
          ],
          "description": "Disable the use of some potentially harmful options"
        },
        {
          "names": [
            "--remove-files"
          ],
          "description": "Remove files from disk after adding them to the archive"
        },
        {
          "names": [
            "W",
            "-W",
            "--verify"
          ],
          "description": "Verify the archive after writing it"
        },
        {
          "names": [
            "--atime-preserve"
          ],
          "description": "Preserve access times on dumped files",
          "takes_arg": true,
          "arg": {
            "name": "METHOD",
            "suggestions": [
              "replace",
              "system"
            ]
          }
        },
        {
          "names": [
            "--group"
          ],
          "description": "Force NAME as group for added files",
          "takes_arg": true,
          "arg": {
            "name": "NAME[:GID]",
            "description": "If GID is not supplied, NAME can be either a user name or numeric GID"
          }
        },
        {
          "names": [
            "--group-map"
          ],
          "description": "Read group translation map from FILE",
          "takes_arg": true,
          "arg": {
            "name": "FILE",
            "description": "Each non-empty line in FILE defines translation for a single group",
            "template": "filepaths"
          }
        },
        {
          "names": [
            "--mode"
          ],
          "description": "Force symbolic mode CHANGES for added files",
          "takes_arg": true,
          "arg": {
            "name": "CHANGES"
          }
        },
        {
          "names": [
            "--mtime"
          ],
          "description": "Set mtime for added files",
          "takes_arg": true,
          "arg": {
            "name": "DATE-OR-FILE",
            "description": "Either a date/time in almost arbitrary format, or the name of an existing file",
            "template": "filepaths"
          }
        },
        {
          "names": [
            "--owner"
          ],
          "description": "Force NAME as owner for added files",
          "takes_arg": true,
          "arg": {
            "name": "NAME[:GID]",
            "description": "If UID is not supplied, NAME can be either a user name or numeric UID"
          }
        },
        {
          "names": [
            "--owner-map"
          ],
          "description": "Read owner translation map from FILE",
          "takes_arg": true,
          "arg": {
            "name": "FILE",
            "description": "Each non-empty line in FILE defines translation for a single UID",
            "template": "filepaths"
          }
        },
        {
          "names": [
            "--sort"
          ],
          "description": "When creating an archive, sort directory entries according to ORDER",
          "takes_arg": true,
          "arg": {
            "name": "ORDER",
            "suggestions": [
              "none",
              "name",
              "inode"
            ]
          }
        },
        {
          "names": [
            "--add-file"
          ],
          "description": "Add FILE to the archive",
          "takes_arg": true,
          "arg": {
            "name": "FILE",
            "template": "filepaths"
          }
        },
        {
          "names": [
            "--exclude"
          ],
          "description": "Exclude files matching PATTERN",
          "takes_arg": true,
          "arg": {
            "name": "PATTERN",
            "description": "A glob-style wildcard pattern"
          }
        },
        {
          "names": [
            "--exclude-backups"
          ],
          "description": "Exclude backup and lock files"
        },
        {
          "names": [
            "--exclude-caches"
          ],
          "description": "Exclude contents of directories containing file CACHEDIR.TAG, except for the tag file itself"
        },
        {
          "names": [
            "--exclude-caches-all"
          ],
          "description": "Exclude directories containing file CACHEDIR.TAG and the file itself"
        },
        {
          "names": [
            "--exclude-caches-under"
          ],
          "description": "Exclude everything under directories containing CACHEDIR.TAG"
        },
        {
          "names": [
            "--exclude-ignore"
          ],
          "description": "Read exclusion patterns from FILE in directory before dumping",
          "takes_arg": true,
          "arg": {
            "name": "FILE"
          }
        },
        {
          "names": [
            "--exclude-ignore-recursive"
          ],
          "description": "Same  as --exclude-ignore, except that patterns from FILE affect both the directory and all its subdirectories",
          "takes_arg": true,
          "arg": {
            "name": "FILE"
          }
        },
        {
          "names": [
            "--exclude-tag"
          ],
          "description": "Exclude contents of directories containing FILE, except for FILE itself",
          "takes_arg": true,
          "arg": {
            "name": "FILE"
          }
        },
        {
          "names": [
            "--exclude-tag-all"
          ],
          "description": "Exclude directories containing FILE",
          "takes_arg": true,
          "arg": {
            "name": "FILE"
          }
        },
        {
          "names": [
            "--exclude-tag-under"
          ],
          "description": "Exclude everything under directories containing FILE",
          "takes_arg": true,
          "arg": {
            "name": "FILE"
          }
        },
        {
          "names": [
            "--exclude-vcs"
          ],
          "description": "Exclude version control system directories"
        },
        {
          "names": [
            "--exclude-vcs-ignores"
          ],
          "description": "Exclude files that match patterns read from VCS-specific ignore files"
        },
        {
          "names": [
            "h",
            "-h",
            "--dereference"
          ],
          "description": "Follow symlinks; archive and dump the files they point to"
        },
        {
          "names": [
            "--hard-dereference"
          ],
          "description": "Follow hard links; archive and dump the files they refer to"
        },
        {
          "names": [
            "N",
            "-N",
            "--newer",
            "--after-date"
          ],
          "description": "Only store files newer than DATE",
          "takes_arg": true,
          "arg": {
            "name": "DATE",
            "description": "If DATE starts with / or . it is taken to be a file name",
            "template": "filepaths"
          }
        },
        {
          "names": [
            "--one-file-system"
          ],
          "description": "Stay in local file system when creating archive"
        },
        {
          "names": [
            "P",
            "-P",
            "--absolute-names"
          ],
          "description": "Don't strip leading slashes from file names"
        },
        {
          "names": [
            "--anchored"
          ],
          "description": "Patterns match file name start"
        },
        {
          "names": [
            "--ignore-case"
          ],
          "description": "Ignore case"
        },
        {
          "names": [
            "--no-anchored"
          ],
          "description": "Patterns match after any /"
        },
        {
          "names": [
            "--no-ignore-case"
          ],
          "description": "Case sensitive matching"
        },
        {
          "names": [
            "--no-wildcards"
          ],
          "description": "Verbatim string matching"
        },
        {
          "names": [
            "--no-wildcards-match-slash"
          ],
          "description": "Wildcards do not match /"
        },
        {
          "names": [
            "--wildcards"
          ],
          "description": "Use wildcards"
        },
        {
          "names": [
            "--wildcards-match-slash"
          ],
          "description": "Wildcards match /"
        },
        {
          "names": [
            "--clamp-mtime"
          ],
          "description": "Only set time when the file is more recent than what was given with --mtime"
        },
        {
          "names": [
            "l",
            "-l",
            "--check-links"
          ],
          "description": "Print a message if not all links are dumped"
        },
        {
          "names": [
            "a",
            "-a",
            "--auto-compress"
          ],
          "description": "Use archive suffix to determine the compression program"
        },
        {
          "names": [
            "I",
            "-I",
            "--use-compress-program"
          ],
          "description": "Filter data through COMMAND",
          "takes_arg": true,
          "arg": {
            "name": "COMMAND"
          }
        },
        {
          "names": [
            "j",
            "-j",
            "--bzip2"
          ],
          "description": "Filter the archive through bzip2"
        },
        {
          "names": [
            "J",
            "-J",
            "--xz"
          ],
          "description": "Filter the archive through xz"
        },
        {
          "names": [
            "--lzip"
          ],
          "description": "Filter the archive through lzip"
        },
        {
          "names": [
            "--lzma"
          ],
          "description": "Filter the archive through lzma"
        },
        {
          "names": [
            "--lzop"
          ],
          "description": "Filter the archive through lzop"
        },
        {
          "names": [
            "--no-auto-compress"
          ],
          "description": "Do not use archive suffix to determine the compression program"
        },
        {
          "names": [
            "z",
            "-z",
            "--gzip",
            "--gunzip",
            "--ungzip"
          ],
          "description": "Filter the archive through gzip"
        },
        {
          "names": [
            "Z",
            "-Z",
            "--compress",
            "--uncompress"
          ],
          "description": "Filter the archive through compress"
        },
        {
          "names": [
            "--zstd"
          ],
          "description": "Filter the archive through zstd"
        },
        {
          "names": [
            "--transform",
            "--xform"
          ],
          "description": "Use sed replace EXPRESSION to transform file names",
          "takes_arg": true,
          "arg": {
            "name": "EXPRESSION"
          }
        },
        {
          "names": [
            "--checkpoint"
          ],
          "description": "Display progress messages every Nth record",
          "takes_arg": true,
          "arg": {
            "name": "N"
          }
        },
        {
          "names": [
            "--checkpoint-action"
          ],
          "description": "Run ACTION on each checkpoint",
          "takes_arg": true,
          "arg": {
            "name": "ACTION"
          }
        },
        {
          "names": [
            "--full-time"
          ],
          "description": "Print file time to its full resolution"
        },
        {
          "names": [
            "--utc"
          ],
          "description": "Print file modification times in UTC"
        },
        {
          "names": [
            "b",
            "-b",
            "--blocking-factor"
          ],
          "description": "Set record size to BLOCKSx512 bytes",
          "takes_arg": true,
          "arg": {
            "name": "BLOCKS"
          }
        },
        {
          "names": [
            "--record-size"
          ],
          "description": "Set record size",
          "takes_arg": true,
          "arg": {
            "name": "NUMBER",
            "description": "The number of bytes per record",
            "suggestions": [
              "Blocks",
              "Bytes",
              "Gigabytes",
              "Kilobytes",
              "Megabytes",
              "Petabytes",
              "Terabytes",
              "Words"
            ]
          }
        },
        {
          "names": [
            "H",
            "-H",
            "--format"
          ],
          "description": "Create archive of the given format",
          "takes_arg": true,
          "arg": {
            "name": "FORMAT",
            "suggestions": [
              "gnu",
              "oldgnu",
              "pax",
              "ustar",
              "v7"
            ]
          }
        },
        {
          "names": [
            "--old-archive",
            "--portability"
          ],
          "description": "Same as --format=v7"
        },
        {
          "names": [
            "--pax-option"
          ],
          "description": "Control pax keywords when creating PAX archives",
          "takes_arg": true,
          "arg": {
            "name": "keyword[[:]=value][,keyword[[:]=value]]..."
          }
        },
        {
          "names": [
            "--posix"
          ],
          "description": "Same as --format=posix"
        },
        {
          "names": [
            "V",
            "-V",
            "--label"
          ],
          "description": "Create archive with volume name TEXT",
          "takes_arg": true,
          "arg": {
            "name": "TEXT"
          }
        },
        {
          "names": [
            "--warning"
          ],
          "description": "Enable or disable warning messages identified by KEYWORD",
          "takes_arg": true,
          "arg": {
            "name": "KEYWORD",
            "suggestions": [
              "all",
              "none",
              "filename-with-nuls",
              "no-filename-with-nuls",
              "alone-zero-block",
              "no-alone-zero-block",
              "cachedir",
              "no-cachedir",
              "file-shrank",
              "no-file-shrank",
              "xdev",
              "no-xdev",
              "file-ignored",
              "no-file-ignored",
              "file-unchanged",
              "no-file-unchanged",
              "ignore-archive",
              "no-ignore-archive",
              "file-removed",
              "no-file-removed",
              "file-changed",
              "no-file-changed",
              "failed-read",
              "no-failed-read"
            ]
          }
        },
        {
          "names": [
            "o",
            "-o"
          ],
          "description": "Same as --old-archive"
        },
        {
          "names": [
            "f",
            "-f",
            "--file"
          ],
          "description": "Use archive file or device ARCHIVE",
          "takes_arg": true,
          "arg": {
            "name": "ARCHIVE"
          },
          "is_required": true
        },
        {
          "names": [
            "--force-local"
          ],
          "description": "Archive file is local even if it has a colon"
        },
        {
          "names": [
            "F",
            "-F",
            "--info-script",
            "--new-volume-script"
          ],
          "description": "Run  COMMAND  at the end of each tape",
          "takes_arg": true,
          "arg": {
            "name": "COMMAND"
          }
        },
        {
          "names": [
            "L",
            "-L",
            "--tape-length"
          ],
          "description": "Change tape after writing Nx1024 bytes",
          "takes_arg": true,
          "arg": {
            "name": "N",
            "suggestions": [
              "Blocks",
              "Bytes",
              "Gigabytes",
              "Kilobytes",
              "Megabytes",
              "Petabytes",
              "Terabytes",
              "Words"
            ]
          }
        },
        {
          "names": [
            "M",
            "-M",
            "--multi-volume"
          ],
          "description": "Create/list/extract multi-volume archive"
        },
        {
          "names": [
            "--rmt-command"
          ],
          "description": "Use  COMMAND instead of rmt when accessing remote archives",
          "takes_arg": true,
          "arg": {
            "name": "COMMAND"
          }
        },
        {
          "names": [
            "--rsh-command"
          ],
          "description": "Use  COMMAND instead of rsh when accessing remote archives",
          "takes_arg": true,
          "arg": {
            "name": "COMMAND"
          }
        },
        {
          "names": [
            "--volno-file"
          ],
          "description": "Tar will keep track of which volume of a multi-volume archive it is working in FILE",
          "takes_arg": true,
          "arg": {
            "name": "FILE"
          }
        }
      ],
      "args": [
        {
          "name": "FILE",
          "is_variadic": true,
          "template": "filepaths"
        }
      ]
    },
    {
      "name": "d",
      "aliases": [
        "-d",
        "--diff",
        "--compare"
      ],
      "description": "Find differences between archive and file system",
      "options": [
        {
          "names": [
            "f",
            "-f",
            "--file"
          ],
          "description": "Use archive file or device ARCHIVE",
          "takes_arg": true,
          "arg": {
            "name": "ARCHIVE"
          },
          "is_required": true
        },
        {
          "names": [
            "--force-local"
          ],
          "description": "Archive file is local even if it has a colon"
        },
        {
          "names": [
            "F",
            "-F",
            "--info-script",
            "--new-volume-script"
          ],
          "description": "Run  COMMAND  at the end of each tape",
          "takes_arg": true,
          "arg": {
            "name": "COMMAND"
          }
        },
        {
          "names": [
            "L",
            "-L",
            "--tape-length"
          ],
          "description": "Change tape after writing Nx1024 bytes",
          "takes_arg": true,
          "arg": {
            "name": "N",
            "suggestions": [
              "Blocks",
              "Bytes",
              "Gigabytes",
              "Kilobytes",
              "Megabytes",
              "Petabytes",
              "Terabytes",
              "Words"
            ]
          }
        },
        {
          "names": [
            "M",
            "-M",
            "--multi-volume"
          ],
          "description": "Create/list/extract multi-volume archive"
        },
        {
          "names": [
            "--rmt-command"
          ],
          "description": "Use  COMMAND instead of rmt when accessing remote archives",
          "takes_arg": true,
          "arg": {
            "name": "COMMAND"
          }
        },
        {
          "names": [
            "--rsh-command"
          ],
          "description": "Use  COMMAND instead of rsh when accessing remote archives",
          "takes_arg": true,
          "arg": {
            "name": "COMMAND"
          }
        },
        {
          "names": [
            "--volno-file"
          ],
          "description": "Tar will keep track of which volume of a multi-volume archive it is working in FILE",
          "takes_arg": true,
          "arg": {
            "name": "FILE"
          }
        },
        {
          "names": [
            "--occurrence"
          ],
          "description": "Process only the Nth occurrence of each file in the archive",
          "takes_arg": true,
          "arg": {
            "name": "N"
          }
        }
      ],
      "args": [
        {
          "name": "FILE",
          "is_variadic": true,
          "template": "filepaths"
        }
      ]
    },
    {
      "name": "t",
      "aliases": [
        "-t",
        "--list"
      ],
      "description": "List the contents of an archive",
      "options": [
        {
          "names": [
            "f",
            "-f",
            "--file"
          ],
          "description": "Use archive file or device ARCHIVE",
          "takes_arg": true,
          "arg": {
            "name": "ARCHIVE"
          },
          "is_required": true
        },
        {
          "names": [
            "--force-local"
          ],
          "description": "Archive file is local even if it has a colon"
        },
        {
          "names": [
            "F",
            "-F",
            "--info-script",
            "--new-volume-script"
          ],
          "description": "Run  COMMAND  at the end of each tape",
          "takes_arg": true,
          "arg": {
            "name": "COMMAND"
          }
        },
        {
          "names": [
            "L",
            "-L",
            "--tape-length"
          ],
          "description": "Change tape after writing Nx1024 bytes",
          "takes_arg": true,
          "arg": {
            "name": "N",
            "suggestions": [
              "Blocks",
              "Bytes",
              "Gigabytes",
              "Kilobytes",
              "Megabytes",
              "Petabytes",
              "Terabytes",
              "Words"
            ]
          }
        },
        {
          "names": [
            "M",
            "-M",
            "--multi-volume"
          ],
          "description": "Create/list/extract multi-volume archive"
        },
        {
          "names": [
            "--rmt-command"
          ],
          "description": "Use  COMMAND instead of rmt when accessing remote archives",
          "takes_arg": true,
          "arg": {
            "name": "COMMAND"
          }
        },
        {
          "names": [
            "--rsh-command"
          ],
          "description": "Use  COMMAND instead of rsh when accessing remote archives",
          "takes_arg": true,
          "arg": {
            "name": "COMMAND"
          }
        },
        {
          "names": [
            "--volno-file"
          ],
          "description": "Tar will keep track of which volume of a multi-volume archive it is working in FILE",
          "takes_arg": true,
          "arg": {
            "name": "FILE"
          }
        },
        {
          "names": [
            "n",
            "-n",
            "--seek"
          ],
          "description": "Assume the archive is seekable"
        },
        {
          "names": [
            "--no-seek"
          ],
          "description": "Assume the archive is not seekable"
        },
        {
          "names": [
            "--occurrence"
          ],
          "description": "Process only the Nth occurrence of each file in the archive",
          "takes_arg": true,
          "arg": {
            "name": "N"
          }
        },
        {
          "names": [
            "B",
            "-B",
            "--read-full-records"
          ],
          "description": "When listing or extracting, accept incomplete input records after end-of-file marker"
        },
        {
          "names": [
            "i",
            "-i",
            "--ignore-zeros"
          ],
          "description": "Ignore zeroed blocks in archive"
        },
        {
          "names": [
            "V",
            "-V",
            "--label"
          ],
          "description": "Use TEXT as a globbing pattern for volume name",
          "takes_arg": true,
          "arg": {
            "name": "TEXT"
          }
        },
        {
          "names": [
            "a",
            "-a",
            "--auto-compress"
          ],
          "description": "Use archive suffix to determine the compression program"
        },
        {
          "names": [
            "I",
            "-I",
            "--use-compress-program"
          ],
          "description": "Filter data through COMMAND",
          "takes_arg": true,
          "arg": {
            "name": "COMMAND"
          }
        },
        {
          "names": [
            "j",
            "-j",
            "--bzip2"
          ],
          "description": "Filter the archive through bzip2"
        },
        {
          "names": [
            "J",
            "-J",
            "--xz"
          ],
          "description": "Filter the archive through xz"
        },
        {
          "names": [
            "--lzip"
          ],
          "description": "Filter the archive through lzip"
        },
        {
          "names": [
            "--lzma"
          ],
          "description": "Filter the archive through lzma"
        },
        {
          "names": [
            "--lzop"
          ],
          "description": "Filter the archive through lzop"
        },
        {
          "names": [
            "--no-auto-compress"
          ],
          "description": "Do not use archive suffix to determine the compression program"
        },
        {
          "names": [
            "z",
            "-z",
            "--gzip",
            "--gunzip",
            "--ungzip"
          ],
          "description": "Filter the archive through gzip"
        },
        {
          "names": [
            "Z",
            "-Z",
            "--compress",
            "--uncompress"
          ],
          "description": "Filter the archive through compress"
        },
        {
          "names": [
            "--zstd"
          ],
          "description": "Filter the archive through zstd"
        },
        {
          "names": [
            "--transform",
            "--xform"
          ],
          "description": "Use sed replace EXPRESSION to transform file names",
          "takes_arg": true,
          "arg": {
            "name": "EXPRESSION"
          }
        },
        {
          "names": [
            "--checkpoint"
          ],
          "description": "Display progress messages every Nth record",
          "takes_arg": true,
          "arg": {
            "name": "N"
          }
        },
        {
          "names": [
            "--checkpoint-action"
          ],
          "description": "Run ACTION on each checkpoint",
          "takes_arg": true,
          "arg": {
            "name": "ACTION"
          }
        },
        {
          "names": [
            "--full-time"
          ],
          "description": "Print file time to its full resolution"
        },
        {
          "names": [
            "--utc"
          ],
          "description": "Print file modification times in UTC"
        },
        {
          "names": [
            "K",
            "-K",
            "--starting-file"
          ],
          "description": "Begin at the given member in the archive",
          "takes_arg": true,
          "arg": {
            "name": "MEMBER"
          }
        },
        {
          "names": [
            "--show-omitted-dirs"
          ],
          "description": "List each directory that does not match search criteria"
        }
      ],
      "args": [
        {
          "name": "MEMBER",
          "is_variadic": true
        }
      ]
    },
    {
      "name": "r",
      "aliases": [
        "-r",
        "--append"
      ],
      "description": "Append files to the end of an archive",
      "options": [
        {
          "names": [
            "f",
            "-f",
            "--file"
          ],
          "description": "Use archive file or device ARCHIVE",
          "takes_arg": true,
          "arg": {
            "name": "ARCHIVE"
          },
          "is_required": true
        },
        {
          "names": [
            "--force-local"
          ],
          "description": "Archive file is local even if it has a colon"
        },
        {
          "names": [
            "F",
            "-F",
            "--info-script",
            "--new-volume-script"
          ],
          "description": "Run  COMMAND  at the end of each tape",
          "takes_arg": true,
          "arg": {
            "name": "COMMAND"
          }
        },
        {
          "names": [
            "L",
            "-L",
            "--tape-length"
          ],
          "description": "Change tape after writing Nx1024 bytes",
          "takes_arg": true,
          "arg": {
            "name": "N",
            "suggestions": [
              "Blocks",
              "Bytes",
              "Gigabytes",
              "Kilobytes",
              "Megabytes",
              "Petabytes",
              "Terabytes",
              "Words"
            ]
          }
        },
        {
          "names": [
            "M",
            "-M",
            "--multi-volume"
          ],
          "description": "Create/list/extract multi-volume archive"
        },
        {
          "names": [
            "--rmt-command"
          ],
          "description": "Use  COMMAND instead of rmt when accessing remote archives",
          "takes_arg": true,
          "arg": {
            "name": "COMMAND"
          }
        },
        {
          "names": [
            "--rsh-command"
          ],
          "description": "Use  COMMAND instead of rsh when accessing remote archives",
          "takes_arg": true,
          "arg": {
            "name": "COMMAND"
          }
        },
        {
          "names": [
            "--volno-file"
          ],
          "description": "Tar will keep track of which volume of a multi-volume archive it is working in FILE",
          "takes_arg": true,
          "arg": {
            "name": "FILE"
          }
        },
        {
          "names": [
            "--ignore-failed-read"
          ],
          "description": "Do not exit with nonzero on unreadable files"
        },
        {
          "names": [
            "--restrict"
          ],
          "description": "Disable the use of some potentially harmful options"
        },
        {
          "names": [
            "--remove-files"
          ],
          "description": "Remove files from disk after adding them to the archive"
        },
        {
          "names": [
            "W",
            "-W",
            "--verify"
          ],
          "description": "Verify the archive after writing it"
        },
        {
          "names": [
            "--atime-preserve"
          ],
          "description": "Preserve access times on dumped files",
          "takes_arg": true,
          "arg": {
            "name": "METHOD",
            "suggestions": [
              "replace",
              "system"
            ]
          }
        },
        {
          "names": [
            "--group"
          ],
          "description": "Force NAME as group for added files",
          "takes_arg": true,
          "arg": {
            "name": "NAME[:GID]",
            "description": "If GID is not supplied, NAME can be either a user name or numeric GID"
          }
        },
        {
          "names": [
            "--group-map"
          ],
          "description": "Read group translation map from FILE",
          "takes_arg": true,
          "arg": {
            "name": "FILE",
            "description": "Each non-empty line in FILE defines translation for a single group",
            "template": "filepaths"
          }
        },
        {
          "names": [
            "--mode"
          ],
          "description": "Force symbolic mode CHANGES for added files",
          "takes_arg": true,
          "arg": {
            "name": "CHANGES"
          }
        },
        {
          "names": [
            "--mtime"
          ],
          "description": "Set mtime for added files",
          "takes_arg": true,
          "arg": {
            "name": "DATE-OR-FILE",
            "description": "Either a date/time in almost arbitrary format, or the name of an existing file",
            "template": "filepaths"
          }
        },
        {
          "names": [
            "--owner"
          ],
          "description": "Force NAME as owner for added files",
          "takes_arg": true,
          "arg": {
            "name": "NAME[:GID]",
            "description": "If UID is not supplied, NAME can be either a user name or numeric UID"
          }
        },
        {
          "names": [
            "--owner-map"
          ],
          "description": "Read owner translation map from FILE",
          "takes_arg": true,
          "arg": {
            "name": "FILE",
            "description": "Each non-empty line in FILE defines translation for a single UID",
            "template": "filepaths"
          }
        },
        {
          "names": [
            "--sort"
          ],
          "description": "When creating an archive, sort directory entries according to ORDER",
          "takes_arg": true,
          "arg": {
            "name": "ORDER",
            "suggestions": [
              "none",
              "name",
              "inode"
            ]
          }
        },
        {
          "names": [
            "--add-file"
          ],
          "description": "Add FILE to the archive",
          "takes_arg": true,
          "arg": {
            "name": "FILE",
            "template": "filepaths"
          }
        },
        {
          "names": [
            "--exclude"
          ],
          "description": "Exclude files matching PATTERN",
          "takes_arg": true,
          "arg": {
            "name": "PATTERN",
            "description": "A glob-style wildcard pattern"
          }
        },
        {
          "names": [
            "--exclude-backups"
          ],
          "description": "Exclude backup and lock files"
        },
        {
          "names": [
            "--exclude-caches"
          ],
          "description": "Exclude contents of directories containing file CACHEDIR.TAG, except for the tag file itself"
        },
        {
          "names": [
            "--exclude-caches-all"
          ],
          "description": "Exclude directories containing file CACHEDIR.TAG and the file itself"
        },
        {
          "names": [
            "--exclude-caches-under"
          ],
          "description": "Exclude everything under directories containing CACHEDIR.TAG"
        },
        {
          "names": [
            "--exclude-ignore"
          ],
          "description": "Read exclusion patterns from FILE in directory before dumping",
          "takes_arg": true,
          "arg": {
            "name": "FILE"
          }
        },
        {
          "names": [
            "--exclude-ignore-recursive"
          ],
          "description": "Same  as --exclude-ignore, except that patterns from FILE affect both the directory and all its subdirectories",
          "takes_arg": true,
          "arg": {
            "name": "FILE"
          }
        },
        {
          "names": [
            "--exclude-tag"
          ],
          "description": "Exclude contents of directories containing FILE, except for FILE itself",
          "takes_arg": true,
          "arg": {
            "name": "FILE"
          }
        },
        {
          "names": [
            "--exclude-tag-all"
          ],
          "description": "Exclude directories containing FILE",
          "takes_arg": true,
          "arg": {
            "name": "FILE"
          }
        },
        {
          "names": [
            "--exclude-tag-under"
          ],
          "description": "Exclude everything under directories containing FILE",
          "takes_arg": true,
          "arg": {
            "name": "FILE"
          }
        },
        {
          "names": [
            "--exclude-vcs"
          ],
          "description": "Exclude version control system directories"
        },
        {
          "names": [
            "--exclude-vcs-ignores"
          ],
          "description": "Exclude files that match patterns read from VCS-specific ignore files"
        },
        {
          "names": [
            "h",
            "-h",
            "--dereference"
          ],
          "description": "Follow symlinks; archive and dump the files they point to"
        },
        {
          "names": [
            "--hard-dereference"
          ],
          "description": "Follow hard links; archive and dump the files they refer to"
        },
        {
          "names": [
            "N",
            "-N",
            "--newer",
            "--after-date"
          ],
          "description": "Only store files newer than DATE",
          "takes_arg": true,
          "arg": {
            "name": "DATE",
            "description": "If DATE starts with / or . it is taken to be a file name",
            "template": "filepaths"
          }
        },
        {
          "names": [
            "--one-file-system"
          ],
          "description": "Stay in local file system when creating archive"
        },
        {
          "names": [
            "P",
            "-P",
            "--absolute-names"
          ],
          "description": "Don't strip leading slashes from file names"
        },
        {
          "names": [
            "--anchored"
          ],
          "description": "Patterns match file name start"
        },
        {
          "names": [
            "--ignore-case"
          ],
          "description": "Ignore case"
        },
        {
          "names": [
            "--no-anchored"
          ],
          "description": "Patterns match after any /"
        },
        {
          "names": [
            "--no-ignore-case"
          ],
          "description": "Case sensitive matching"
        },
        {
          "names": [
            "--no-wildcards"
          ],
          "description": "Verbatim string matching"
        },
        {
          "names": [
            "--no-wildcards-match-slash"
          ],
          "description": "Wildcards do not match /"
        },
        {
          "names": [
            "--wildcards"
          ],
          "description": "Use wildcards"
        },
        {
          "names": [
            "--wildcards-match-slash"
          ],
          "description": "Wildcards match /"
        },
        {
          "names": [
            "--clamp-mtime"
          ],
          "description": "Only set time when the file is more recent than what was given with --mtime"
        },
        {
          "names": [
            "l",
            "-l",
            "--check-links"
          ],
          "description": "Print a message if not all links are dumped"
        },
        {
          "names": [
            "a",
            "-a",
            "--auto-compress"
          ],
          "description": "Use archive suffix to determine the compression program"
        },
        {
          "names": [
            "I",
            "-I",
            "--use-compress-program"
          ],
          "description": "Filter data through COMMAND",
          "takes_arg": true,
          "arg": {
            "name": "COMMAND"
          }
        },
        {
          "names": [
            "j",
            "-j",
            "--bzip2"
          ],
          "description": "Filter the archive through bzip2"
        },
        {
          "names": [
            "J",
            "-J",
            "--xz"
          ],
          "description": "Filter the archive through xz"
        },
        {
          "names": [
            "--lzip"
          ],
          "description": "Filter the archive through lzip"
        },
        {
          "names": [
            "--lzma"
          ],
          "description": "Filter the archive through lzma"
        },
        {
          "names": [
            "--lzop"
          ],
          "description": "Filter the archive through lzop"
        },
        {
          "names": [
            "--no-auto-compress"
          ],
          "description": "Do not use archive suffix to determine the compression program"
        },
        {
          "names": [
            "z",
            "-z",
            "--gzip",
            "--gunzip",
            "--ungzip"
          ],
          "description": "Filter the archive through gzip"
        },
        {
          "names": [
            "Z",
            "-Z",
            "--compress",
            "--uncompress"
          ],
          "description": "Filter the archive through compress"
        },
        {
          "names": [
            "--zstd"
          ],
          "description": "Filter the archive through zstd"
        },
        {
          "names": [
            "--transform",
            "--xform"
          ],
          "description": "Use sed replace EXPRESSION to transform file names",
          "takes_arg": true,
          "arg": {
            "name": "EXPRESSION"
          }
        },
        {
          "names": [
            "--checkpoint"
          ],
          "description": "Display progress messages every Nth record",
          "takes_arg": true,
          "arg": {
            "name": "N"
          }
        },
        {
          "names": [
            "--checkpoint-action"
          ],
          "description": "Run ACTION on each checkpoint",
          "takes_arg": true,
          "arg": {
            "name": "ACTION"
          }
        },
        {
          "names": [
            "--full-time"
          ],
          "description": "Print file time to its full resolution"
        },
        {
          "names": [
            "--utc"
          ],
          "description": "Print file modification times in UTC"
        }
      ],
      "args": [
        {
          "name": "FILE",
          "is_variadic": true,
          "template": "filepaths"
        }
      ]
    },
    {
      "name": "u",
      "aliases": [
        "-u",
        "--update"
      ],
      "description": "Append files which are newer than the corresponding copy in  the archive",
      "options": [
        {
          "names": [
            "f",
            "-f",
            "--file"
          ],
          "description": "Use archive file or device ARCHIVE",
          "takes_arg": true,
          "arg": {
            "name": "ARCHIVE"
          },
          "is_required": true
        },
        {
          "names": [
            "--force-local"
          ],
          "description": "Archive file is local even if it has a colon"
        },
        {
          "names": [
            "F",
            "-F",
            "--info-script",
            "--new-volume-script"
          ],
          "description": "Run  COMMAND  at the end of each tape",
          "takes_arg": true,
          "arg": {
            "name": "COMMAND"
          }
        },
        {
          "names": [
            "L",
            "-L",
            "--tape-length"
          ],
          "description": "Change tape after writing Nx1024 bytes",
          "takes_arg": true,
          "arg": {
            "name": "N",
            "suggestions": [
              "Blocks",
              "Bytes",
              "Gigabytes",
              "Kilobytes",
              "Megabytes",
              "Petabytes",
              "Terabytes",
              "Words"
            ]
          }
        },
        {
          "names": [
            "M",
            "-M",
            "--multi-volume"
          ],
          "description": "Create/list/extract multi-volume archive"
        },
        {
          "names": [
            "--rmt-command"
          ],
          "description": "Use  COMMAND instead of rmt when accessing remote archives",
          "takes_arg": true,
          "arg": {
            "name": "COMMAND"
          }
        },
        {
          "names": [
            "--rsh-command"
          ],
          "description": "Use  COMMAND instead of rsh when accessing remote archives",
          "takes_arg": true,
          "arg": {
            "name": "COMMAND"
          }
        },
        {
          "names": [
            "--volno-file"
          ],
          "description": "Tar will keep track of which volume of a multi-volume archive it is working in FILE",
          "takes_arg": true,
          "arg": {
            "name": "FILE"
          }
        },
        {
          "names": [
            "--ignore-failed-read"
          ],
          "description": "Do not exit with nonzero on unreadable files"
        },
        {
          "names": [
            "--restrict"
          ],
          "description": "Disable the use of some potentially harmful options"
        },
        {
          "names": [
            "--remove-files"
          ],
          "description": "Remove files from disk after adding them to the archive"
        },
        {
          "names": [
            "W",
            "-W",
            "--verify"
          ],
          "description": "Verify the archive after writing it"
        },
        {
          "names": [
            "--atime-preserve"
          ],
          "description": "Preserve access times on dumped files",
          "takes_arg": true,
          "arg": {
            "name": "METHOD",
            "suggestions": [
              "replace",
              "system"
            ]
          }
        },
        {
          "names": [
            "--group"
          ],
          "description": "Force NAME as group for added files",
          "takes_arg": true,
          "arg": {
            "name": "NAME[:GID]",
            "description": "If GID is not supplied, NAME can be either a user name or numeric GID"
          }
        },
        {
          "names": [
            "--group-map"
          ],
          "description": "Read group translation map from FILE",
          "takes_arg": true,
          "arg": {
            "name": "FILE",
            "description": "Each non-empty line in FILE defines translation for a single group",
            "template": "filepaths"
          }
        },
        {
          "names": [
            "--mode"
          ],
          "description": "Force symbolic mode CHANGES for added files",
          "takes_arg": true,
          "arg": {
            "name": "CHANGES"
          }
        },
        {
          "names": [
            "--mtime"
          ],
          "description": "Set mtime for added files",
          "takes_arg": true,
          "arg": {
            "name": "DATE-OR-FILE",
            "description": "Either a date/time in almost arbitrary format, or the name of an existing file",
            "template": "filepaths"
          }
        },
        {
          "names": [
            "--owner"
          ],
          "description": "Force NAME as owner for added files",
          "takes_arg": true,
          "arg": {
            "name": "NAME[:GID]",
            "description": "If UID is not supplied, NAME can be either a user name or numeric UID"
          }
        },
        {
          "names": [
            "--owner-map"
          ],
          "description": "Read owner translation map from FILE",
          "takes_arg": true,
          "arg": {
            "name": "FILE",
            "description": "Each non-empty line in FILE defines translation for a single UID",
            "template": "filepaths"
          }
        },
        {
          "names": [
            "--sort"
          ],
          "description": "When creating an archive, sort directory entries according to ORDER",
          "takes_arg": true,
          "arg": {
            "name": "ORDER",
            "suggestions": [
              "none",
              "name",
              "inode"
            ]
          }
        },
        {
          "names": [
            "--add-file"
          ],
          "description": "Add FILE to the archive",
          "takes_arg": true,
          "arg": {
            "name": "FILE",
            "template": "filepaths"
          }
        },
        {
          "names": [
            "--exclude"
          ],
          "description": "Exclude files matching PATTERN",
          "takes_arg": true,
          "arg": {
            "name": "PATTERN",
            "description": "A glob-style wildcard pattern"
          }
        },
        {
          "names": [
            "--exclude-backups"
          ],
          "description": "Exclude backup and lock files"
        },
        {
          "names": [
            "--exclude-caches"
          ],
          "description": "Exclude contents of directories containing file CACHEDIR.TAG, except for the tag file itself"
        },
        {
          "names": [
            "--exclude-caches-all"
          ],
          "description": "Exclude directories containing file CACHEDIR.TAG and the file itself"
        },
        {
          "names": [
            "--exclude-caches-under"
          ],
          "description": "Exclude everything under directories containing CACHEDIR.TAG"
        },
        {
          "names": [
            "--exclude-ignore"
          ],
          "description": "Read exclusion patterns from FILE in directory before dumping",
          "takes_arg": true,
          "arg": {
            "name": "FILE"
          }
        },
        {
          "names": [
            "--exclude-ignore-recursive"
          ],
          "description": "Same  as --exclude-ignore, except that patterns from FILE affect both the directory and all its subdirectories",
          "takes_arg": true,
          "arg": {
            "name": "FILE"
          }
        },
        {
          "names": [
            "--exclude-tag"
          ],
          "description": "Exclude contents of directories containing FILE, except for FILE itself",
          "takes_arg": true,
          "arg": {
            "name": "FILE"
          }
        },
        {
          "names": [
            "--exclude-tag-all"
          ],
          "description": "Exclude directories containing FILE",
          "takes_arg": true,
          "arg": {
            "name": "FILE"
          }
        },
        {
          "names": [
            "--exclude-tag-under"
          ],
          "description": "Exclude everything under directories containing FILE",
          "takes_arg": true,
          "arg": {
            "name": "FILE"
          }
        },
        {
          "names": [
            "--exclude-vcs"
          ],
          "description": "Exclude version control system directories"
        },
        {
          "names": [
            "--exclude-vcs-ignores"
          ],
          "description": "Exclude files that match patterns read from VCS-specific ignore files"
        },
        {
          "names": [
            "h",
            "-h",
            "--dereference"
          ],
          "description": "Follow symlinks; archive and dump the files they point to"
        },
        {
          "names": [
            "--hard-dereference"
          ],
          "description": "Follow hard links; archive and dump the files they refer to"
        },
        {
          "names": [
            "N",
            "-N",
            "--newer",
            "--after-date"
          ],
          "description": "Only store files newer than DATE",
          "takes_arg": true,
          "arg": {
            "name": "DATE",
            "description": "If DATE starts with / or . it is taken to be a file name",
            "template": "filepaths"
          }
        },
        {
          "names": [
            "--one-file-system"
          ],
          "description": "Stay in local file system when creating archive"
        },
        {
          "names": [
            "P",
            "-P",
            "--absolute-names"
          ],
          "description": "Don't strip leading slashes from file names"
        },
        {
          "names": [
            "--anchored"
          ],
          "description": "Patterns match file name start"
        },
        {
          "names": [
            "--ignore-case"
          ],
          "description": "Ignore case"
        },
        {
          "names": [
            "--no-anchored"
          ],
          "description": "Patterns match after any /"
        },
        {
          "names": [
            "--no-ignore-case"
          ],
          "description": "Case sensitive matching"
        },
        {
          "names": [
            "--no-wildcards"
          ],
          "description": "Verbatim string matching"
        },
        {
          "names": [
            "--no-wildcards-match-slash"
          ],
          "description": "Wildcards do not match /"
        },
        {
          "names": [
            "--wildcards"
          ],
          "description": "Use wildcards"
        },
        {
          "names": [
            "--wildcards-match-slash"
          ],
          "description": "Wildcards match /"
        },
        {
          "names": [
            "--clamp-mtime"
          ],
          "description": "Only set time when the file is more recent than what was given with --mtime"
        },
        {
          "names": [
            "l",
            "-l",
            "--check-links"
          ],
          "description": "Print a message if not all links are dumped"
        },
        {
          "names": [
            "a",
            "-a",
            "--auto-compress"
          ],
          "description": "Use archive suffix to determine the compression program"
        },
        {
          "names": [
            "I",
            "-I",
            "--use-compress-program"
          ],
          "description": "Filter data through COMMAND",
          "takes_arg": true,
          "arg": {
            "name": "COMMAND"
          }
        },
        {
          "names": [
            "j",
            "-j",
            "--bzip2"
          ],
          "description": "Filter the archive through bzip2"
        },
        {
          "names": [
            "J",
            "-J",
            "--xz"
          ],
          "description": "Filter the archive through xz"
        },
        {
          "names": [
            "--lzip"
          ],
          "description": "Filter the archive through lzip"
        },
        {
          "names": [
            "--lzma"
          ],
          "description": "Filter the archive through lzma"
        },
        {
          "names": [
            "--lzop"
          ],
          "description": "Filter the archive through lzop"
        },
        {
          "names": [
            "--no-auto-compress"
          ],
          "description": "Do not use archive suffix to determine the compression program"
        },
        {
          "names": [
            "z",
            "-z",
            "--gzip",
            "--gunzip",
            "--ungzip"
          ],
          "description": "Filter the archive through gzip"
        },
        {
          "names": [
            "Z",
            "-Z",
            "--compress",
            "--uncompress"
          ],
          "description": "Filter the archive through compress"
        },
        {
          "names": [
            "--zstd"
          ],
          "description": "Filter the archive through zstd"
        },
        {
          "names": [
            "--transform",
            "--xform"
          ],
          "description": "Use sed replace EXPRESSION to transform file names",
          "takes_arg": true,
          "arg": {
            "name": "EXPRESSION"
          }
        },
        {
          "names": [
            "--checkpoint"
          ],
          "description": "Display progress messages every Nth record",
          "takes_arg": true,
          "arg": {
            "name": "N"
          }
        },
        {
          "names": [
            "--checkpoint-action"
          ],
          "description": "Run ACTION on each checkpoint",
          "takes_arg": true,
          "arg": {
            "name": "ACTION"
          }
        },
        {
          "names": [
            "--full-time"
          ],
          "description": "Print file time to its full resolution"
        },
        {
          "names": [
            "--utc"
          ],
          "description": "Print file modification times in UTC"
        }
      ],
      "args": [
        {
          "name": "FILE",
          "is_variadic": true,
          "template": "filepaths"
        }
      ]
    },
    {
      "name": "x",
      "aliases": [
        "-x",
        "--extract",
        "--get"
      ],
      "description": "Extract files from an archive",
      "options": [
        {
          "names": [
            "f",
            "-f",
            "--file"
          ],
          "description": "Use archive file or device ARCHIVE",
          "takes_arg": true,
          "arg": {
            "name": "ARCHIVE"
          },
          "is_required": true
        },
        {
          "names": [
            "--force-local"
          ],
          "description": "Archive file is local even if it has a colon"
        },
        {
          "names": [
            "F",
            "-F",
            "--info-script",
            "--new-volume-script"
          ],
          "description": "Run  COMMAND  at the end of each tape",
          "takes_arg": true,
          "arg": {
            "name": "COMMAND"
          }
        },
        {
          "names": [
            "L",
            "-L",
            "--tape-length"
          ],
          "description": "Change tape after writing Nx1024 bytes",
          "takes_arg": true,
          "arg": {
            "name": "N",
            "suggestions": [
              "Blocks",
              "Bytes",
              "Gigabytes",
              "Kilobytes",
              "Megabytes",
              "Petabytes",
              "Terabytes",
              "Words"
            ]
          }
        },
        {
          "names": [
            "M",
            "-M",
            "--multi-volume"
          ],
          "description": "Create/list/extract multi-volume archive"
        },
        {
          "names": [
            "--rmt-command"
          ],
          "description": "Use  COMMAND instead of rmt when accessing remote archives",
          "takes_arg": true,
          "arg": {
            "name": "COMMAND"
          }
        },
        {
          "names": [
            "--rsh-command"
          ],
          "description": "Use  COMMAND instead of rsh when accessing remote archives",
          "takes_arg": true,
          "arg": {
            "name": "COMMAND"
          }
        },
        {
          "names": [
            "--volno-file"
          ],
          "description": "Tar will keep track of which volume of a multi-volume archive it is working in FILE",
          "takes_arg": true,
          "arg": {
            "name": "FILE"
          }
        },
        {
          "names": [
            "n",
            "-n",
            "--seek"
          ],
          "description": "Assume the archive is seekable"
        },
        {
          "names": [
            "--no-seek"
          ],
          "description": "Assume the archive is not seekable"
        },
        {
          "names": [
            "--occurrence"
          ],
          "description": "Process only the Nth occurrence of each file in the archive",
          "takes_arg": true,
          "arg": {
            "name": "N"
          }
        },
        {
          "names": [
            "B",
            "-B",
            "--read-full-records"
          ],
          "description": "When listing or extracting, accept incomplete input records after end-of-file marker"
        },
        {
          "names": [
            "i",
            "-i",
            "--ignore-zeros"
          ],
          "description": "Ignore zeroed blocks in archive"
        },
        {
          "names": [
            "V",
            "-V",
            "--label"
          ],
          "description": "Use TEXT as a globbing pattern for volume name",
          "takes_arg": true,
          "arg": {
            "name": "TEXT"
          }
        },
        {
          "names": [
            "a",
            "-a",
            "--auto-compress"
          ],
          "description": "Use archive suffix to determine the compression program"
        },
        {
          "names": [
            "I",
            "-I",
            "--use-compress-program"
          ],
          "description": "Filter data through COMMAND",
          "takes_arg": true,
          "arg": {
            "name": "COMMAND"
          }
        },
        {
          "names": [
            "j",
            "-j",
            "--bzip2"
          ],
          "description": "Filter the archive through bzip2"
        },
        {
          "names": [
            "J",
            "-J",
            "--xz"
          ],
          "description": "Filter the archive through xz"
        },
        {
          "names": [
            "--lzip"
          ],
          "description": "Filter the archive through lzip"
        },
        {
          "names": [
            "--lzma"
          ],
          "description": "Filter the archive through lzma"
        },
        {
          "names": [
            "--lzop"
          ],
          "description": "Filter the archive through lzop"
        },
        {
          "names": [
            "--no-auto-compress"
          ],
          "description": "Do not use archive suffix to determine the compression program"
        },
        {
          "names": [
            "z",
            "-z",
            "--gzip",
            "--gunzip",
            "--ungzip"
          ],
          "description": "Filter the archive through gzip"
        },
        {
          "names": [
            "Z",
            "-Z",
            "--compress",
            "--uncompress"
          ],
          "description": "Filter the archive through compress"
        },
        {
          "names": [
            "--zstd"
          ],
          "description": "Filter the archive through zstd"
        },
        {
          "names": [
            "--transform",
            "--xform"
          ],
          "description": "Use sed replace EXPRESSION to transform file names",
          "takes_arg": true,
          "arg": {
            "name": "EXPRESSION"
          }
        },
        {
          "names": [
            "--checkpoint"
          ],
          "description": "Display progress messages every Nth record",
          "takes_arg": true,
          "arg": {
            "name": "N"
          }
        },
        {
          "names": [
            "--checkpoint-action"
          ],
          "description": "Run ACTION on each checkpoint",
          "takes_arg": true,
          "arg": {
            "name": "ACTION"
          }
        },
        {
          "names": [
            "--full-time"
          ],
          "description": "Print file time to its full resolution"
        },
        {
          "names": [
            "--utc"
          ],
          "description": "Print file modification times in UTC"
        },
        {
          "names": [
            "K",
            "-K",
            "--starting-file"
          ],
          "description": "Begin at the given member in the archive",
          "takes_arg": true,
          "arg": {
            "name": "MEMBER"
          }
        },
        {
          "names": [
            "--show-omitted-dirs"
          ],
          "description": "List each directory that does not match search criteria"
        },
        {
          "names": [
            "k",
            "-k",
            "--keep-old-files"
          ],
          "description": "Don't replace existing files when extracting"
        },
        {
          "names": [
            "--keep-newer-files"
          ],
          "description": "Don't replace existing files that are newer than their archive copies"
        },
        {
          "names": [
            "--keep-directory-symlink"
          ],
          "description": "Don't replace existing symlinks to directories when extracting"
        },
        {
          "names": [
            "--no-overwrite-dir"
          ],
          "description": "Preserve metadata of existing directories"
        },
        {
          "names": [
            "--one-top-level"
          ],
          "description": "Extract all files into DIR",
          "takes_arg": true,
          "arg": {
            "name": "DIR"
          }
        },
        {
          "names": [
            "--overwrite"
          ],
          "description": "Overwrite existing files when extracting"
        },
        {
          "names": [
            "--overwrite-dir"
          ],
          "description": "Overwrite metadata of existing directories when extracting"
        },
        {
          "names": [
            "--recursive-unlink"
          ],
          "description": "Recursively remove all files in the directory prior to extracting it"
        },
        {
          "names": [
            "--skip-old-files"
          ],
          "description": "Don't replace existing files when extracting, silently skip over them"
        },
        {
          "names": [
            "U",
            "-U",
            "--unlink-first"
          ],
          "description": "Remove each file prior to extracting over it"
        },
        {
          "names": [
            "O",
            "-O",
            "--to-stdout"
          ],
          "description": "Extract files to standard output"
        },
        {
          "names": [
            "--to-command"
          ],
          "description": "Pipe extracted files to COMMAND",
          "takes_arg": true,
          "arg": {
            "name": "COMMAND",
            "template": "filepaths"
          }
        },
        {
          "names": [
            "--delay-directory-restore"
          ],
          "description": "Delay setting modification times and permissions of extracted directories until the end of extraction"
        },
        {
          "names": [
            "m",
            "-m",
            "--touch"
          ],
          "description": "Don't extract file modified time"
        },
        {
          "names": [
            "--no-delay-directory-restore"
          ],
          "description": "Cancel the effect of the prior --delay-directory-restore option"
        },
        {
          "names": [
            "--no-same-owner"
          ],
          "description": "Extract files as yourself"
        },
        {
          "names": [
            "--no-same-permissions"
          ],
          "description": "Apply the user's umask when extracting permissions from the archive"
        },
        {
          "names": [
            "p",
            "-p",
            "--preserve-permissions",
            "--same-permissions"
          ],
          "description": "Extract information about file permissions"
        },
        {
          "names": [
            "--preserve"
          ],
          "description": "Same as both -p and -s"
        },
        {
          "names": [
            "--same-owner"
          ],
          "description": "Try extracting files with the same ownership as exists in the archive"
        },
        {
          "names": [
            "s",
            "-s",
            "--preserve-order",
            "--same-order"
          ],
          "description": "Sort names to extract to match archive"
        },
        {
          "names": [
            "--strip-components"
          ],
          "description": "Strip NUMBER leading components from file names on extraction",
          "takes_arg": true,
          "arg": {
            "name": "NUMBER"
          }
        },
        {
          "names": [
            "--warning"
          ],
          "description": "Enable or disable warning messages identified by KEYWORD",
          "takes_arg": true,
          "arg": {
            "name": "KEYWORD",
            "suggestions": [
              "all",
              "none",
              "filename-with-nuls",
              "no-filename-with-nuls",
              "alone-zero-block",
              "no-alone-zero-block",
              "existing-file",
              "no-existing-file",
              "timestamp",
              "no-timestamp",
              "contiguous-cast",
              "no-contiguous-cast",
              "symlink-cast",
              "no-symlink-cast",
              "unknown-cast",
              "no-unknown-cast",
              "ignore-newer",
              "no-ignore-newer",
              "unknown-keyword",
              "no-unknown-keyword",
              "decompress-program",
              "no-decompress-program",
              "record-size",
              "no-record-size",
              "rename-directory",
              "no-rename-directory",
              "new-directory",
              "no-new-directory",
              "xdev",
              "no-xdev",
              "bad-dumpdir"
            ]
          }
        },
        {
          "names": [
            "o",
            "-o"
          ],
          "description": "Same as --no-same-owner"
        }
      ],
      "args": [
        {
          "name": "MEMBER",
          "is_variadic": true
        }
      ]
    },
    {
      "name": "--delete",
      "description": "Delete from the archive",
      "options": [
        {
          "names": [
            "f",
            "-f",
            "--file"
          ],
          "description": "Use archive file or device ARCHIVE",
          "takes_arg": true,
          "arg": {
            "name": "ARCHIVE"
          },
          "is_required": true
        },
        {
          "names": [
            "--force-local"
          ],
          "description": "Archive file is local even if it has a colon"
        },
        {
          "names": [
            "F",
            "-F",
            "--info-script",
            "--new-volume-script"
          ],
          "description": "Run  COMMAND  at the end of each tape",
          "takes_arg": true,
          "arg": {
            "name": "COMMAND"
          }
        },
        {
          "names": [
            "L",
            "-L",
            "--tape-length"
          ],
          "description": "Change tape after writing Nx1024 bytes",
          "takes_arg": true,
          "arg": {
            "name": "N",
            "suggestions": [
              "Blocks",
              "Bytes",
              "Gigabytes",
              "Kilobytes",
              "Megabytes",
              "Petabytes",
              "Terabytes",
              "Words"
            ]
          }
        },
        {
          "names": [
            "M",
            "-M",
            "--multi-volume"
          ],
          "description": "Create/list/extract multi-volume archive"
        },
        {
          "names": [
            "--rmt-command"
          ],
          "description": "Use  COMMAND instead of rmt when accessing remote archives",
          "takes_arg": true,
          "arg": {
            "name": "COMMAND"
          }
        },
        {
          "names": [
            "--rsh-command"
          ],
          "description": "Use  COMMAND instead of rsh when accessing remote archives",
          "takes_arg": true,
          "arg": {
            "name": "COMMAND"
          }
        },
        {
          "names": [
            "--volno-file"
          ],
          "description": "Tar will keep track of which volume of a multi-volume archive it is working in FILE",
          "takes_arg": true,
          "arg": {
            "name": "FILE"
          }
        },
        {
          "names": [
            "--occurrence"
          ],
          "description": "Process only the Nth occurrence of each file in the archive",
          "takes_arg": true,
          "arg": {
            "name": "N"
          }
        }
      ],
      "args": [
        {
          "name": "MEMBER",
          "is_variadic": true
        }
      ]
    },
    {
      "name": "--test-label",
      "description": "Test the archive volume label and exit",
      "options": [
        {
          "names": [
            "f",
            "-f",
            "--file"
          ],
          "description": "Use archive file or device ARCHIVE",
          "takes_arg": true,
          "arg": {
            "name": "ARCHIVE"
          },
          "is_required": true
        },
        {
          "names": [
            "--force-local"
          ],
          "description": "Archive file is local even if it has a colon"
        },
        {
          "names": [
            "F",
            "-F",
            "--info-script",
            "--new-volume-script"
          ],
          "description": "Run  COMMAND  at the end of each tape",
          "takes_arg": true,
          "arg": {
            "name": "COMMAND"
          }
        },
        {
          "names": [
            "L",
            "-L",
            "--tape-length"
          ],
          "description": "Change tape after writing Nx1024 bytes",
          "takes_arg": true,
          "arg": {
            "name": "N",
            "suggestions": [
              "Blocks",
              "Bytes",
              "Gigabytes",
              "Kilobytes",
              "Megabytes",
              "Petabytes",
              "Terabytes",
              "Words"
            ]
          }
        },
        {
          "names": [
            "M",
            "-M",
            "--multi-volume"
          ],
          "description": "Create/list/extract multi-volume archive"
        },
        {
          "names": [
            "--rmt-command"
          ],
          "description": "Use  COMMAND instead of rmt when accessing remote archives",
          "takes_arg": true,
          "arg": {
            "name": "COMMAND"
          }
        },
        {
          "names": [
            "--rsh-command"
          ],
          "description": "Use  COMMAND instead of rsh when accessing remote archives",
          "takes_arg": true,
          "arg": {
            "name": "COMMAND"
          }
        },
        {
          "names": [
            "--volno-file"
          ],
          "description": "Tar will keep track of which volume of a multi-volume archive it is working in FILE",
          "takes_arg": true,
          "arg": {
            "name": "FILE"
          }
        }
      ],
      "args": [
        {
          "name": "LABEL",
          "is_variadic": true
        }
      ]
    },
    {
      "name": "--show-defaults",
      "description": "Show built-in defaults for various tar options and exit"
    },
    {
      "name": "?",
      "aliases": [
        "-?",
        "--help"
      ],
      "description": "Display a short option summary and exit"
    },
    {
      "name": "--usage",
      "description": "Display a list of available options and exit"
    },
    {
      "name": "--version",
      "description": "Print program version and copyright information and exit"
    }
  ],
  "options": [
    {
      "names": [
        "g",
        "-g",
        "--listed-incremental"
      ],
      "description": "Handle new GNU-format incremental backups",
      "takes_arg": true,
      "arg": {
        "name": "FILE",
        "description": "The name of a snapshot file"
      }
    },
    {
      "names": [
        "--hole-detection"
      ],
      "description": "Use METHOD to detect holes in sparse files",
      "takes_arg": true,
      "arg": {
        "name": "METHOD",
        "suggestions": [
          "seek",
          "raw"
        ]
      }
    },
    {
      "names": [
        "G",
        "-G",
        "--incremental"
      ],
      "description": "Handle old GNU-format incremental backups"
    },
    {
      "names": [
        "--sparse-version"
      ],
      "description": "Set version of the sparse format to use",
      "takes_arg": true,
      "arg": {
        "name": "MAJOR[.MINOR]",
        "suggestions": [
          "0",
          "0.1",
          "1"
        ]
      }
    },
    {
      "names": [
        "S",
        "-S",
        "--sparse"
      ],
      "description": "Handle sparse files efficiently"
    },
    {
      "names": [
        "--ignore-command-error"
      ],
      "description": "Ignore subprocess exit codes"
    },
    {
      "names": [
        "--no-ignore-command-error"
      ],
      "description": "Treat non-zero exit codes of children as error"
    },
    {
      "names": [
        "--numeric-owner"
      ],
      "description": "Always use numbers for user/group names"
    },
    {
      "names": [
        "--acls"
      ],
      "description": "Enable POSIX ACLs support"
    },
    {
      "names": [
        "--no-acls"
      ],
      "description": "Disable POSIX ACLs support"
    },
    {
      "names": [
        "--selinux"
      ],
      "description": "Enable SELinux context support"
    },
    {
      "names": [
        "--no-selinux"
      ],
      "description": "Disable SELinux context support"
    },
    {
      "names": [
        "--xattrs"
      ],
      "description": "Enable extended attributes support"
    },
    {
      "names": [
        "--no-xattrs"
      ],
      "description": "Disable extended attributes support"
    },
    {
      "names": [
        "--xattrs-exclude"
      ],
      "description": "Specify the exclude pattern for xattr keys",
      "takes_arg": true,
      "arg": {
        "name": "PATTERN",
        "description": "A POSIX regular expression"
      }
    },
    {
      "names": [
        "--xattrs-include"
      ],
      "description": "Specify the include pattern for xattr keys",
      "takes_arg": true,
      "arg": {
        "name": "PATTERN",
        "description": "A POSIX regular expression"
      }
    },
    {
      "names": [
        "--backup"
      ],
      "description": "Backup before removal",
      "takes_arg": true,
      "arg": {
        "name": "CONTROL",
        "suggestions": [
          "none",
          "t",
          "nil",
          "never"
        ]
      }
    },
    {
      "names": [
        "C",
        "-C",
        "--directory"
      ],
      "description": "Change to DIR before performing any operations",
      "takes_arg": true,
      "arg": {
        "name": "DIR",
        "template": "folders"
      }
    },
    {
      "names": [
        "--newer-mtime"
      ],
      "description": "Work on files whose data changed after the DATE",
      "takes_arg": true,
      "arg": {
        "name": "DATE",
        "description": "If DATE starts with / or . it is taken to be a file name",
        "template": "filepaths"
      }
    },
    {
      "names": [
        "--no-null"
      ],
      "description": "Disable the effect of the previous --null option"
    },
    {
      "names": [
        "--no-recursion"
      ],
      "description": "Avoid descending automatically in directories"
    },
    {
      "names": [
        "--no-unquote"
      ],
      "description": "Do not unquote input file or member names"
    },
    {
      "names": [
        "--no-verbatim-files-from"
      ],
      "description": "Treat each line read from a file list as if it were supplied in the command line"
    },
    {
      "names": [
        "-null"
      ],
      "description": "Instruct subsequent -T options to read null-terminated names verbatim"
    },
    {
      "names": [
        "--recursion"
      ],
      "description": "Recurse into directories"
    },
    {
      "names": [
        "--suffix"
      ],
      "description": "Backup before removal, override usual suffix",
      "takes_arg": true,
      "arg": {
        "name": "STRING"
      }
    },
    {
      "names": [
        "T",
        "-T",
        "--files-from"
      ],
      "description": "Get names to extract or create from FILE",
      "takes_arg": true,
      "arg": {
        "name": "FILE",
        "template": "filepaths"
      }
    },
    {
      "names": [
        "--unquote"
      ],
      "description": "Unquote file or member names"
    },
    {
      "names": [
        "--verbatim-files-from"
      ],
      "description": "Treat each line obtained from a file list as a file name, even if it starts with a dash"
    },
    {
      "names": [
        "X",
        "-X",
        "--exclude-from"
      ],
      "description": "Exclude files matching patterns listed in FILE",
      "takes_arg": true,
      "arg": {
        "name": "FILE",
        "template": "filepaths"
      }
    },
    {
      "names": [
        "--index-file"
      ],
      "description": "Send verbose output to FILE",
      "takes_arg": true,
      "arg": {
        "name": "FILE"
      }
    },
    {
      "names": [
        "--no-quote-chars"
      ],
      "description": "Disable quoting for characters from STRING",
      "takes_arg": true,
      "arg": {
        "name": "STRING"
      }
    },
    {
      "names": [
        "--quote-chars"
      ],
      "description": "Additionally quote characters from STRING",
      "takes_arg": true,
      "arg": {
        "name": "STRING"
      }
    },
    {
      "names": [
        "--quoting-style"
      ],
      "description": "Set quoting style for file and member names",
      "takes_arg": true,
      "arg": {
        "name": "STYLE",
        "suggestions": [
          "literal",
          "shell",
          "shell-always",
          "c",
          "c-maybe",
          "escape",
          "locale",
          "clocale"
        ]
      }
    },
    {
      "names": [
        "R",
        "-R",
        "--block-number"
      ],
      "description": "Show block number within archive with each message"
    },
    {
      "names": [
        "--show-transformed-names",
        "--show-stored-names"
      ],
      "description": "Show file or archive names after transformation by --strip and --transform options"
    },
    {
      "names": [
        "--totals"
      ],
      "description": "Print total bytes after processing the archive",
      "takes_arg": true,
      "arg": {
        "name": "SIGNAL",
        "description": "Print total bytes when this signal is delivered",
        "suggestions": [
          "SIGHUP",
          "SIGQUIT",
          "SIGINT",
          "SIGUSR1",
          "SIGUSR2"
        ]
      }
    },
    {
      "names": [
        "v",
        "-v",
        "--verbose"
      ],
      "description": "Verbosely list files processed"
    },
    {
      "names": [
        "w",
        "-w",
        "--interactive",
        "--confirmation"
      ],
      "description": "Ask for confirmation for every action"
    }
  ]
}
