Новая версия mc или куда все подевалось (Из меню пользователя исчела опция "x", распаковки архивов)

SLAX, Deep Style, ZenWalk

Модератор: Модераторы разделов

Ответить
Аватара пользователя
Archangel
Сообщения: 431
ОС: Slackware64-14.1

Новая версия mc или куда все подевалось

Сообщение Archangel »

Раньше довольно удобно было распаковывать любой вид архива из mc, по F2->x, теперь же данной опции нет. Есть распокавка tar и gzip. Но ведь "x" распаковывал все, включая rar и zip. Как можно вернуть и работать как прежде или куда это счастье теперь перенесли?
Хотя, что странно, в /etc/mc/mc.menu вроде все прописано:

Код: Выделить всё

shell_patterns=0
+ ! t t
@       Do something on the current file
        CMD=%{Enter command}
        $CMD %f

+ t t
@       Do something on the tagged files
        set %t; CMD=%{Enter command}
        while [ -n "$1" ]; do
          $CMD "$1"
          shift
        done


0       Edit a bug report and send it to root
        I=`mktemp "${MC_TMPDIR:-/tmp}/mail.XXXXXX"` || exit 1
        ${EDITOR-vi} "$I"
        test -r $I && mail root < $I
        rm -f "$I"

=+ f \.1$ | f \.3$ | f \.4$ | f \.5$ | f \.6$ | f \.7$ | f \.8$ | f \.man$ & t r
1       Display the file with roff -man
        nroff -man %f | less

2       Call the info hypertext browser
        info

= t d
3       Compress the current subdirectory (tar.gz)
        Pwd=`basename %d /`
        echo -n "Name of the compressed file (without extension) [$Pwd]: "
        read tar
        if [ "$tar"x = x ]; then tar="$Pwd"; fi
        cd .. && \
        tar cf - "$Pwd" | gzip -f9 > "$tar.tar.gz" && \
        echo "../$tar.tar.gz created."

4       Compress the current subdirectory (tar.bz2)
        Pwd=`basename %d /`
        echo -n "Name of the compressed file (without extension) [$Pwd]: "
        read tar
        if [ "$tar"x = x ]; then tar="$Pwd"; fi
        cd .. && \
        tar cf - "$Pwd" | bzip2 -f > "$tar.tar.bz2" && \
        echo "../$tar.tar.bz2 created."

5       Compress the current subdirectory (tar.p7)
        Pwd=`basename %d /`
        echo -n "Name of the compressed file (without extension) [$Pwd]: "
        read tar
        if [ "$tar"x = x ]; then tar="$Pwd"; fi
        cd .. && \
        tar cf - "$Pwd" | 7za a -si "$tar.tar.7z" && \
        echo "../$tar.tar.7z created."

6       Compress the current subdirectory (tar.lzma)
        Pwd=`basename %d /`
        echo -n "Name of the compressed file (without extension) [$Pwd]: "
        read tar
        if [ "$tar"x = x ]; then tar="$Pwd"; fi
        cd .. && \
        tar cf - "$Pwd" | lzma -f > "$tar.tar.lzma" && \
        echo "../$tar.tar.lzma created."

7       Compress the current subdirectory (tar.lz)
        Pwd=`basename %d /`
        echo -n "Name of the compressed file (without extension) [$Pwd]: "
        read tar
        if [ "$tar"x = x ]; then tar="$Pwd"; fi
        cd .. && \
        tar cf - "$Pwd" | lzip -f > "$tar.tar.lz" && \
        echo "../$tar.tar.lz created."

8       Compress the current subdirectory (tar.xz)
        Pwd=`basename %d /`
        echo -n "Name of the compressed file (without extension) [$Pwd]: "
        read tar
        if [ "$tar"x = x ]; then tar="$Pwd"; fi
        cd .. && \
        tar cf - "$Pwd" | xz -f > "$tar.tar.xz" && \
        echo "../$tar.tar.xz created."

= f \.c$ & t r
+ f \.c$ & t r & ! t t
        Compile and link current .c file
        make `basename %f .c` 2>/dev/null || cc -O -o `basename %f .c` %f

+ t r & ! t t
a       Append file to opposite
        cat %f >> %D/%f

+ t t
A       Append files to opposite files
        set %t
        while [ -n "$1" ]; do
          cat "$1" >> "%D/$1"
          shift
        done

+ t r & ! t t
d       Delete file if a copy exists in the other directory.
        if [ "%d" = "%D" ]; then
          echo "The two directories must be different."
          exit 1
        fi
        if [ -f %D/%f ]; then        # if two of them, then
          if cmp -s %D/%f %f; then
            rm %f && echo "%f: DELETED."
          else
            echo "%f and %D/%f differ: NOT deleted."
            echo -n "Press RETURN "
            read key
          fi
        else
          echo "%f: No copy in %D/%f: NOT deleted."
        fi

