2021-01-05 18:53:29 +01:00
# universalarchive plugin
2025-05-24 10:30:14 +03:00
The `universalarchive` plugin provides a convenient command-line interface for archiving files and directories using a wide variety of compression formats - without having to remember the exact syntax for each tool.
2021-01-05 18:53:29 +01:00
2025-05-24 10:30:14 +03:00
To enable it, add `universalarchive` to the plugins array in your `.zshrc` file:
2021-01-05 18:53:29 +01:00
```zsh
plugins=(... universalarchive)
```
2025-05-24 10:30:14 +03:00
## Features
- Compress files and directories using a simple, unified command: ua < format > < files >
- Automatically detects file/directory names to generate appropriate output names
- Supports fallback naming if an output file already exists
- Works with many common and advanced compression formats
- Designed for simplicity and quick use in the terminal
2021-01-05 18:53:29 +01:00
## Usage
2025-05-24 10:30:14 +03:00
Basic command format:
```sh
ua < format > < files... >
```
- `<format>` : the archive format to use (e.g., `zip` , `tar.gz` , `xz` , `7z` , etc.)
- `<files...>` : one or more files or directories to compress
## Examples:
Compresses `notes.txt` and `images` into `notes.zip`
```sh
ua zip notes.txt images/
```
Creates `myproject.tar.gz`
```sh
ua tar.gz myproject/
```
2021-01-05 18:53:29 +01:00
2025-05-24 10:30:14 +03:00
Compresses all .log files into `current_folder.xz`
2021-01-05 18:53:29 +01:00
```sh
2025-05-24 10:30:14 +03:00
ua xz *.log
2021-01-05 18:53:29 +01:00
```
2025-05-24 10:30:14 +03:00
The plugin will generate a default archive filename based on the input:
- For a file, the output is derived from the file name without its extension.
- For a directory, it uses the directory name.
- For multiple files, it uses the name of the common parent directory.
If the output file already exists, a unique filename is generated using `mktemp` .
## Supported Archive Formats
| Format | Description | Tool Used |
|:-----------------|:-------------------------------|:-----------------|
| `7z` | 7zip archive | `7z` |
| `bz2` | Bzip2-compressed file | `bzip2` |
| `gz` | Gzip-compressed file | `gzip` |
| `lzma` | LZMA-compressed file | `lzma` |
| `lzo` | LZO-compressed file | `lzop` |
| `rar` | WinRAR archive | `rar` |
| `tar` | Uncompressed tarball | `tar` |
| `tbz` ,`tar.bz2` | Tarball compressed with Bzip2 | `tar + bzip2` |
| `tgz` ,`tar.gz` | Tarball compressed with Gzip | `tar + gzip` |
| `tlz` ,`tar.lzma` | Tarball compressed with LZMA | `tar + lzma` |
| `txz` ,`tar.xz` | Tarball compressed with LZMA2 | `tar + xz` |
| `tZ` ,`tar.Z` | Tarball compressed with LZW | `tar + compress` |
| `xz` | XZ-compressed file | `xz` |
| `Z` | LZW-compressed file | `compress` |
| `zip` | Standard Zip archive | `zip` |
| `zst` | Zstandard-compressed file | `zstd` |
> Note: Some formats may require specific tools to be installed on your system (e.g. `7z`, `rar`, `lzop`, `zstd`). Make sure these tools are available in your `$PATH`.
## Auto-Completion
The plugin provides tab-completion for supported formats and input files. Type `ua <TAB>` to see available formats, and `ua <format> <TAB>` to browse files.