Ticket #4571: 0001-menu-drop-archaic-items-modernize-archival-options-v7.patch

File 0001-menu-drop-archaic-items-modernize-archival-options-v7.patch, 36.5 KB (added by eugenesan, 3 months ago)

Updated version of the main patch with various fixes

  • misc/mc.menu.in

    From e1bd7d40f2ef2efa5fbe4d550486ac6b7d1722a2 Mon Sep 17 00:00:00 2001
    From: "Eugene San (eugenesan)" <eugenesan@gmail.com>
    Date: Thu, 22 Aug 2024 23:31:05 -0700
    Subject: [PATCH] menu: drop archaic items, modernize archival options and add
     more items v7
    
    ---
     misc/mc.menu.in | 868 +++++++++++++++++++++++++++++++++++++++---------
     1 file changed, 716 insertions(+), 152 deletions(-)
    
    diff --git a/misc/mc.menu.in b/misc/mc.menu.in
    index 51880de7e..667480896 100644
    a b shell_patterns=0 
    2020#   %f    quote expanded macro 
    2121#   %1f   ditto 
    2222#   %0f   don't quote expanded macro 
     23# 
     24#   Unused shortcuts: I, o, O, l, L, k, v, V, p, P 
    2325############################################################################## 
    2426 
    2527+ ! t t 
    shell_patterns=0 
    3436            $CMD "$i" 
    3537        done 
    3638 
    37 0  Edit a bug report and send it to root 
     39!  Edit a bug report and send it to root 
    3840        I=`mktemp "${MC_TMPDIR:-/tmp}/mail.XXXXXX"` || exit 1 
    3941        ${EDITOR-vi} "$I" 
    4042        test -r "$I" && mail root < "$I" 
    4143        rm -f "$I" 
    4244 
    4345=+ f \.1$ | f \.3$ | f \.4$ | f \.5$ | f \.6$ | f \.7$ | f \.8$ | f \.man$ & t r 
    44 1  Display the file with roff -man 
     46$  Display the file with roff -man 
    4547        %view{ascii,nroff} roff @MAN_FLAGS@ @MANDOC@ %f 
    4648 
    47 2  Call the info hypertext browser 
     49%  Call the info hypertext browser 
    4850        info 
    4951 
    50 = t d 
     52+ f \.c$ & t r & ! t t 
     531  Compile and link current .c file 
     54        make "`basename %f .c`" 2>/dev/null || cc -O -o "`basename %f .c`" %f 
     55 
     56+ ! t t 
     572  Pack the current subdirectory (tar) 
     58        Pwd=`basename %d /` 
     59        echo -n "Name of the tarball (without extension) [$Pwd]: " 
     60        read tar 
     61        [ "$tar"x = x ] && tar="$Pwd" 
     62        cd .. && \ 
     63        tar cf "$tar.tar" "$Pwd" && \ 
     64        echo "../$tar.tar created." 
     65 
     66+ t t 
     672  Pack tagged directories (tar) 
     68        echo "[%t]" 
     69        for tar in %t; do 
     70            tar cf "$tar.tar" "$tar" && \ 
     71            echo "$tar.tar created." 
     72        done 
     73 
     74+ ! t t 
    51753  Compress the current subdirectory (tar.gz) 
    5276        Pwd=`basename %d /` 
    5377        echo -n "Name of the compressed file (without extension) [$Pwd]: " 
    shell_patterns=0 
    5781        tar cf - "$Pwd" | gzip -f9 > "$tar.tar.gz" && \ 
    5882        echo "../$tar.tar.gz created." 
    5983 
     84+ t t 
     853  Compress tagged subdirectories (tar.gz) 
     86        for tar in %t; do 
     87            tar cf - "$tar" | gzip -f9 > "$tar.tar.gz" && \ 
     88            echo "$tar.tar.gz created." 
     89        done 
     90 
     91+ ! t t 
    60924  Compress the current subdirectory (tar.bz2) 
    6193        Pwd=`basename %d /` 
    6294        echo -n "Name of the compressed file (without extension) [$Pwd]: " 
    shell_patterns=0 
    6698        tar cf - "$Pwd" | bzip2 -f > "$tar.tar.bz2" && \ 
    6799        echo "../$tar.tar.bz2 created." 
    68100 
     101+ t t 
     1024  Compress tagged subdirectories (tar.bz2) 
     103        for tar in %t; do 
     104            tar cf - "$tar" | bzip2 -f > "$tar.tar.bz2" && \ 
     105            echo "$tar.tar.bz2 created." 
     106        done 
     107 
     108+ ! t t 
    691095  Compress the current subdirectory (tar.7z) 
     110        P7ZIP=`which 7zz 2>/dev/null` || P7ZIP=`which 7z 2>/dev/null` || P7ZIP=`which 7za 2>/dev/null` 
    70111        Pwd=`basename %d /` 
    71112        echo -n "Name of the compressed file (without extension) [$Pwd]: " 
    72113        read tar 
    73114        [ "$tar"x = x ] && tar="$Pwd" 
    74115        cd .. && \ 
    75         tar cf - "$Pwd" | 7za a -si "$tar.tar.7z" && \ 
     116        tar cf - "$Pwd" | ${P7ZIP} a -si $COMPRESS_OPTS_7Z "$tar.tar.7z" && \ 
    76117        echo "../$tar.tar.7z created." 
     118+ t t 
     1195  Compress tagged subdirectories (tar.7z) 
     120        P7ZIP=`which 7zz 2>/dev/null` || P7ZIP=`which 7z 2>/dev/null` || P7ZIP=`which 7za 2>/dev/null` 
     121        for tar in %t; do 
     122            tar cf - "$tar" | ${P7ZIP} a -si $COMPRESS_OPTS_7Z "$tar.tar.7z" && \ 
     123            echo "$tar.tar.7z created." 
     124        done 
    77125 
     126+ ! t t 
    781276  Compress the current subdirectory (tar.xz) 
     128        P7ZIP=`which 7zz 2>/dev/null` || P7ZIP=`which 7z 2>/dev/null` || P7ZIP=`which 7za 2>/dev/null` 
    79129        Pwd=`basename %d /` 
    80130        echo -n "Name of the compressed file (without extension) [$Pwd]: " 
    81131        read tar 
    shell_patterns=0 
    84134        tar cf - "$Pwd" | xz -f > "$tar.tar.xz" && \ 
    85135        echo "../$tar.tar.xz created." 
    86136 
     137+ t t 
     1386  Compress tagged subdirectories (tar.xz) 
     139        P7ZIP=`which 7zz 2>/dev/null` || P7ZIP=`which 7z 2>/dev/null` || P7ZIP=`which 7za 2>/dev/null` 
     140        for tar in %t; do 
     141            tar cf - "$tar" | xz -f > "$tar.tar.xz" && \ 
     142            echo "../$tar.tar.xz created." 
     143        done 
     144 
     145+ ! t t 
     146^  Compress the current subdirectory (tar.xz using 7z) 
     147        P7ZIP=`which 7zz 2>/dev/null` || P7ZIP=`which 7z 2>/dev/null` || P7ZIP=`which 7za 2>/dev/null` 
     148        Pwd=`basename %d /` 
     149        echo -n "Name of the compressed file (without extension) [$Pwd]: " 
     150        read tar 
     151        [ "$tar"x = x ] && tar="$Pwd" 
     152        cd .. && \ 
     153        tar cf - "$Pwd" | ${P7ZIP} a -si -txz -m0=lzma2 -ms=on $COMPRESS_OPTS_7Z "$tar.tar.xz" && \ 
     154        echo "../$tar.tar.xz created." 
     155 
     156+ t t 
     157^  Compress tagged subdirectories (tar.xz using 7z) 
     158        P7ZIP=`which 7zz 2>/dev/null` || P7ZIP=`which 7z 2>/dev/null` || P7ZIP=`which 7za 2>/dev/null` 
     159        for tar in %t; do 
     160            tar cf - "$tar" | ${P7ZIP} a -si -txz -m0=lzma2 -ms=on $COMPRESS_OPTS_7Z "$tar.tar.xz" && \ 
     161            echo "$tar.tar.xz created." 
     162        done 
     163 
     164+ ! t t 
    871657  Compress the current subdirectory (tar.zst) 
    88166        Pwd=`basename %d /` 
    89167        echo -n "Name of the compressed file (without extension) [$Pwd]: " 
    90168        read tar 
    91169        [ "$tar"x = x ] && tar="$Pwd" 
    92170        cd .. && \ 
    93         tar cf - "$Pwd" | zstd -f > "$tar.tar.zst" && \ 
     171        tar cf - "$Pwd" | zstd $COMPRESS_OPTS_ZSTD -f > "$tar.tar.zst" && \ 
    94172        echo "../$tar.tar.zst created." 
    95173 
     174+ t t 
     1757  Compress tagged subdirectories (tar.zst) 
     176        for tar in %t; do 
     177            tar cf - "$tar" | zstd $COMPRESS_OPTS_ZSTD -f > "$tar.tar.zst" && \ 
     178            echo "$tar.tar.zst created." 
     179        done 
     180 
     181+ ! t t 
    961828  Compress the current subdirectory (tar.lzo) 
    97183        Pwd=`basename %d /` 
    98184        echo -n "Name of the compressed file (without extension) [$Pwd]: " 
    shell_patterns=0 
    102188        tar cf - "$Pwd" | lzop -f > "$tar.tar.lzo" && \ 
    103189        echo "../$tar.tar.lzo created." 
    104190 
    105 = f \.c$ & t r 
    106 + f \.c$ & t r & ! t t 
    107 c  Compile and link current .c file 
    108         make "`basename %f .c`" 2>/dev/null || cc -O -o "`basename %f .c`" %f 
     191+ t t 
     1928  Compress tagged subdirectories (tar.lzo) 
     193        for tar in %t; do 
     194            tar cf - "$tar" | lzop -f > "$tar.tar.lzo" && \ 
     195            echo "$tar.tar.lzo created." 
     196        done 
     197 
     198+ ! t t 
     1999  Compress the current subdirectory (7z) 
     200        P7ZIP=`which 7zz 2>/dev/null` || P7ZIP=`which 7z 2>/dev/null` || P7ZIP=`which 7za 2>/dev/null` 
     201        Pwd=`basename %d /` 
     202        echo -n "Name of the compressed file (without extension) [$Pwd]: " 
     203        read tar 
     204        [ "$tar"x = x ] && tar="$Pwd" 
     205        cd .. && \ 
     206        ${P7ZIP} a $COMPRESS_OPTS_7Z "$tar.7z" "$tar" && \ 
     207        echo "../$tar.7z created." 
     208 
     209+ t t 
     2109  Compress tagged subdirectories (7z) 
     211        P7ZIP=`which 7zz 2>/dev/null` || P7ZIP=`which 7z 2>/dev/null` || P7ZIP=`which 7za 2>/dev/null` 
     212        for tar in %t; do 
     213            ${P7ZIP} a $COMPRESS_OPTS_7Z "$tar.7z" "$tar" && \ 
     214            echo "$tar.7z created." 
     215        done 
     216 
     217+ ! t t 
     218(  Compress & Encrypt the current subdirectory (7z) 
     219        P7ZIP=`which 7zz 2>/dev/null` || P7ZIP=`which 7z 2>/dev/null` || P7ZIP=`which 7za 2>/dev/null` 
     220        Pwd=`basename %d /` 
     221        echo -n "Name of the compressed file (without extension) [$Pwd]: " 
     222        read tar 
     223        [ "$tar"x = x ] && tar="$Pwd" 
     224        cd .. && \ 
     225        ${P7ZIP} a -p -mhe $COMPRESS_OPTS_7Z "$tar.7z" "$tar" && \ 
     226        echo "../$tar.7z created." 
     227 
     228+ t t 
     229(  Compress & Encrypt tagged subdirectories (7z) 
     230        P7ZIP=`which 7zz 2>/dev/null` || P7ZIP=`which 7z 2>/dev/null` || P7ZIP=`which 7za 2>/dev/null` 
     231        for tar in %t; do 
     232            ${P7ZIP} a -p -mhe $COMPRESS_OPTS_7Z "$tar.7z" "$tar" && \ 
     233            echo "$tar.7z created." 
     234        done 
     235 
     236+ ! t t 
     2370  Compress the current subdirectory (zip) 
     238        P7ZIP=`which 7zz 2>/dev/null` || P7ZIP=`which 7z 2>/dev/null` || P7ZIP=`which 7za 2>/dev/null` 
     239        Pwd=`basename %d /` 
     240        echo -n "Name of the compressed file (without extension) [$Pwd]: " 
     241        read tar 
     242        [ "$tar"x = x ] && tar="$Pwd" 
     243        cd .. && \ 
     244        zip -r "$tar.zip" "$tar" && \ 
     245        echo "../$tar.zip created." 
     246 
     247+ t t 
     2480  Compress tagged subdirectories (zip) 
     249        P7ZIP=`which 7zz 2>/dev/null` || P7ZIP=`which 7z 2>/dev/null` || P7ZIP=`which 7za 2>/dev/null` 
     250        for tar in %t; do 
     251            zip -r "$tar.zip" "$tar" && \ 
     252            echo "$tar.zip created." 
     253        done 
     254 
     255+ ! t t 
     256)  Compress the current subdirectory (zip using 7z) 
     257        P7ZIP=`which 7zz 2>/dev/null` || P7ZIP=`which 7z 2>/dev/null` || P7ZIP=`which 7za 2>/dev/null` 
     258        Pwd=`basename %d /` 
     259        echo -n "Name of the compressed file (without extension) [$Pwd]: " 
     260        read tar 
     261        [ "$tar"x = x ] && tar="$Pwd" 
     262        cd .. && \ 
     263        ${P7ZIP} a -tzip "$tar.zip" "$tar" && \ 
     264        echo "../$tar.zip created." 
     265 
     266+ t t 
     267)  Compress tagged subdirectories (zip using 7z) 
     268        P7ZIP=`which 7zz 2>/dev/null` || P7ZIP=`which 7z 2>/dev/null` || P7ZIP=`which 7za 2>/dev/null` 
     269        for tar in %t; do 
     270            ${P7ZIP} a -tzip "$tar.zip" "$tar" && \ 
     271            echo "$tar.zip created." 
     272        done 
    109273 
    110274+ t r & ! t t 
    111275a  Append file to opposite 
    A Append files to opposite files 
    118282        done 
    119283 
    120284+ t r & ! t t 
    121 d  Delete file if a copy exists in the other directory. 
     285d  Delete file if a copy exists in the other directory 
    122286        if [ %d = %D ]; then 
    123             echo "The two directories must be different." 
     287            echo "The two directories must be different" 
    124288            exit 1 
    125289        fi 
    126290        if [ -f %D/%f ]; then        # if two of them, then 
    127291            if cmp -s %D/%f %f; then 
    128292                rm %f && echo %f": DELETED." 
    129293            else 
    130                 echo %f" and "%D/%f" differ: NOT deleted." 
     294                echo %f" and "%D/%f" differ: NOT deleted" 
    131295                echo -n "Press RETURN " 
    132296                read key 
    133297            fi 
    134298        else 
    135             echo %f": No copy in "%D/%f": NOT deleted." 
     299            echo %f": No copy in "%D/%f": NOT deleted" 
    136300        fi 
    137301 
    138302+ t t 
    139 D  Delete tagged files if a copy exists in the other directory. 
     303D  Delete tagged files if a copy exists in the other directory 
    140304        if [ %d = %D ]; then 
    141             echo "The two directories must be different." 
     305            echo "The two directories must be different" 
    142306            exit 1 
    143307        fi 
    144308        for i in %t ; do 
    D Delete tagged files if a copy exists in the other directory. 
    146310                SUM1=`sum "$i"` 
    147311                SUM2=`sum %D/"$i"` 
    148312                if [ "$SUM1" = "$SUM2" ]; then 
    149                     rm "$i" && echo "${i}: DELETED." 
     313                    rm "$i" && echo "$i: DELETED." 
    150314                else 
    151                     echo "$i and "%D"/$i differ: NOT deleted." 
     315                    echo "$i and "%D"/$i differ: NOT deleted" 
    152316                fi 
    153317            else 
    154                 echo "$i has no copy in "%D": NOT deleted." 
     318                echo "$i has no copy in "%D": NOT deleted" 
    155319            fi 
    156320        done 
    157321 
    158 m  View manual page 
     322m  View manual page (native) 
    159323        MAN=%{Enter manual name} 
    160         %view{ascii,nroff} MANROFFOPT='@MAN_FLAGS@' MAN_KEEP_FORMATTING=1 man -P cat "$MAN" 
    161  
    162 = f \.gz$ & t r 
    163 + ! t t 
    164 n  Inspect gzip'ed newsbatch file 
    165         dd if=%f bs=1 skip=12 | zcat | ${PAGER-more} 
    166         # assuming the cunbatch header is 12 bytes long. 
    167  
    168 = t r & 
    169 + ! t t 
    170 h  Strip headers from current newsarticle 
    171         CHECK=`awk '{print $1 ; exit}' %f` 2>/dev/null 
    172         case "$CHECK" in 
    173             Newsgroups:|Path:) 
    174                 I=`mktemp "${MC_TMPDIR:-/tmp}/news.XXXXXX"` || exit 1 
    175                 cp %f "$I" && sed '/^'"$CHECK"' /,/^$/d' "$I" > %f 
    176                 [ "$?" = "0" ] && rm "$I" 
    177                 echo %f": header removed." 
    178                 ;; 
    179             *) 
    180                 echo %f" is not a news article." 
    181                 ;; 
    182         esac 
     324        man "$MAN" 
    183325 
    184 + t t 
    185 H  Strip headers from the marked newsarticles 
    186         for i in %t ; do 
    187             CHECK=`awk '{print $1 ; exit}' "$i"` 2>/dev/null 
    188             WFILE=`mktemp "${MC_TMPDIR:-/tmp}/news.XXXXXX"` || exit 1 
    189             case "$CHECK" in 
    190                 Newsgroups:|Path:) 
    191                     cp "$i" "$WFILE" && sed '/^'"$CHECK"' /,/^$/d' "$WFILE" > "$i" 
    192                     if [ "$?" = "0" ]; then 
    193                         rm "$WFILE"; echo "$i header removed. OK." 
    194                     else 
    195                         echo "Oops! Please check $i against $WFILE." 
    196                     fi 
    197                     ;; 
    198                 *) 
    199                     echo "$i skipped: Not a news article." 
    200                     ;; 
    201             esac 
    202         done 
     326M  View manual page 
     327        MAN=%{Enter manual name} 
     328        %view{ascii,nroff} MANROFFOPT='@MAN_FLAGS@' MAN_KEEP_FORMATTING=1 man -P cat "$MAN" 
    203329 
    204330= t r 
    205331+ ! t t 
    R Copy files to remote host (no error checking) 
    218344        read Dir 
    219345        rcp -pr %u "${Host}:${Dir}" 
    220346 
    221 = f \.tex$ & t r 
    222 + f \.tex$ & t r & ! t t 
    223 t  Run latex on file and show it with xdvi 
    224         latex %f && xdvi "`basename %f .tex`".dvi 
    225  
    226 =+ f ^part | f ^Part | f uue & t r 
    227 + t t 
    228 U  Uudecode marked news articles (needs work) 
    229         ( 
    230             for i in %t ; do # strip headers 
    231                 FIRST=`awk '{print $1 ; exit}' "$i"` 
    232                 cat "$i" | sed '/^'"$FIRST"' /,/^$/d' 
    233             done 
    234         ) | sed '/^$/d' | sed -n '/^begin 6/,/^end$/p' | uudecode 
    235         if [ "$?" != "0" ]; then 
    236             echo "Cannot decode "%t"." 
     347+ ! t t 
     348t  List compressed archive/image using 7z 
     349        P7ZIP=`which 7zz 2>/dev/null` || P7ZIP=`which 7z 2>/dev/null` || P7ZIP=`which 7za 2>/dev/null` 
     350        case %f in 
     351            *.tar.*) 
     352                tar -taf %f;; 
     353            *) 
     354                ${P7ZIP} l %f;; 
     355        esac 
     356 
     357+ t t 
     358t  List compressed archives/images using 7z 
     359        P7ZIP=`which 7zz 2>/dev/null` || P7ZIP=`which 7z 2>/dev/null` || P7ZIP=`which 7za 2>/dev/null` 
     360        for i in %t ; do 
     361            case %f in 
     362            *.tar.*) 
     363                tar -taf "$i";; 
     364            *) 
     365                ${P7ZIP} l "$i";; 
     366            esac 
     367        done 
     368 
     369+ ! t t 
     370T  Test compressed archive/image using 7z 
     371        P7ZIP=`which 7zz 2>/dev/null` || P7ZIP=`which 7z 2>/dev/null` || P7ZIP=`which 7za 2>/dev/null` 
     372        case %f in 
     373            *.tar.*) 
     374                tar -taf %f;; 
     375            *) 
     376                ${P7ZIP} t -bb3 %f;; 
     377        esac 
     378 
     379+ t t 
     380T  Test compressed archives/images using 7z 
     381        P7ZIP=`which 7zz 2>/dev/null` || P7ZIP=`which 7z 2>/dev/null` || P7ZIP=`which 7za 2>/dev/null` 
     382        for i in %t ; do 
     383           case %f in 
     384           *.tar.*) 
     385               tar -taf "$i";; 
     386           *) 
     387               ${P7ZIP} t -bb3 "$i";; 
     388           esac 
     389        done 
     390 
     391+ ! t t 
     392e  Extract compressed archive/image using 7z 
     393        P7ZIP=`which 7zz 2>/dev/null` || P7ZIP=`which 7z 2>/dev/null` || P7ZIP=`which 7za 2>/dev/null` 
     394        ${P7ZIP} x -bb3 -o$(dirname %f) %f 
     395 
     396+ t t 
     397e  Extract compressed archives/images using 7z 
     398        P7ZIP=`which 7zz 2>/dev/null` || P7ZIP=`which 7z 2>/dev/null` || P7ZIP=`which 7za 2>/dev/null` 
     399        for i in %t ; do 
     400            ${P7ZIP} x -bb3 -o"$(dirname "$i")" "$i" 
     401        done 
     402 
     403+ ! t t 
     404E  Extract compressed archive/image to subdirs using 7z 
     405        P7ZIP=`which 7zz 2>/dev/null` || P7ZIP=`which 7z 2>/dev/null` || P7ZIP=`which 7za 2>/dev/null` 
     406        id=`basename %f` 
     407        iD="${id%.*}" 
     408        mkdir -p "$iD" 
     409        ${P7ZIP} x -bb3 -o"$iD" %f 
     410 
     411+ t t 
     412E  Extract compressed archives/images to subdirs using 7z 
     413        P7ZIP=`which 7zz 2>/dev/null` || P7ZIP=`which 7z 2>/dev/null` || P7ZIP=`which 7za 2>/dev/null` 
     414        for i in %t ; do 
     415            id=`basename "$i"` 
     416            iD="${id%.*}" 
     417            mkdir -p "$iD" 
     418            ${P7ZIP} x -bb3 -o"$iD" "$i" 
     419        done 
     420 
     421+ f \.tar$ | f \.tar\.gz$ | f \.tar\.z$ | f \.tgz$ | f \.tpz$ | f \.tar\.lz$ | f \.tar\.lz4$ | f \.tar\.lzma$ | f \.tar\.lzo$ | f \.tar\.7z$ | f \.tar\.xz$ | f \.txz$ | f \.tar\.zst$ | f \.tzst$ | f \.tar\.Z$ | f \.tar\.bz2$ | f \.tbz2$ & t rl & ! t t 
     422x  Extract compressed tar archive 
     423        P7ZIP=`which 7zz 2>/dev/null` || P7ZIP=`which 7z 2>/dev/null` || P7ZIP=`which 7za 2>/dev/null` 
     424        unset PRG 
     425        case %f in 
     426            *.tar) 
     427                PRG="";; 
     428            *.tar.7z) 
     429                PRG="${P7ZIP} e -so";; 
     430            *.tar.bz2|*.tbz2) 
     431                PRG="bunzip2 -c";; 
     432            *.tar.gz|*.tar.z|*.tgz|*.tpz|*.tar.Z) 
     433                PRG="gzip -dc";; 
     434            *.tar.lz) 
     435                PRG="lzip -dc";; 
     436            *.tar.lz4) 
     437                PRG="lz4 -dc";; 
     438            *.tar.lzma) 
     439                PRG="lzma -dc";; 
     440            *.tar.lzo) 
     441                PRG="lzop -dc";; 
     442            *.tar.xz|*.txz) 
     443                PRG="xz -dc";; 
     444            *.tar.zst|*.tzst) 
     445                PRG="zstd -dc";; 
     446            *) 
     447                exit 1;; 
     448        esac 
     449        if [ -n "$PRG" ]; then 
     450            $PRG %f | tar -xvf - 
     451        else 
     452            tar -xf %f 
    237453        fi 
    238         echo "Please test the output file before deleting anything." 
    239454 
    240 =+ f \.tar\.gz$ | f \.tar\.z$ | f \.tgz$ | f \.tpz$ | f \.tar\.lz$ | f \.tar\.lz4$ | f \.tar\.lzma$ | f \.tar\.lzo$ | f \.tar\.7z$ | f \.tar\.xz$ | f \.tar\.zst | f \.tar\.Z$ | f \.tar\.bz2$ & t rl 
    241 x  Extract the contents of a compressed tar file 
     455+ f \.tar$ | f \.tar\.gz$ | f \.tar\.z$ | f \.tgz$ | f \.tpz$ | f \.tar\.lz$ | f \.tar\.lz4$ | f \.tar\.lzma$ | f \.tar\.lzo$ | f \.tar\.7z$ | f \.tar\.xz$ | f \.txz$ | f \.tar\.zst$ | f \.tzst$ | f \.tar\.Z$ | f \.tar\.bz2 | f \.tbz2$ & t t 
     456x  Extract tagged compressed tar archive 
     457        P7ZIP=`which 7zz 2>/dev/null` || P7ZIP=`which 7z 2>/dev/null` || P7ZIP=`which 7za 2>/dev/null` 
     458        for i in %t ; do 
     459            unset PRG 
     460            case "$i" in 
     461                *.tar) 
     462                    PRG="";; 
     463                *.tar.7z) 
     464                    PRG="${P7ZIP} e -so";; 
     465                *.tar.bz2|*.tbz2) 
     466                    PRG="bunzip2 -c";; 
     467                *.tar.gz|*.tar.z|*.tgz|*.tpz|*.tar.Z) 
     468                    PRG="gzip -dc";; 
     469                *.tar.lz) 
     470                    PRG="lzip -dc";; 
     471                *.tar.lz4) 
     472                    PRG="lz4 -dc";; 
     473                *.tar.lzma) 
     474                    PRG="lzma -dc";; 
     475                *.tar.lzo) 
     476                    PRG="lzop -dc";; 
     477                *.tar.xz|*.txz) 
     478                    PRG="xz -dc";; 
     479                *.tar.zst|*.tzst) 
     480                    PRG="zstd -dc";; 
     481                *) 
     482                    exit 1;; 
     483            esac 
     484 
     485            if [ -n "$PRG" ]; then 
     486                $PRG "$i" | tar -xvf - 
     487            else 
     488                tar -xf "$i" 
     489            fi 
     490        done 
     491 
     492+ f \.tar$ | f \.tar\.gz$ | f \.tar\.z$ | f \.tgz$ | f \.tpz$ | f \.tar\.lz$ | f \.tar\.lz4$ | f \.tar\.lzma$ | f \.tar\.lzo$ | f \.tar\.7z$ | f \.tar\.xz$ | f \.txz$ | f \.tar\.zst$ | f \.tzst$ | f \.tar\.Z$ | f \.tar\.bz2$ | f \.tbz2$ & t rl & ! t t 
     493X  Extract compressed tar archive to subdirectory 
     494        P7ZIP=`which 7zz 2>/dev/null` || P7ZIP=`which 7z 2>/dev/null` || P7ZIP=`which 7za 2>/dev/null` 
     495        unset D 
    242496        unset PRG 
    243497        case %f in 
    244             *.tar.7z)   PRG="7za e -so";; 
    245             *.tar.bz2)  PRG="bunzip2 -c";; 
    246             *.tar.gz|*.tar.z|*.tgz|*.tpz|*.tar.Z) PRG="gzip -dc";; 
    247             *.tar.lz)   PRG="lzip -dc";; 
    248             *.tar.lz4)  PRG="lz4 -dc";; 
    249             *.tar.lzma) PRG="lzma -dc";; 
    250             *.tar.lzo)  PRG="lzop -dc";; 
    251             *.tar.xz)   PRG="xz -dc";; 
    252             *.tar.zst)  PRG="zstd -dc";; 
    253             *)          exit 1;; 
     498            *.tar) 
     499                PRG=""; D=`basename %f .tar`;; 
     500            *.tar.7z) 
     501                PRG="${P7ZIP} e -so"; D=`basename %f .tar.7z`;; 
     502            *.tar.bz2) 
     503                PRG="bunzip2 -c"; D=`basename %f .tar.bz2`;; 
     504            *.tbz2) 
     505                PRG="bunzip2 -c"; D=`basename %f .tbz2`;; 
     506            *.tar.gz) 
     507                PRG="gzip -dc"; D=`basename %f .tar.gz`;; 
     508            *.tar.z) 
     509                PRG="gzip -dc"; D=`basename %f .tar.z`;; 
     510            *.tgz) 
     511                PRG="gzip -dc"; D=`basename %f .tgz`;; 
     512            *.tpz) 
     513                PRG="gzip -dc"; D=`basename %f .tpz`;; 
     514            *.tar.Z) 
     515                PRG="gzip -dc"; D=`basename %f .tar.Z`;; 
     516            *.tar.lz) 
     517                PRG="lzip -dc"; D=`basename %f .tar.lz`;; 
     518            *.tar.lz4) 
     519                PRG="lz4 -dc"; D=`basename %f .tar.lz4`;; 
     520            *.tar.lzma) 
     521                PRG="lzma -dc"; D=`basename %f .tar.lzma`;; 
     522            *.tar.lzo) 
     523                PRG="lzop -dc"; D=`basename %f .tar.lzo`;; 
     524            *.tar.xz) 
     525                PRG="xz -dc"; D=`basename %f .tar.xz`;; 
     526            *.txz) 
     527                PRG="xz -dc"; D=`basename %f .txz`;; 
     528            *.tar.zst) 
     529                PRG="zstd -dc"; D=`basename %f .tar.zst`;; 
     530            *.tzst) 
     531                PRG="zstd -dc"; D=`basename %f .tzst`;; 
     532            *.tar.F) 
     533                PRG="freeze -dc"; D=`basename %f .tar.F`;; 
     534            *) 
     535                echo "Unsupported compression,"; exit 255;; 
    254536        esac 
    255         $PRG %f | tar xvf - 
     537        if [ -n "$PRG" ]; then 
     538            mkdir "$D" && $PRG %f | tar -C "$D" -xvf - 
     539        else 
     540            mkdir "$D" && tar -C "$D" -xvf %f 
     541        fi 
    256542 
    257 = t r 
    258 + ! t t 
    259 y  Gzip or gunzip current file 
     543+ f \.tar$ | f \.tar\.gz$ | f \.tar\.z$ | f \.tgz$ | f \.tpz$ | f \.tar\.lz$ | f \.tar\.lz4$ | f \.tar\.lzma$ | f \.tar\.lzo$ | f \.tar\.7z$ | f \.tar\.xz$ | f \.txz$ | f \.tar\.zst$ | f \.tzst$ | f \.tar\.Z$ | f \.tar\.bz2$ | f \.tbz2$ & t t 
     544X  Extract tagged compressed tar archives to subdirectories 
     545        P7ZIP=`which 7zz 2>/dev/null` || P7ZIP=`which 7z 2>/dev/null` || P7ZIP=`which 7za 2>/dev/null` 
     546        for i in %t ; do 
     547            unset D 
     548            unset PRG 
     549            case "$i" in 
     550                *.tar) 
     551                    PRG=""; D=`basename $i .tar`;; 
     552                *.tar.7z) 
     553                    PRG="${P7ZIP} e -so"; D=`basename $i .tar.7z`;; 
     554                *.tar.bz2) 
     555                    PRG="bunzip2 -c"; D=`basename $i .tar.bz2`;; 
     556                *.tbz2) 
     557                    PRG="bunzip2 -c"; D=`basename $i .tbz2`;; 
     558                *.tar.gz) 
     559                    PRG="gzip -dc"; D=`basename $i .tar.gz`;; 
     560                *.tar.z) 
     561                    PRG="gzip -dc"; D=`basename $i .tar.z`;; 
     562                *.tgz) 
     563                    PRG="gzip -dc"; D=`basename $i .tgz`;; 
     564                *.tpz) 
     565                    PRG="gzip -dc"; D=`basename $i .tpz`;; 
     566                *.tar.Z) 
     567                    PRG="gzip -dc"; D=`basename $i .tar.Z`;; 
     568                *.tar.lz) 
     569                    PRG="lzip -dc"; D=`basename $i .tar.lz`;; 
     570                *.tar.lz4) 
     571                    PRG="lz4 -dc"; D=`basename $i .tar.lz4`;; 
     572                *.tar.lzma) 
     573                    PRG="lzma -dc"; D=`basename $i .tar.lzma`;; 
     574                *.tar.lzo) 
     575                    PRG="lzop -dc"; D=`basename $i .tar.lzo`;; 
     576                *.tar.xz) 
     577                    PRG="xz -dc"; D=`basename $i .tar.xz`;; 
     578                *.txz) 
     579                    PRG="xz -dc"; D=`basename $i .txz`;; 
     580                *.tar.zst) 
     581                    PRG="zstd -dc"; D=`basename $i .tar.zst`;; 
     582                *.tzst) 
     583                    PRG="zstd -dc"; D=`basename $i .tzst`;; 
     584                *.tar.F) 
     585                    PRG="freeze -dc"; D=`basename $i .tar.F`;; 
     586                *) 
     587                    echo "Unsupported compression,"; exit 255;; 
     588            esac 
     589           if [ -n "$PRG" ]; then 
     590                mkdir "$D" && $PRG $i | tar -C "$D" -xvf - 
     591           else 
     592                mkdir "$D" && tar -C "$D" -xvf "$i" 
     593           fi 
     594        done 
     595 
     596+ t r & ! t t 
     597z  Compress / UnCompress (gzip) current file 
    260598        unset DECOMP 
     599        unset DEPROG 
    261600        case %f in 
    262             *.gz|*.[zZ]) DECOMP=-d;; 
     601            *.gz|*.[zZ]) 
     602                DEPROG=gzip; DECOMP=-d;; 
     603            *) 
     604                DEPROG=gzip; DECOMP="";; 
    263605        esac 
    264606        # Do *not* add quotes around $DECOMP! 
    265         gzip $DECOMP -v %f 
     607        $DEPROG $DECOMP -v %f 
    266608 
    267609+ t t 
    268 Y  Gzip or gunzip tagged files 
     610z  Compress / UnCompress (gzip) tagged files 
    269611        for i in %t ; do 
    270612            unset DECOMP 
     613            unset DEPROG 
    271614            case "$i" in 
    272                 *.gz|*.[zZ]) DECOMP=-d;; 
     615                *.gz|*.[zZ]) 
     616                    DEPROG=gzip; DECOMP=-d;; 
     617                *) 
     618                    DEPROG=gzip; DECOMP="";; 
    273619            esac 
    274             gzip $DECOMP -v "$i" 
     620            $DEPROG $DECOMP -v "$i" 
    275621        done 
    276622 
    277 + ! t t 
    278 b  Bzip2 or bunzip2 current file 
     623+ t r & ! t t 
     624Z  Compress / UnCompress (bzip2) current file 
    279625        unset DECOMP 
     626        unset DEPROG 
    280627        case %f in 
    281             *.bz2) DECOMP=-d;; 
     628            *.bz2) 
     629                DEPROG=bzip2; DECOMP=-d;; 
     630            *) 
     631                DEPROG=bzip2; DECOMP="";; 
    282632        esac 
    283         bzip2 $DECOMP -v %f 
     633        # Do *not* add quotes around $DECOMP! 
     634        $DEPROG $DECOMP -v %f 
    284635 
    285636+ t t 
    286 B  Bzip2 or bunzip2 tagged files 
     637Z  Compress / UnCompress (bzip2) tagged files 
    287638        for i in %t ; do 
    288639            unset DECOMP 
     640            unset DEPROG 
    289641            case "$i" in 
    290                 *.bz2) DECOMP=-d;; 
     642                *.bz2) 
     643                    DEPROG=bzip2; DECOMP=-d;; 
     644                *) 
     645                    DEPROG=bzip2; DECOMP="";; 
    291646            esac 
    292             bzip2 $DECOMP -v "$i" 
     647            $DEPROG $DECOMP -v "$i" 
    293648        done 
    294649 
    295 + f \.tar.gz$ | f \.tgz$ | f \.tpz$ | f \.tar.Z$ | f \.tar.z$ | f \.tar.bz2$ | f \.tar.F$ & t r & ! t t 
    296 z  Extract compressed tar file to subdirectory 
    297         unset D 
    298         set gzip -cd 
     650+ t r & ! t t 
     651y  Compress / UnCompress (zstd) current file 
     652        unset DECOMP 
     653        unset DEPROG 
    299654        case %f in 
    300             *.tar.F)   D=`basename %f .tar.F`; set freeze -dc;; 
    301             *.tar.Z)   D=`basename %f .tar.Z`;; 
    302             *.tar.bz2) D=`basename %f .tar.bz2`; set bunzip2 -c;; 
    303             *.tar.gz)  D=`basename %f .tar.gz`;; 
    304             *.tar.z)   D=`basename %f .tar.z`;; 
    305             *.tgz)     D=`basename %f .tgz`;; 
    306             *.tpz)     D=`basename %f .tpz`;; 
     655            *.zst) 
     656                DEPROG=zstd; DECOMP="-d --rm";; 
     657            *) 
     658                DEPROG=zstd; DECOMP="--rm";; 
    307659        esac 
    308         mkdir "$D"; cd "$D" && ("$1" "$2" ../%f | tar xvf -) 
     660        # Do *not* add quotes around $DECOMP! 
     661        $DEPROG $DECOMP -v %f 
    309662 
    310663+ t t 
    311 Z  Extract compressed tar files to subdirectories 
     664y  Compress / UnCompress (zstd) tagged files 
    312665        for i in %t ; do 
    313             set gzip -dc 
    314             unset D 
     666            unset DECOMP 
     667            unset DEPROG 
     668            case "$i" in 
     669                *.zst) 
     670                    DEPROG=zstd; DECOMP="-d --rm";; 
     671                *) 
     672                    DEPROG=zstd; DECOMP="--rm";; 
     673            esac 
     674            $DEPROG $DECOMP -v "$i" 
     675        done 
     676 
     677+ t r & ! t t 
     678u  Compress / UnCompress (xz) current file 
     679        unset DECOMP 
     680        unset DEPROG 
     681        case %f in 
     682            *.xz) 
     683                DEPROG=xz; DECOMP=-d;; 
     684            *) 
     685                DEPROG=xz; DECOMP="";; 
     686        esac 
     687        # Do *not* add quotes around $DECOMP! 
     688        $DEPROG $DECOMP -v %f 
     689 
     690+ t t 
     691u  Compress / UnCompress (xz) tagged files 
     692        for i in %t ; do 
     693            unset DECOMP 
     694            unset DEPROG 
     695            case "$i" in 
     696                *.xz) 
     697                    DEPROG=xz; DECOMP=-d;; 
     698                *) 
     699                    DEPROG=xz; DECOMP="";; 
     700            esac 
     701            $DEPROG $DECOMP -v "$i" 
     702        done 
     703 
     704+ t r & ! t t 
     705U  Compress (xz using 7z) / UnCompress (any) current file 
     706        P7ZIP=`which 7zz 2>/dev/null` || P7ZIP=`which 7z 2>/dev/null` || P7ZIP=`which 7za 2>/dev/null` 
     707        case %f in 
     708            *.gz|*.[zZ]|*.bz2|*.xz|*.xz|*.7z|*.zst) 
     709                ${P7ZIP} x %f && rm -vf %f;; 
     710            *) 
     711                ${P7ZIP} a -txz -m0=lzma2 -ms=on $COMPRESS_OPTS_7Z %f.xz %f && test -r %f.xz && rm -vf %f;; 
     712        esac 
     713 
     714+ t t 
     715U  Compres (xz using 7z) / UnCompress (any) tagged files 
     716        P7ZIP=`which 7zz 2>/dev/null` || P7ZIP=`which 7z 2>/dev/null` || P7ZIP=`which 7za 2>/dev/null` 
     717        for i in %t ; do 
     718            unset DECOMP 
    315719            case "$i" in 
    316                 *.tar.F)   D=`basename "$i" .tar.F`; set freeze -dc;; 
    317                 *.tar.Z)   D=`basename "$i" .tar.Z`;; 
    318                 *.tar.bz2) D=`basename "$i" .tar.bz2`; set bunzip2 -c;; 
    319                 *.tar.gz)  D=`basename "$i" .tar.gz`;; 
    320                 *.tar.z)   D=`basename "$i" .tar.z`;; 
    321                 *.tgz)     D=`basename "$i" .tgz`;; 
    322                 *.tpz)     D=`basename "$i" .tpz`;; 
    323           esac 
    324           mkdir "$D"; (cd "$D" && "$1" "$2" "../$i" | tar xvf -) 
     720                *.gz|*.[zZ]|*.bz2|*.xz|*.xz|*.7z|*.zst) 
     721                    ${P7ZIP} x "$i" && rm -vf "$i";; 
     722                *) 
     723                    ${P7ZIP} a -txz -m0=lzma2 -ms=on $COMPRESS_OPTS_7Z "$i.xz" "$i" && test -r "$i.xz" && rm -vf "$i";; 
     724            esac 
    325725        done 
    326726 
    327727+ f \.gz$ | f \.tgz$ | f \.tpz$ | f \.Z$ | f \.z$ | f \.bz2$ & t r & ! t t 
    328 c  Convert gz<->bz2, tar.gz<->tar.bz2 & tgz->tar.bz2 
     728c  Convert gz<->bz2, tar.gz/tgz<->tar.bz2 current 
    329729        unset D 
    330730        unset EXT 
    331731        case %f in 
    332             *.Z)   EXT=Z;; 
    333             *.bz2) EXT=bz2;; 
    334             *.gz)  EXT=gz;; 
    335             *.tgz) EXT=tgz;; 
    336             *.tpz) EXT=tpz;; 
    337             *.z)   EXT=z;; 
     732            *.Z) 
     733                EXT=Z;; 
     734            *.bz2) 
     735                EXT=bz2;; 
     736            *.gz) 
     737                EXT=gz;; 
     738            *.tgz) 
     739                EXT=tgz;; 
     740            *.tpz) 
     741                EXT=tpz;; 
     742            *.z) 
     743                EXT=z;; 
    338744        esac 
    339745        case "$EXT" in 
    340             bz2|Z|gz|z) D=`basename %f ."$EXT"`;; 
    341             tgz|tpz)    D=`basename %f ."$EXT"`.tar;; 
     746            bz2|Z|gz|z) 
     747                D="`basename %f ."$EXT"`";; 
     748            tgz|tpz) 
     749                D="`basename %f ."$EXT"`.tar";; 
    342750        esac 
    343751        if [ "$EXT" = "bz2" ]; then 
    344752            bunzip2 -v %f 
    c Convert gz<->bz2, tar.gz<->tar.bz2 & tgz->tar.bz2 
    349757        fi 
    350758 
    351759+ t t 
    352 C  Convert gz<->bz2, tar.gz<->tar.bz2 & tgz->tar.bz2 
     760c  Convert gz<->bz2, tar.gz/tgz<->tar.bz2 tagged files 
    353761        for i in %t ; do 
    354762            unset D 
    355763            unset EXT 
    356764            case "$i" in 
    357                 *.Z)   EXT=Z;; 
    358                 *.bz2) EXT=bz2;; 
    359                 *.gz)  EXT=gz;; 
    360                 *.tgz) EXT=tgz;; 
    361                 *.tpz) EXT=tpz;; 
    362                 *.z)   EXT=z;; 
     765                *.Z) 
     766                    EXT=Z;; 
     767                *.bz2) 
     768                    EXT=bz2;; 
     769                *.gz) 
     770                    EXT=gz;; 
     771                *.tgz) 
     772                    EXT=tgz;; 
     773                *.tpz) 
     774                    EXT=tpz;; 
     775                *.z) 
     776                    EXT=z;; 
    363777            esac 
    364778            case "$EXT" in 
    365                 bz2|Z|gz|z) D=`basename "$i" ."$EXT"`;; 
    366                 tgz|tpz)    D=`basename "$i" ."$EXT"`.tar;; 
     779                bz2|Z|gz|z) 
     780                    D=`basename "$i" ."$EXT"`;; 
     781                tgz|tpz) 
     782                    D=`basename "$i" ."$EXT"`.tar;; 
    367783            esac 
    368784            if [ "$EXT" = "bz2" ]; then 
    369785                bunzip2 -v "$i" 
    C Convert gz<->bz2, tar.gz<->tar.bz2 & tgz->tar.bz2 
    374790            fi 
    375791        done 
    376792 
    377 + x /usr/bin/open | x /usr/local/bin/open & x /bin/sh 
    378 o  Open next a free console 
    379         open -s -- sh 
     793+ ! t t 
     794j  Convert any->xz (using 7z) 
     795        P7ZIP=`which 7zz 2>/dev/null` || P7ZIP=`which 7z 2>/dev/null` || P7ZIP=`which 7za 2>/dev/null` 
     796        i=%f 
     797        case "$i" in 
     798            *.Z|*.bz2|*.gz|*.z|*.Z|*.bz2|*.tar.rar|*.tar.7z|*.zst) 
     799                EXT=xz;; 
     800            *.tgz|*.tbz2|*.tzst|*.tpz) 
     801                EXT=tar.xz;; 
     802            *) 
     803                echo "Unsupported compression."; exit 255;; 
     804        esac 
     805        ${P7ZIP} e -so "$i" | ${P7ZIP} a -si -txz -m0=lzma2 -ms=on $COMPRESS_OPTS_7Z "${i%.*}.$EXT" && [ -s "${i%.*}.$EXT" ] && rm -vf "${i}" 
     806 
     807+ t t 
     808j  Convert any->xz (using 7z) 
     809        P7ZIP=`which 7zz 2>/dev/null` || P7ZIP=`which 7z 2>/dev/null` || P7ZIP=`which 7za 2>/dev/null` 
     810        for i in %t ; do 
     811            case "$i" in 
     812                *.Z|*.bz2|*.gz|*.z|*.Z|*.bz2|*.tar.rar|*.tar.7z|*.zst) 
     813                    EXT=xz;; 
     814                *.tgz|*.tbz2|*.tzst|*.tpz|*.txz) 
     815                    EXT=tar.xz;; 
     816                *) 
     817                    echo "Unsupported compression."; exit 255;; 
     818            esac 
     819            ${P7ZIP} e -so "$i" | ${P7ZIP} a -si -txz -m0=lzma2 -ms=on $COMPRESS_OPTS_7Z "${i%.*}.$EXT" && [ -s "${i%.*}.$EXT" ] && rm -vf "${i}" 
     820        done 
     821 
     822+ ! t t 
     823J  Convert any->zst (using 7z+zstd) 
     824        P7ZIP=`which 7zz 2>/dev/null` || P7ZIP=`which 7z 2>/dev/null` || P7ZIP=`which 7za 2>/dev/null` 
     825        i=%f 
     826        case "$i" in 
     827            *.Z|*.bz2|*.gz|*.z|*.Z|*.bz2|*.tar.rar|*.tar.7z|*.xz) 
     828                EXT=zst;; 
     829            *.tgz|*.tbz2|*.tzst|*.tpz|*.txz) 
     830                EXT=tar.zst;; 
     831            *) 
     832                echo "Unsupported compression."; exit 255;; 
     833        esac 
     834        ${P7ZIP} e -so "$i" | zstd $COMPRESS_OPTS_ZSTD - -o "${i%.*}.$EXT" && [ -s "${i%.*}.$EXT" ] && rm -vf "${i}" 
     835 
     836+ t t 
     837J  Convert any->zst (Using 7z+zstd) 
     838        P7ZIP=`which 7zz 2>/dev/null` || P7ZIP=`which 7z 2>/dev/null` || P7ZIP=`which 7za 2>/dev/null` 
     839    for i in %t ; do 
     840        case "$i" in 
     841        *.Z|*.bz2|*.gz|*.z|*.Z|*.bz2|*.tar.rar|*.tar.7z|*.xz) 
     842            EXT=zst;; 
     843        *.tgz|*.tbz2|*.tzst|*.tpz|*.txz) 
     844            EXT=tar.zst;; 
     845        *) 
     846            echo "Unsupported compression."; exit 255;; 
     847        esac 
     848        ${P7ZIP} e -so "$i" | zstd $COMPRESS_OPTS_ZSTD - -o "${i%.*}.$EXT" && [ -s "${i%.*}.$EXT" ] && rm -vf "${i}" 
     849    done 
     850 
     851+ t t 
     852i  Compare (mcdiff) tagged files/directories 
     853        mcdiff %t 
     854 
     855+ ! t t 
     856i  Compare (mcdiff) opposite selected files 
     857        if [ %d/%f = %D/%F ]; then 
     858            echo "The two files must be different" 
     859            exit 1 
     860        fi 
     861        mcdiff %d/%f %D/%F 
     862 
     863+ ! t t 
     864s  Calculate SHA256 checksum of the current file 
     865        if which -s shasum; then SHACMD="shasum -a256"; else SHACMD="sha256sum"; fi 
     866        $SHACMD %f 
     867 
     868+ t t 
     869s  Calculate SHA256 checksum of on the tagged files 
     870        for i in %t ; do 
     871            if which -s shasum; then SHACMD="shasum -a256"; else SHACMD="sha256sum"; fi 
     872            $SHACMD "$i" 
     873        done 
     874 
     875+ ! t t 
     876S  Calculate SHA512 checksum of the current file 
     877        if which -s shasum; then SHACMD="shasum -a512"; else SHACMD="sha512sum"; fi 
     878        $SHACMD %f 
     879 
     880+ t t 
     881S  Calculate SHA512 checksum of on the tagged files 
     882        for i in %t ; do 
     883            if which -s shasum; then SHACMD="shasum -a512"; else SHACMD="sha512sum"; fi 
     884            $SHACMD "$i" 
     885        done 
     886 
     887+ ! t t 
     888f  Check file type 
     889        file %f 
     890 
     891+t t 
     892f  Check files type 
     893        for i in %t ; do 
     894            file "$i" 
     895        done 
     896 
     897+ ! t t 
     898F  Rename objects in current direcroty using vidir 
     899        cd %d 
     900        VISUAL=mcedit vidir 
     901 
     902+ t t 
     903F  Rename tagged file/directories using vidir 
     904        cd %d 
     905        VISUAL=mcedit vidir %t 
     906 
     907h  Fetch git remote changes 
     908        echo -n "Choose remote to fetch (empty for all) [$(git remote | tr '\n' ' ')]:" 
     909        read REMOTE 
     910        [ "$remote"x = x ] && remote="--all" 
     911        git fetch $REMOTE 
     912 
     913H  Fetch git remote changes (verbose) 
     914        echo "Available remotes:" 
     915        git remote 
     916        echo -n "Name of remote to fetch (empty for all): " 
     917        read REMOTE 
     918        [ "$remote"x = x ] && remote="--all" 
     919        GIT_TRACE=2 git fetch --verbose $REMOTE 
     920 
     921g  Show git log 
     922        git log --graph --abbrev-commit --date=relative --pretty=format:'%%Cred%%h%%Creset %%C(yellow)[%%an]%%Creset -%%C(cyan)%%d%%Creset %%s - %%Cgreen%%ch %%Cblue(%%cr)%%Creset' 
     923 
     924G  Show git log (include remotes) 
     925        git log --graph --abbrev-commit --date=relative --all --pretty=format:'%%Cred%h%Creset %%C(yellow)[%%an]%%Creset -%%C(cyan)%%d%%Creset %%s - %%Cgreen%%ch %%Cblue(%%cr)%%Creset' 
     926 
     927n  Run NCurses Disk Usage (ncdu -x) 
     928        ncdu -x 
     929 
     930+ f \.ncdu$ & t r & ! t t 
     931N  View NCurses Disk Usage file (ncdu) 
     932        ncdu -f %f 
     933 
     934+ ! t t 
     935N  Create current directoy index file (ncdu) 
     936        i="../$(basename `pwd`).ncdu" 
     937        ncdu -o "$i" 
     938 
     939q  Tail log file 
     940        tail -f %f 
     941 
     942Q  Tail (follow) log file 
     943        tail -F %f