+ t t
D       Delete tagged files if a copy exists in the other directory.
        if [ "%d" = "%D" ]; then
          echo "The two directores must be different."
          exit 1
        fi
        for i in %t
        do
          if [ -f "%D/$i" ]; then
            SUM1="`sum $i`"
            SUM2="`sum %D/$i`"
            if [ "$SUM1" = "$SUM2" ]; then
              rm "$i" && echo "${i}: DELETED."
            else
              echo "$i and %D/$i differ: NOT deleted."
            fi
          else
            echo "%f has no copy in %D/%f: NOT deleted."
          fi
        done

m       View manual page
        MAN=%{Enter manual name}
        %view man -P cat $MAN

= f \.gz$ & t r
+ ! t t
n       Inspect gzip'ed newsbatch file
        dd if=%f bs=1 skip=12|zcat|${PAGER-more}
        # assuming the cunbatch header is 12 bytes long.

= t r &
+ ! t t
h       Strip headers from current newsarticle
        CHECK=`awk '{print $1 ; exit}' %f` 2>/dev/null
        case "$CHECK" in
          Newsgroups:|Path:)
              I=`mktemp "${MC_TMPDIR:-/tmp}/news.XXXXXX"` || exit 1
              cp %f "$I" && sed '/^'"$CHECK"' /,/^$/d' "$I" > %f
              [ "$?" = "0" ] && rm "$I"
              echo "%f: header removed."
                ;;
          *)
              echo "%f is not a news article."
                ;;
        esac

+ t t
H       Strip headers from the marked newsarticles
        set %t
        while [ -n "$1" ]; do
          CHECK=`awk '{print $1 ; exit}' $1` 2>/dev/null
          WFILE=`mktemp "${MC_TMPDIR:-/tmp}/news.XXXXXX"` || exit 1
          case "$CHECK" in
            Newsgroups:|Path:)
              cp "$1" "$WFILE" && sed '/^'"$CHECK"' /,/^$/d' "$WFILE" > "$1"
              if [ "$?" = "0" ]; then
                rm "$WFILE"; echo "$1 header removed. OK."
              else
                echo "Oops! Please check $1 against $WFILE."
              fi
                ;;
            *)
              echo "$1 skipped: Not a news article."
                ;;
          esac
          shift
        done

= t r
+ ! t t
r       Copy file to remote host
        echo -n "To which host?: "
        read Host
        echo -n "To which directory on $Host?: "
        read Dir
        rcp -p %f "${Host}:$Dir"

+ t t
R       Copy files to remote host (no error checking)
        echo -n "Copy files to which host?: "
        read Host
        echo -n "To which directory on $Host? :"
        read Dir
        rcp -pr %u "${Host}:$Dir"

= f \.tex$ & t r
+ f \.tex$ & t r & ! t t
t       Run latex on file and show it with xdvi
        latex %f && xdvi `basename %f .tex`.dvi

=+ f ^part | f ^Part | f uue & t r
+ t t
U       Uudecode marked news articles (needs work)
        set %t
        (
        while [ -n "$1" ]; do # strip headers
          FIRST=`awk '{print $1 ; exit}' "$1"`
          cat "$1" | sed '/^'"$FIRST"' /,/^$/d'; shift
        done
        ) |sed '/^$/d' |sed -n '/^begin 6/,/^end$/p' | uudecode
        if [ "$?" != "0" ]; then
          echo "Cannot decode %t."
        fi
        echo "Please test the output file before deleting anything."

=+ f \.tar\.gz$ | f \.tar\.z$ | f \.tgz$ | f \.tpz$ | f \.tar\.lz$ | f \.tar\.lzma$ | f \.tar\.7z$ | f \.tar\.xz$ | f \.tar\.Z$ | f \.tar\.bz2$ & t r
x       Extract the contents of a compressed tar file
        unset PRG
        case %f in
            *.tar.bz2)
                PRG="bunzip2 -c"
                ;;
            *.tar.gz|*.tar.z|*.tgz|*.tpz|*.tar.Z)
                PRG="gzip -dc"
                ;;
            *.tar.lzma)
                PRG="lzma -dc"
                ;;
            *.tar.lz)
                PRG="lzip -dc"
                ;;
            *.tar.xz)
                PRG="xz -dc"
                ;;
            *.tar.7z)
                PRG="7za e -so"
                ;;
            *)
                exit 1
                ;;
        esac
        $PRG %f | tar xvf -

