Rewrote parts of untar, mktar,, tarcat, etc Added --to-directory and --from-directory options throughout. Added support for a variety of other archive file types.
Refactored archive logic Almost all (un)archive code now lives in bash libraries. To add support for a new compression or encryption algorithm, updates only need to be made in `archive.bash`, `unarchive.bash`, and the parser in `mktar-batch`. `mktar-batch` has eclipsed `mktar` when it comes to explicit command line options. Much of the logic wqas removed. `mktar` now soleyl exists as a clever utility that guesses encryption/compression preferences based on the output filename. Filename is now mandatory. Refactored tests to reflect these changes. Standardized use of here-strings in a couple of places.
Full support of age encryption mktar-batch now supports non-interactive age calls, though I've added a dependency on expect. tarcat, tarls, and untar now know what to do with .age files. They also now know what to do with Zstandard compressed files that use .zstd (instead of .zst).
Big archival update mktar now experimentally supports SHA256 checksums and age encryption. mktar-batch is a version of mktar that strips out the 'clever' algorithm detection and includes a batch processing/common passphrase mechanism. Updated tests for mktar.