X-Git-Url: https://iankelling.org/git/?a=blobdiff_plain;f=ex;h=dd81d1ee616ccef6f00f40fe0a076da5fa7c2df1;hb=HEAD;hp=88470cc826233c9077f14c9349d9e1cd57be1a7a;hpb=72ff889897674fc088e66330a0f67aed5357c630;p=small-misc-bash diff --git a/ex b/ex index 88470cc..dd81d1e 100755 --- a/ex +++ b/ex @@ -1,5 +1,12 @@ #!/bin/bash -# Copyright (C) 2014 Ian Kelling +# I, Ian Kelling, follow the GNU license recommendations at +# https://www.gnu.org/licenses/license-recommendations.en.html. They +# recommend that small programs, < 300 lines, be licensed under the +# Apache License 2.0. This file contains or is part of one or more small +# programs. If a small program grows beyond 300 lines, I plan to switch +# its license to GPL. + +# Copyright 2024 Ian Kelling # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -13,6 +20,7 @@ # See the License for the specific language governing permissions and # limitations under the License. + ex() { local help="Usage: ex [--help|-q] FILE... Extract many types of files @@ -33,7 +41,7 @@ Note: dtrx (package & command) extracts most of these plus some others." shift ;; esac - local x super restore_nullglob f + local x super restore_nullglob f cmd for x in "$@"; do case "$x" in # tars first, so they are higher pri than non-tar extensions @@ -53,20 +61,33 @@ Note: dtrx (package & command) extracts most of these plus some others." $quiet || echo tar Jxf "$x" tar Jxf "$x" ;; + *.tar.zst ) + $quiet || echo tar -I unzstd -xf "$x" + tar -I unzstd -xf "$x" + ;; + *.zst ) + $quiet || echo unzstd "$x" + unzstd "$x" + ;; *.xz) $quiet || echo pixz -d "$x" pixz -d "$x" ;; *.7z ) - $quiet || echo 7za x "$x" - 7za x "$x" + if type -p 7za &>/dev/null; then + cmd=7za + else + cmd=7zr + fi + $quiet || echo 7zr x "$x" + $cmd x "$x" ;; *.bz2 ) $quiet || echo bunzip2 "$x" bunzip2 "$x" ;; *.deb ) - $quiet || ar x "$x" + $quiet || echo ar x "$x" ar x "$x" restore_nullglob=false if ! shopt -q nullglob; then @@ -87,6 +108,11 @@ Note: dtrx (package & command) extracts most of these plus some others." tar xJf $f rm -f $f ;; + *.zst) + $quiet || echo tar -I unzstd -xf $f + tar -I unzstd -xf $f + rm -f $f + ;; *.gz) $quiet || echo tar xzf $f tar xzf $f