Skip to content
forked from ouch-org/ouch

Painless compression and decompression for your terminal

License

Notifications You must be signed in to change notification settings

jcgruenhage/ouch

 
 

Repository files navigation

Crates.io link Docs.rs link License

Ouch!

ouch stands for Obvious Unified Compression Helper and is a CLI tool to help you compress and decompress files of several formats.

Features

  1. Easy to use.
  2. Accessibility mode (A11Y) via --accessibility or ACCESSIBILITY env var (see wiki page).
  3. Automatic formats detection.
  4. Same usage syntax for all formats.
  5. Uses encoding and decoding streams to improve performance.
  6. No runtime dependencies (for Linux x86_64).
  7. Can list archive contents with pretty tree formatting.
  8. Shell completions (soon!).

Usage

Decompressing

Use the decompress subcommand and pass the files.

# Decompress a file
ouch decompress a.zip

# Decompress multiple files
ouch decompress a.zip b.tar.gz c.tar

# Short alternative
ouch d a.zip

The -d/--dir flag can be used to redirect decompression results to another directory.

# Decompress 'summer_vacation.zip' inside of new folder 'pictures'
ouch decompress summer_vacation.zip --dir pictures

Compressing

Use the compress subcommand, pass the files and the output file at the end.

# Compress four files
ouch compress 1 2 3 4 archive.zip

# Short alternative
ouch c file.txt file.zip

ouch detects the extensions of the output file to decide what formats to use.

Supported formats

Format .tar .zip .bz, .bz2 .gz .lz4 .xz, .lzma .sz .zst
Supported

And the aliases: tgz, tbz, tbz2, tlz4, txz, tlzma, tsz, tzst.

Formats can be chained:

  • .tar.gz
  • .tar.gz.gz.gz.gz
  • .tar.gz.gz.gz.gz.zst.xz.bz.lz4

Installation

Packaging status

Downloading the latest binary

Compiled for x86_64 on Linux, Mac OS and Windows, run with curl or wget.

Method Command
curl curl -s https://raw.githubusercontent.com/ouch-org/ouch/master/install.sh | sh
wget wget https://raw.githubusercontent.com/ouch-org/ouch/master/install.sh -O - | sh

The script will copy the latest binary to /usr/local/bin.

Compiling from source code

Check the wiki guide.

Dependencies

If you installed ouch using the download script, you will need no dependencies (static MUSL binary).

Otherwise, you'll need these libraries installed on your system:

These are available on all mainstream Linux distributions and on macOS.

Benchmarks

Comparison made decompressing linux.tar.gz and measured with Hyperfine and the values presented are the average (wall clock) elapsed time.

Tool ouch tar bsdtar
Average time 911 ms 1102 ms 829 ms

Note: ouch focuses heavily on usage ergonomics and nice error messages, but we plan on doing some optimization in the future.

Versions used:

Contributing

ouch is made out of voluntary work, contributors are very welcome! No contribution is too small and all contributions are valued.

  • Open an issue.
  • Package it for your favorite distribution or package manager.
  • Open a pull request.
  • Share it with a friend!

About

Painless compression and decompression for your terminal

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Rust 96.7%
  • Shell 3.3%