= t r
+ ! t t
y       Gzip or gunzip current file
        unset DECOMP
        case %f in
            *.gz) DECOMP=-d;;
            *.[zZ]) DECOMP=-d;;
        esac
        gzip $DECOMP -v %f

+ t t
Y       Gzip or gunzip tagged files
        for i in %t
        do
          unset DECOMP
          case "$i" in
            *.gz) DECOMP=-d;;
            *.[zZ]) DECOMP=-d;;
          esac
          gzip $DECOMP -v "$i"
        done

+ ! t t
b       Bzip2 or bunzip2 current file
        unset DECOMP
        case %f in
            *.bz2) DECOMP=-d;;
        esac
        bzip2 $DECOMP -v %f

+ t t
B       Bzip2 or bunzip2 tagged files
        for i in %t
        do
          unset DECOMP
          case "$i" in
            *.bz2) DECOMP=-d;;
          esac
          bzip2 $DECOMP -v "$i"
        done

+ f \.tar.gz$ | f \.tgz$ | f \.tpz$ | f \.tar.Z$ | f \.tar.z$ | f \.tar.bz2$ | f \.tar.F$ & t r & ! t t
z       Extract compressed tar file to subdirectory
        unset D
        set gzip -cd
        case %f in
          *.tar.gz) D="`basename %f .tar.gz`";;
          *.tgz)    D="`basename %f .tgz`";;
          *.tpz)    D="`basename %f .tpz`";;
          *.tar.Z)  D="`basename %f .tar.Z`";;
          *.tar.z)  D="`basename %f .tar.z`";;
          *.tar.bz2) D="`basename %f .tar.bz2`"; set bunzip2 -c ;;
          *.tar.F) D="`basename %f .tar.F`"; set freeze -dc;
        esac
        mkdir "$D"; cd "$D" && ("$1" "$2" ../%f | tar xvf -)

+ t t
Z       Extract compressed tar files to subdirectories
        for i in %t
        do
          set gzip -dc
          unset D
          case "$i" in
            *.tar.gz)  D="`basename $i .tar.gz`";;
            *.tgz)     D="`basename $i .tgz`";;
            *.tpz)     D="`basename $i .tpz`";;
            *.tar.Z)   D="`basename $i .tar.Z`";;
            *.tar.z)   D="`basename $i .tar.z`";;
            *.tar.F)   D="`basename $i .tar.F`"; set freeze -dc;;
            *.tar.bz2) D="`basename $i .tar.bz2`"; set bunzip2 -c;;
          esac
          mkdir "$D"; (cd "$D" && "$1" "$2" "../$i" | tar xvf -)
        done

+ 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
        unset D
        unset EXT
        case %f in
            *.tgz)      EXT=tgz;;
            *.tpz)      EXT=tpz;;
            *.Z)        EXT=Z;;
            *.z)        EXT=z;;
            *.gz)       EXT=gz;;
            *.bz2)      EXT=bz2;;
        esac
        case $EXT in
          tgz|tpz)      D="`basename %f .$EXT`.tar";;
          gz|Z|z)       D="`basename %f .$EXT`";;
          bz2)          D="`basename %f .bz2`";;
        esac
        if [ "$EXT" = "bz2" ]; then
            bunzip2 -v %f ; gzip -f9 -v "$D"
        else
            gunzip -v %f ; bzip2 -v "$D"
        fi

+ t t
C       Convert gz<->bz2, tar.gz<->tar.bz2 & tgz->tar.bz2
        set %t
        while [ -n "$1" ]
        do
          unset D
          unset EXT
          case "$1" in
            *.tgz)      EXT=tgz;;
            *.tpz)      EXT=tpz;;
            *.Z)        EXT=Z;;
            *.z)        EXT=z;;
            *.gz)       EXT=gz;;
            *.bz2)      EXT=bz2;;
          esac
          case $EXT in
              tgz)    D="`basename $1 .tgz`.tar";;
              tpz)    D="`basename $1 .tpz`.tar";;
              gz|Z|z) D="`basename $1 .$EXT`";;
              bz2)    D="`basename $1 .bz2`";;
          esac
          if [ "$EXT" = "bz2" ]; then
            bunzip2 -v "$1"
            gzip -f9 -v "$D"
          else
            gunzip -v "$1"
            bzip2 -v "$D"
          fi
          shift
        done

+ x /usr/bin/open | x /usr/local/bin/open & x /bin/sh
o       Open next a free console
        open -s -- sh

Но по f2, есть опции только: a, d, m, n, h, r, y, b

