Ticket #4571: 0001-menu-drop-archaic-and-add-modern-archival-options.patch

File 0001-menu-drop-archaic-and-add-modern-archival-options.patch, 19.4 KB (added by eugenesan, 3 months ago)
  • misc/mc.menu.in

    From c878596f40f5b5edc00ffac5eedf1cdd8f860d89 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 and add modern archival options
    
    ---
     misc/mc.menu.in | 417 +++++++++++++++++++++++++++++++++++-------------
     1 file changed, 303 insertions(+), 114 deletions(-)
    
    diff --git a/misc/mc.menu.in b/misc/mc.menu.in
    index 51880de7e..3a7d22907 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: b, q, z 
    2325############################################################################## 
    2426 
    2527+ ! t t 
    shell_patterns=0 
    4648 
    47492  Call the info hypertext browser 
    4850        info 
     51= t d 
     52y  Pack the current subdirectory (tar) 
     53        Pwd=`basename %d /` 
     54        echo -n "Name of the tarball (without extension) [$Pwd]: " 
     55        read tar 
     56        [ "$tar"x = x ] && tar="$Pwd" 
     57        cd .. && \ 
     58        tar cf "$tar.tar" "$Pwd" && \ 
     59        echo "../$tar.tar created." 
    4960 
    5061= t d 
    51623  Compress the current subdirectory (tar.gz) 
    shell_patterns=0 
    8495        tar cf - "$Pwd" | xz -f > "$tar.tar.xz" && \ 
    8596        echo "../$tar.tar.xz created." 
    8697 
     98^  Compress the current subdirectory (tar.xz using 7z) 
     99        Pwd=`basename %d /` 
     100        echo -n "Name of the compressed file (without extension) [$Pwd]: " 
     101        read tar 
     102        [ "$tar"x = x ] && tar="$Pwd" 
     103        cd .. && \ 
     104        tar cf - "$Pwd" | 7z a -si -txz -m0=lzma2 -ms=on "$tar.tar.xz" 
     105        echo "../$tar.tar.xz created." 
     106 
    871077  Compress the current subdirectory (tar.zst) 
    88108        Pwd=`basename %d /` 
    89109        echo -n "Name of the compressed file (without extension) [$Pwd]: " 
    shell_patterns=0 
    102122        tar cf - "$Pwd" | lzop -f > "$tar.tar.lzo" && \ 
    103123        echo "../$tar.tar.lzo created." 
    104124 
     1259  Compress the current subdirectory (7z) 
     126        Pwd=`basename %d /` 
     127        echo -n "Name of the compressed file (without extension) [$Pwd]: " 
     128        read tar 
     129        [ "$tar"x = x ] && tar="$Pwd" 
     130        cd .. && \ 
     131        nice ionice -c3 7z a -m0=lzma2 "$tar.7z" "$tar" 
     132        echo "../$tar.7z created." 
     133 
     134(  Compress & Encrypt the current subdirectory (7z) 
     135        Pwd=`basename %d /` 
     136        echo -n "Name of the compressed file (without extension) [$Pwd]: " 
     137        read tar 
     138        [ "$tar"x = x ] && tar="$Pwd" 
     139        cd .. && \ 
     140        nice ionice -c3 7z a -p -mhe -m0=lzma2 "$tar.7z" "$tar" 
     141        echo "../$tar.7z created." 
     142 
    105143= f \.c$ & t r 
    106144+ f \.c$ & t r & ! t t 
    107145c  Compile and link current .c file 
    A Append files to opposite files 
    118156        done 
    119157 
    120158+ t r & ! t t 
    121 d  Delete file if a copy exists in the other directory. 
     159d  Delete file if a copy exists in the other directory 
    122160        if [ %d = %D ]; then 
    123             echo "The two directories must be different." 
     161            echo "The two directories must be different" 
    124162            exit 1 
    125163        fi 
    126164        if [ -f %D/%f ]; then        # if two of them, then 
    127165            if cmp -s %D/%f %f; then 
    128166                rm %f && echo %f": DELETED." 
    129167            else 
    130                 echo %f" and "%D/%f" differ: NOT deleted." 
     168                echo %f" and "%D/%f" differ: NOT deleted" 
    131169                echo -n "Press RETURN " 
    132170                read key 
    133171            fi 
    134172        else 
    135             echo %f": No copy in "%D/%f": NOT deleted." 
     173            echo %f": No copy in "%D/%f": NOT deleted" 
    136174        fi 
    137175 
    138176+ t t 
    139 D  Delete tagged files if a copy exists in the other directory. 
     177D  Delete tagged files if a copy exists in the other directory 
    140178        if [ %d = %D ]; then 
    141             echo "The two directories must be different." 
     179            echo "The two directories must be different" 
    142180            exit 1 
    143181        fi 
    144182        for i in %t ; do 
    D Delete tagged files if a copy exists in the other directory. 
    148186                if [ "$SUM1" = "$SUM2" ]; then 
    149187                    rm "$i" && echo "${i}: DELETED." 
    150188                else 
    151                     echo "$i and "%D"/$i differ: NOT deleted." 
     189                    echo "$i and "%D"/$i differ: NOT deleted" 
    152190                fi 
    153191            else 
    154                 echo "$i has no copy in "%D": NOT deleted." 
     192                echo "$i has no copy in "%D": NOT deleted" 
    155193            fi 
    156194        done 
    157195 
    158 m  View manual page 
     196m  View manual page (native) 
    159197        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 
     198        man "$MAN" 
    183199 
    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 
     200M  View manual page 
     201        MAN=%{Enter manual name} 
     202        %view{ascii,nroff} MANROFFOPT='@MAN_FLAGS@' MAN_KEEP_FORMATTING=1 man -P cat "$MAN" 
    203203 
    204204= t r 
    205205+ ! t t 
    R Copy files to remote host (no error checking) 
    218218        read Dir 
    219219        rcp -pr %u "${Host}:${Dir}" 
    220220 
    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 
     221+ ! t t 
     222t  Test compressed archive/image using 7z 
     223        i=%f 
     224        7z t -bb3 $i 
    225225 
    226 =+ f ^part | f ^Part | f uue & t r 
    227226+ 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"." 
    237         fi 
    238         echo "Please test the output file before deleting anything." 
     227t  Test compressed archives/images using 7z 
     228        for i in %t ; do 
     229                7z t -bb3 $i 
     230        done 
     231 
     232+ ! t t 
     233T  List compressed archive/image using 7z 
     234        i=%f 
     235        7z l $i 
     236 
     237+ t t 
     238T  List compressed archives/images using 7z 
     239        for i in %t ; do 
     240                7z l $i 
     241        done 
     242 
     243+ ! t t 
     244e  Extract compressed archive/image using 7z 
     245        i=%f 
     246        7z x -bb3 "$i" 
     247 
     248+ t t 
     249e  Extract compressed archives/images using 7z 
     250        for i in %t ; do 
     251                7z x -bb3 "$i" 
     252        done 
    239253 
    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 
     254+ ! t t 
     255E  Extract compressed archive/image to subdirs using 7z 
     256        i="%f" 
     257        d=`basename $i` 
     258        D="${d%.*}" 
     259        mkdir -p "$D" 
     260        7z x -bb3 -o"$D" "$i" 
     261 
     262+ t t 
     263E  Extract compressed archives/images to subdirs using 7z 
     264        for i in %t ; do 
     265                d=`basename $i` 
     266                D="${d%.*}" 
     267                mkdir -p "$D" 
     268                7z x -bb3 -o"$D" "$i" 
     269        done 
     270 
     271=+ 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 
    241272x  Extract the contents of a compressed tar file 
    242273        unset PRG 
    243274        case %f in 
    244             *.tar.7z)   PRG="7za e -so";; 
    245             *.tar.bz2)  PRG="bunzip2 -c";; 
     275            *.tar)   PRG="";; 
     276            *.tar.7z)   PRG="7z e -so";; 
     277            *.tar.bz2|*.tbz2)  PRG="bunzip2 -c";; 
    246278            *.tar.gz|*.tar.z|*.tgz|*.tpz|*.tar.Z) PRG="gzip -dc";; 
    247279            *.tar.lz)   PRG="lzip -dc";; 
    248280            *.tar.lz4)  PRG="lz4 -dc";; 
    249281            *.tar.lzma) PRG="lzma -dc";; 
    250282            *.tar.lzo)  PRG="lzop -dc";; 
    251             *.tar.xz)   PRG="xz -dc";; 
    252             *.tar.zst)  PRG="zstd -dc";; 
     283            *.tar.xz|*.txz)   PRG="xz -dc";; 
     284            *.tar.zst|*.tzst)  PRG="zstd -dc";; 
    253285            *)          exit 1;; 
    254286        esac 
    255         $PRG %f | tar xvf - 
     287        if [ -n "$PRG" ]; then 
     288            %f | tar xvf - 
     289        else 
     290            tar -xf %f 
     291        fi 
    256292 
    257 = t r 
    258 + ! t t 
    259 y  Gzip or gunzip current file 
    260         unset DECOMP 
     293+ 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 r & ! t t 
     294X  Extract compressed tar archive to subdirectory 
     295        unset D 
     296        unset PRG 
    261297        case %f in 
    262             *.gz|*.[zZ]) DECOMP=-d;; 
     298            *.tar)   PRG=""; D=`basename %f .tar`;; 
     299            *.tar.7z)   PRG="7z e -so"; D=`basename %f .tar.7z`;; 
     300            *.tar.bz2)  PRG="bunzip2 -c"; D=`basename %f .tar.bz2`;; 
     301            *.tbz2)  PRG="bunzip2 -c"; D=`basename %f .tbz2`;; 
     302            *.tar.gz) PRG="gzip -dc"; D=`basename %f .tar.gz`;; 
     303            *.tar.z) PRG="gzip -dc"; D=`basename %f .tar.z`;; 
     304            *.tgz) PRG="gzip -dc"; D=`basename %f .tgz`;; 
     305            *.tpz) PRG="gzip -dc"; D=`basename %f .tpz`;; 
     306            *.tar.Z) PRG="gzip -dc"; D=`basename %f .tar.Z`;; 
     307            *.tar.lz)   PRG="lzip -dc"; D=`basename %f .tar.lz`;; 
     308            *.tar.lz4)  PRG="lz4 -dc"; D=`basename %f .tar.lz4`;; 
     309            *.tar.lzma) PRG="lzma -dc"; D=`basename %f .tar.lzma`;; 
     310            *.tar.lzo)  PRG="lzop -dc"; D=`basename %f .tar.lzo`;; 
     311            *.tar.xz)   PRG="xz -dc"; D=`basename %f .tar.xz`;; 
     312            *.txz)   PRG="xz -dc"; D=`basename %f .txz`;; 
     313            *.tar.zst)  PRG="zstd -dc"; D=`basename %f .tar.zst`;; 
     314            *.tzst)  PRG="zstd -dc"; D=`basename %f .tzst`;; 
     315            *.tar.F)   PRG="freeze -dc"; D=`basename %f .tar.F`;; 
     316            *) echo "Unsupported compression,"; exit 255;; 
    263317        esac 
    264         # Do *not* add quotes around $DECOMP! 
    265         gzip $DECOMP -v %f 
     318        if [ -n "$PRG" ]; then 
     319            mkdir "$D"; cd "$D" && $PRG ../%f | tar xvf - 
     320        else 
     321            mkdir "$D"; cd "$D" && tar xvf ../%f 
     322        fi 
    266323 
    267324+ t t 
    268 Y  Gzip or gunzip tagged files 
     325X  Extract compressed tar archives to subdirectories 
    269326        for i in %t ; do 
    270             unset DECOMP 
     327            unset D 
     328            unset PRG 
    271329            case "$i" in 
    272                 *.gz|*.[zZ]) DECOMP=-d;; 
     330                *.tar)   PRG=""; D=`basename %f .tar`;; 
     331                *.tar.7z)   PRG="7z e -so"; D=`basename %f .tar.7z`;; 
     332                *.tar.bz2)  PRG="bunzip2 -c"; D=`basename %f .tar.bz2`;; 
     333                *.tbz2)  PRG="bunzip2 -c"; D=`basename %f .tbz2`;; 
     334                *.tar.gz) PRG="gzip -dc"; D=`basename %f .tar.gz`;; 
     335                *.tar.z) PRG="gzip -dc"; D=`basename %f .tar.z`;; 
     336                *.tgz) PRG="gzip -dc"; D=`basename %f .tgz`;; 
     337                *.tpz) PRG="gzip -dc"; D=`basename %f .tpz`;; 
     338                *.tar.Z) PRG="gzip -dc"; D=`basename %f .tar.Z`;; 
     339                *.tar.lz)   PRG="lzip -dc"; D=`basename %f .tar.lz`;; 
     340                *.tar.lz4)  PRG="lz4 -dc"; D=`basename %f .tar.lz4`;; 
     341                *.tar.lzma) PRG="lzma -dc"; D=`basename %f .tar.lzma`;; 
     342                *.tar.lzo)  PRG="lzop -dc"; D=`basename %f .tar.lzo`;; 
     343                *.tar.xz)   PRG="xz -dc"; D=`basename %f .tar.xz`;; 
     344                *.txz)   PRG="xz -dc"; D=`basename %f .txz`;; 
     345                *.tar.zst)  PRG="zstd -dc"; D=`basename %f .tar.zst`;; 
     346                *.tzst)  PRG="zstd -dc"; D=`basename %f .tzst`;; 
     347                *.tar.F)   PRG="freeze -dc"; D=`basename %f .tar.F`;; 
     348                *) echo "Unsupported compression,"; exit 255;; 
    273349            esac 
    274             gzip $DECOMP -v "$i" 
     350           if [ -n "$PRG" ]; then 
     351                mkdir "$D"; cd "$D" && $PRG ../%f | tar xvf - 
     352           else 
     353                mkdir "$D"; cd "$D" && tar xvf ../%f 
     354           fi 
    275355        done 
    276356 
     357= t r 
    277358+ ! t t 
    278 b  Bzip2 or bunzip2 current file 
     359u  Compress-UnCompress (Gzip, Bzip2, XZ) current file 
    279360        unset DECOMP 
     361        unset DEPROG 
    280362        case %f in 
    281             *.bz2) DECOMP=-d;; 
     363            *.gz|*.[zZ]) DEPROG=gzip; DECOMP=-d;; 
     364            *.bz2) DEPROG=bzip2; DECOMP=-d;; 
     365            *.xz) DEPROG=xz; DECOMP=-d;; 
    282366        esac 
    283         bzip2 $DECOMP -v %f 
     367        # Do *not* add quotes around $DECOMP! 
     368        $DEPROG $DECOMP -v %f 
    284369 
    285370+ t t 
    286 B  Bzip2 or bunzip2 tagged files 
     371u  Compress-UnCompress (Gzip, Bzip2, XZ) tagged files 
    287372        for i in %t ; do 
    288373            unset DECOMP 
     374            unset DEPROG 
    289375            case "$i" in 
    290                 *.bz2) DECOMP=-d;; 
     376                *.gz|*.[zZ]) DEPROG=gzip; DECOMP=-d;; 
     377                *.bz2) DEPROG=bzip2; DECOMP=-d;; 
     378                *.xz) DEPROG=xz; DECOMP=-d;; 
    291379            esac 
    292             bzip2 $DECOMP -v "$i" 
     380            $DEPROG $DECOMP -v "$i" 
    293381        done 
    294382 
    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 
     383+ ! t t 
     384U  Compress-UnCompress XZ (using 7z) current file 
    299385        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`;; 
     386            *.xz) xz -d -v %f;; 
     387            *) 7z -txz -m0=lzma2 -ms=on a %f.xz %f && test -r %f.xz && rm -vf %f;; 
    307388        esac 
    308         mkdir "$D"; cd "$D" && ("$1" "$2" ../%f | tar xvf -) 
    309389 
    310390+ t t 
    311 Z  Extract compressed tar files to subdirectories 
     391U  Compress-UnCompress XZ (using 7z) tagged files 
    312392        for i in %t ; do 
    313             set gzip -dc 
    314             unset D 
     393            unset DECOMP 
    315394            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 -) 
     395                *.xz) xz -d -v "$i";; 
     396                *) 7z -txz -m0=lzma2 -ms=on a "$i.xz" "$i" && test -r "$i.xz" && rm -vf "$i";; 
     397            esac 
    325398        done 
    326399 
    327400+ f \.gz$ | f \.tgz$ | f \.tpz$ | f \.Z$ | f \.z$ | f \.bz2$ & t r & ! t t 
    C Convert gz<->bz2, tar.gz<->tar.bz2 & tgz->tar.bz2 
    374447            fi 
    375448        done 
    376449 
     450+ ! t t 
     451j  Convert any->xz (using 7z) 
     452        i=%f 
     453        case "$i" in 
     454                *.Z|*.bz2|*.gz|*.z|*.Z|*.bz2|*.tar.rar|*.tar.7z|*.zst) EXT=xz;; 
     455                *.tgz|*.tbz2|*.tzst|*.tpz) EXT=tar.xz;; 
     456                *) echo "Unsupported compression."; exit 255;; 
     457        esac 
     458        7z -so e ${i} | 7z -txz -m0=lzma2 -ms=on -si a ${i%.*}.${EXT} 
     459 
     460+ t t 
     461j  Convert any->xz (using 7z) 
     462        for i in %t ; do 
     463                case "$i" in 
     464                        *.Z|*.bz2|*.gz|*.z|*.Z|*.bz2|*.tar.rar|*.tar.7z|*.zst) EXT=xz;; 
     465                        *.tgz|*.tbz2|*.tzst|*.tpz|*.txz) EXT=tar.xz;; 
     466                        *) echo "Unsupported compression."; exit 255;; 
     467                esac 
     468                7z -so e ${i} | 7z -txz -m0=lzma2 -ms=on -si a ${i%.*}.${EXT} 
     469        done 
     470 
     471+ ! t t 
     472J  Convert any->zst (using 7z+zstd) 
     473        i=%f 
     474        case "$i" in 
     475                *.Z|*.bz2|*.gz|*.z|*.Z|*.bz2|*.tar.rar|*.tar.7z|*.xz) EXT=zst;; 
     476                *.tgz|*.tbz2|*.tzst|*.tpz|*.txz) EXT=tar.zst;; 
     477                *) echo "Unsupported compression."; exit 255;; 
     478        esac 
     479        7z -so e ${i} | zstd --long --ultra -22 - -o ${i%.*}.${EXT} 
     480 
     481+ t t 
     482J  Convert any->zst (Using 7z+zstd) 
     483        for i in %t ; do 
     484                case "$i" in 
     485                        *.Z|*.bz2|*.gz|*.z|*.Z|*.bz2|*.tar.rar|*.tar.7z|*.xz) EXT=zst;; 
     486                        *.tgz|*.tbz2|*.tzst|*.tpz|*.txz) EXT=tar.zst;; 
     487                        *) echo "Unsupported compression."; exit 255;; 
     488                esac 
     489                7z -so e ${i} | zstd --long --ultra -22 - -o ${i%.*}.${EXT} 
     490        done 
     491 
     492+ t t 
     493i  Compare (mcdiff) tagged files/directories 
     494        mcdiff %t 
     495 
     496+ ! t t 
     497i  Compare (mcdiff) opposite selected files 
     498        if [ "%d/%f" = "%D/%F" ]; then 
     499        echo "The two files must be different" 
     500        exit 1 
     501        fi 
     502        mcdiff %d/%f %D/%F 
     503+ ! t t 
     504s  Calculate SHA256 checksum of the current file 
     505        sha256sum %f 
     506 
     507+ t t 
     508s  Calculate SHA256 checksum of on the tagged files 
     509        for i in %t ; do 
     510            sha256sum "$i" 
     511        done 
     512 
     513+ ! t t 
     514 
     515S  Calculate SHA512 checksum of the current file 
     516        sha512sum %f 
     517 
     518+ t t 
     519S  Calculate SHA512 checksum of on the tagged files 
     520        for i in %t ; do 
     521            sha512sum "$i" 
     522        done 
     523 
     524+ ! t t 
     525v  Rename objects in current direcroty using vidir 
     526        VISUAL=mcedit vidir %d 
     527 
     528+ t t 
     529v  Rename tagged file/directories using vidir 
     530        VISUAL=mcedit vidir %t 
     531 
     532h  Fetch git remote changes 
     533        echo -n "Choose remote to fetch (empty for all) [$(git remote | tr '\n' ' ')]:" 
     534        read remote 
     535        [ "$remote"x = x ] && remote="--all" 
     536        git fetch ${remote} 
     537 
     538H  Fetch git remote changes (verbose) 
     539        echo "Available remotes:" 
     540        git remote 
     541        echo -n "Name of remote to fetch (empty for all): " 
     542        read remote 
     543        [ "$remote"x = x ] && remote="--all" 
     544        GIT_TRACE=2 git fetch --verbose ${remote} 
     545 
     546g  Show git log 
     547        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' 
     548 
     549G  Show git log (include remotes) 
     550        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' 
     551 
     552n  Run NCurses Disk Usage (ncdu -x) 
     553        ncdu -x 
     554 
     555+ f \.ncdu$ & t r & ! t t 
     556N  View NCurses Disk Usage (ncdu) file 
     557        ncdu -f %f 
     558 
     559y  Tail log file 
     560        tail -f %f 
     561 
     562Y  Tail (follow) log file 
     563        tail -F %f 
     564 
    377565+ x /usr/bin/open | x /usr/local/bin/open & x /bin/sh 
    378566o  Open next a free console 
    379567        open -s -- sh 
     568