{"id":13503813,"url":"https://github.com/ouch-org/ouch","last_synced_at":"2025-05-12T15:32:57.828Z","repository":{"id":37666837,"uuid":"349334268","full_name":"ouch-org/ouch","owner":"ouch-org","description":"Painless compression and decompression in the terminal","archived":false,"fork":false,"pushed_at":"2025-05-03T23:43:59.000Z","size":1610,"stargazers_count":2827,"open_issues_count":72,"forks_count":92,"subscribers_count":8,"default_branch":"main","last_synced_at":"2025-05-04T00:27:03.445Z","etag":null,"topics":["cli","compression","decompression","hacktoberfest","rust"],"latest_commit_sha":null,"homepage":"https://crates.io/crates/ouch","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ouch-org.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2021-03-19T07:17:27.000Z","updated_at":"2025-05-03T23:44:04.000Z","dependencies_parsed_at":"2024-01-05T01:01:52.498Z","dependency_job_id":"729cdcb7-f958-43fb-adc8-a3bcba820f06","html_url":"https://github.com/ouch-org/ouch","commit_stats":{"total_commits":962,"total_committers":37,"mean_commits":26.0,"dds":0.7286902286902287,"last_synced_commit":"3d717ec3bc991d713fa9398aeb79579b63bfd488"},"previous_names":[],"tags_count":14,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ouch-org%2Fouch","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ouch-org%2Fouch/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ouch-org%2Fouch/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ouch-org%2Fouch/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ouch-org","download_url":"https://codeload.github.com/ouch-org/ouch/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253765839,"owners_count":21960804,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cli","compression","decompression","hacktoberfest","rust"],"created_at":"2024-07-31T23:00:45.814Z","updated_at":"2025-05-12T15:32:57.773Z","avatar_url":"https://github.com/ouch-org.png","language":"Rust","readme":"\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://crates.io/crates/ouch\"\u003e\n    \u003cimg src=\"https://img.shields.io/crates/v/ouch?color=6090FF\u0026style=flat-square\" alt=\"Crates.io link\"\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://github.com/ouch-org/ouch/blob/main/LICENSE\"\u003e\n    \u003cimg src=\"https://img.shields.io/crates/l/ouch?color=6090FF\u0026style=flat-square\" alt=\"License\"\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n\n# Ouch!\n\n`ouch` stands for **Obvious Unified Compression Helper**.\n\nIt's a CLI tool for compressing and decompressing for various formats.\n\n- [Features](#features)\n- [Usage](#usage)\n- [Installation](#installation)\n- [Supported Formats](#supported-formats)\n- [Benchmarks](#benchmarks)\n- [Contributing](#contributing)\n\n# Features\n\n1. Easy to use.\n2. Fast.\n3. Great error message feedback.\n4. No runtime dependencies required (for _Linux x86_64_).\n5. Accessibility mode ([see more](https://github.com/ouch-org/ouch/wiki/Accessibility)).\n6. Shell completions and man pages.\n\n# Usage\n\nOuch has three main subcommands:\n\n- `ouch decompress` (alias `d`)\n- `ouch compress` (alias `c`)\n- `ouch list` (alias `l` or `ls`)\n\nTo see `help` for a specific command:\n\n```sh\nouch help \u003cCOMMAND\u003e\nouch \u003cCOMMAND\u003e --help  # equivalent\n```\n\n## Decompressing\n\nUse the `decompress` subcommand, `ouch` will detect the extensions automatically.\n\n```sh\nouch decompress a.zip\n\n# Decompress multiple files\nouch decompress a.zip b.tar.gz c.tar\n```\n\nThe `-d/--dir` flag can be used to redirect decompression results to another directory.\n\n```sh\n# Decompress 'summer_vacation.zip' inside of new folder 'pictures'\nouch decompress summer_vacation.zip --dir pictures\n```\n\n## Compressing\n\nPass input files to the `compress` subcommand, add the **output file** at the end.\n\n```sh\n# Compress two files into `archive.zip`\nouch compress one.txt two.txt archive.zip\n\n# Compress file.txt using .lz4 and .zst\nouch compress file.txt file.txt.lz4.zst\n```\n\n`ouch` detects the extensions of the **output file** to decide what formats to use.\n\n## Listing\n\n```sh\nouch list archive.zip\n\n# Example with tree formatting\nouch list source-code.zip --tree\n```\n\nOutput:\n\n```\n└── src\n   ├── archive\n   │  ├── mod.rs\n   │  ├── tar.rs\n   │  └── zip.rs\n   ├── utils\n   │  ├── colors.rs\n   │  ├── formatting.rs\n   │  ├── mod.rs\n   │  └── fs.rs\n   ├── commands\n   │  ├── list.rs\n   │  ├── compress.rs\n   │  ├── decompress.rs\n   │  └── mod.rs\n   ├── accessible.rs\n   ├── error.rs\n   ├── cli.rs\n   └── main.rs\n```\n\n# Supported formats\n\n| Format    | `.tar` | `.zip` | `7z` | `.gz` | `.xz`, `.lzma` | `.bz`, `.bz2` | `.bz3` | `.lz4` | `.sz` (Snappy) | `.zst` | `.rar` | `.br` |\n|:---------:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|\n| Supported | ✓ | ✓¹ | ✓¹ | ✓² | ✓ | ✓ | ✓ | ✓ | ✓² | ✓² | ✓³ | ✓ |\n\n✓: Supports compression and decompression.\n\n✓¹: Due to limitations of the compression format itself, (de)compression can't be done with streaming.\n\n✓²: Supported, and compression runs in parallel.\n\n✓³: Due to RAR's restrictive license, only decompression and listing can be supported.\nIf you wish to exclude non-free code from your build, you can disable RAR support\nby building without the `unrar` feature.\n\n`tar` aliases are also supported: `tgz`, `tbz`, `tbz2`, `tlz4`, `txz`, `tlzma`, `tsz`, `tzst`.\n\nFormats can be chained:\n\n- `.tar.gz`\n- `.tar.gz.xz.zst.gz.lz4.sz`\n\nIf the filename has no extensions, `Ouch` will try to infer the format by the [file signature](https://en.wikipedia.org/wiki/List_of_file_signatures) and ask the user for confirmation.\n\n# Installation\n\n\u003ca href=\"https://repology.org/project/ouch/versions\"\u003e\n  \u003cimg align=\"right\" src=\"https://repology.org/badge/vertical-allrepos/ouch.svg\" alt=\"Packaging status\" /\u003e\n\u003c/a\u003e\n\n## On Arch Linux\n\n```bash\npacman -S ouch\n```\n\n## On Windows via Scoop\n\n```cmd\nscoop install ouch\n```\n\n## From crates.io\n\n```bash\ncargo install ouch\n```\n\n## Download the latest release bundle\n\nCheck the [releases page](https://github.com/ouch-org/ouch/releases).\n\n## Compiling from source code\n\nCheck the [wiki guide on compiling](https://github.com/ouch-org/ouch/wiki/Compiling-and-installing-from-source-code).\n\n# Runtime Dependencies\n\nIf running `ouch` results in a linking error, it means you're missing a runtime dependency.\n\nIf you're downloading binaries from the [releases page](https://github.com/ouch-org/ouch/releases), try the `musl` variants, those are static binaries that require no runtime dependencies.\n\nOtherwise, you'll need these libraries installed on your system:\n\n* [liblzma](https://www.7-zip.org/sdk.html)\n* [libbz2](https://www.sourceware.org/bzip2)\n* [libbz3](https://github.com/kspalaiologos/bzip3)\n* [libz](https://www.zlib.net)\n\nThese should be available in your system's package manager.\n\n# Benchmarks\n\nBenchmark results are available [here](benchmarks/results.md).\nPerformance of compressing and decompressing\n[Rust](https://github.com/rust-lang/rust) source code are measured and compared with\n[Hyperfine](https://github.com/sharkdp/hyperfine).\nThe values presented are the average (wall clock) elapsed time.\n\nNote: `ouch` focuses heavily on usage ergonomics and nice error messages, but\nwe plan on doing some optimization in the future.\n\nVersions used:\n\n- `ouch` _0.4.0_\n- [`tar`] _1.34_\n- [`unzip`][infozip] _6.00_\n- [`zip`][infozip] _3.0_\n\n# Contributing\n\n`ouch` is made out of voluntary work, contributors are very welcome! Contributions of all sizes are appreciated.\n\n- Open an [issue](https://github.com/ouch-org/ouch/issues).\n- Package it for your favorite distribution or package manager.\n- Share it with a friend!\n- Open a pull request.\n\nIf you're creating a Pull Request, check [CONTRIBUTING.md](./CONTRIBUTING.md).\n\n[`tar`]: https://www.gnu.org/software/tar/\n[infozip]: http://www.info-zip.org/\n","funding_links":[],"categories":["Applications","Rust","应用程序 Applications","cli","\u003ca name=\"file-handling\"\u003e\u003c/a\u003eFile and file system handling","File"],"sub_categories":["System tools","系统工具 System tools"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fouch-org%2Fouch","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fouch-org%2Fouch","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fouch-org%2Fouch/lists"}