PS Или это мне приснилось и mc никогда не умел распаковывать rar и zip?
Спасибо сказали:
Аватара пользователя
alv
Бывший модератор
Сообщения: 7274
Статус: Пенсионер в законе
ОС: Cintu
Контактная информация:

Re: Новая версия mc или куда все подевалось

Сообщение alv »

Archangel писал(а):
19.11.2012 02:28
Но ведь "x" распаковывал все, включая rar и zip.

А сами unrar и unzip в системе имеются? Ведь mc, насколько я знаю, сам ничего не распаковывает, а вызывает соответствующие утилиты.
Спасибо сказали:
Аватара пользователя
bormant
Сообщения: 1354

Re: Новая версия mc или куда все подевалось

Сообщение bormant »

Archangel
судя по приведенному фрагменту меню для x реакция на rar/zip отсутствует (=+ набор условий), да и логика построения команды об этом свидетельствует (... | tar xvf -).
Спасибо сказали:
flank'er
Сообщения: 496
Статус: слаковщик
ОС: Slackware64

Re: Новая версия mc или куда все подевалось

Сообщение flank'er »

Но ведь "x" распаковывал все, включая rar и zip. Как можно вернуть и работать как прежде

в файле:
/etc/mc/mc.menu

следующие строки

Код: Выделить всё

 =+ f \.tar\.gz$ | f \.tar\.z$ | f \.tgz$ | f \.tpz$ | f \.tar\.lz$ | f \.tar\.lzma$ | f \.tar\.7z$ | f \.tar\.xz$ | f \.tar\.Z$ | f \.tar\.bz2$ & t r
x       Extract the contents of a compressed tar file
        unset PRG
        case %f in
            *.tar.bz2)
                PRG="bunzip2 -c"
                ;;
            *.tar.gz|*.tar.z|*.tgz|*.tpz|*.tar.Z)
                PRG="gzip -dc"
                ;;
            *.tar.lzma)
                PRG="lzma -dc"
                ;;
            *.tar.lz)
                PRG="lzip -dc"
                ;;
            *.tar.xz)
                PRG="xz -dc"
                ;;
            *.tar.7z)
                PRG="7za e -so"
                ;;
            *)
                exit 1
                ;;
        esac
        $PRG %f | tar xvf -


замените на:

Код: Выделить всё

=+ f \.tar\.gz$ | f \.tar\.z$ | f \.tgz$ | f \.tpz$ | f \.tar\.lz$ | f \.tar\.lzma$ | f \.tar\.7z$ | f \.tar\.xz$ | f \.tar\.Z$ | f \.tar\.bz2$ | f \.rar$ | f \.zip$ & t r
x       Extract the contents of a compressed file
    case %f in
        *.tar.bz2)
        bunzip2 -c %f |tar xvf -
        ;;
        *.tar.gz|*.tar.z|*.tgz|*.tpz|*.tar.Z)
        gzip -dc %f |tar xvf -
        ;;
        *.tar.lzma)
        lzma -dc %f |tar xvf -
        ;;
        *.tar.lz)
        lzip -dc %f |tar xvf -
        ;;
        *.tar.xz)
        xz -dc %f |tar xvf -
        ;;
        *.tar.7z)
        7za e -so %f |tar xvf -
        ;;
        *.zip)
        unzip %f
        ;;
        *.rar)
        unrar x %f
        ;;
        *)
        exit 1
        ;;
    esac
Спасибо сказали:
Аватара пользователя
Archangel
Сообщения: 431
ОС: Slackware64-14.1

Re: Новая версия mc или куда все подевалось

Сообщение Archangel »

Большое спасибо, так на самом деле намного лучше.
Спасибо сказали:
Аватара пользователя
eddy
Сообщения: 3321
Статус: Красный глаз тролля
ОС: ArchLinux
Контактная информация:

Re: Новая версия mc или куда все подевалось

Сообщение eddy »

Просто замените всю эту портянку на 7z x!
RTFM
-------
KOI8-R - патриотичная кодировка Изображение
Спасибо сказали:
flank'er
Сообщения: 496
Статус: слаковщик
ОС: Slackware64

Re: Новая версия mc или куда все подевалось

Сообщение flank'er »

p7zip не входит в дистрибутив.
Спасибо сказали:
Аватара пользователя
eddy
Сообщения: 3321
Статус: Красный глаз тролля
ОС: ArchLinux
Контактная информация:

Re: Новая версия mc или куда все подевалось

Сообщение eddy »

flank'er писал(а):
20.11.2012 09:11
p7zip не входит в дистрибутив.

Это почему же?
RTFM
-------
KOI8-R - патриотичная кодировка Изображение
Спасибо сказали:
Ответить