[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Особенности Zsh



On 13.10.2013 21:21, "Артём Н." wrote:
Функции не проверял: черновой вариант.
В функции накосячил. Зачем скинул не знаю.
Вот исправленный вариант:

#
# Unpack archives. Functions by `muhas` modified by Artiom N..
#

# Распаковка любого архива (http://muhas.ru/?p=55)
unpack()
{
   if [ $# -lt 1 ]; then
      echo "Usage: unpack <file> [args]" >&2
      return 1
   fi

   a_name="$1"
   extract_dir="$( echo $(basename "$a_name") | sed "s/\.${1##*.}//g" )"
   shift

   if [ -r "$a_name" ] ; then
      case "$a_name" in
         *.tar.bz2|*.tbz|*.tbz2)    tar xvjf          "$a_name" $*      ;;
         *.tar.gz|*.tgz)            tar xvzf          "$a_name" $*      ;;
         *.tar.xz)                  tar --xz -xvf     "$a_name" $*      ;;
         *.tar.zma|*.tlz)           tar --lzma -xvf   "$a_name" $*      ;;
         *.bz2)                     bunzip2           "$a_name" $*      ;;
         *.rar)                     unrar x           "$a_name" $*      ;;
         *.gz)                      gunzip            "$a_name" $*      ;;
         *.tar)                     tar xvf           "$a_name" $*      ;;
         *.zip)                     unzip             "$a_name" $*      ;;
         *.Z)                       uncompress        "$a_name" $*      ;;
         *.7z)                      7za x             "$a_name" $*      ;;
         *.rar)                     unrar x           "$a_name" $*      ;;
         *.xz)                      unxz              "$a_name" $*      ;;
         *.arj)                     arj x             "$a_name" $*      ;;
         *.ace)                     unace x           "$a_name" $*      ;;
         *.lzm|*.lzma)              unlzma            "$a_name" $*      ;;
         *.deb)
                                    mkdir -p "$extract_dir/control"
                                    mkdir -p "$extract_dir/data"
                                    cd "$extract_dir"; ar vx "../${1}" > /dev/null
                                    cd control; tar xzvf ../control.tar.gz
                                    cd ../data; tar xzvf ../data.tar.gz
                                    cd ..; rm *.tar.gz debian-binary
                                    cd ..
                                                                        ;;
         *.ar)                      ar x              "$a_name" $*      ;;
         *.cpio,*.rpm)              cpio -i $* <      "$a_name"         ;;
         *)                 echo "Cannot unpack '$a_name' $*..."        ;;
      esac
   else
      echo "'$a_name' is not a valid file"
   fi
}

# ... и упаковка (http://muhas.ru/?p=55)
pack()
{
   if [ $1 ] ; then
      case $1 in
         tbz)     tar cjvf $2.tar.bz2  $2                      ;;
         tgz)     tar czvf $2.tar.gz   $2                      ;;
         tar)     tar cpvf $2.tar      $2                      ;;
         bz2)     bzip                 $2                      ;;
         gz)      gzip -c -9 --best -n $2 > $2.gz              ;;
         zip)     zip -r $2.zip        $2                      ;;
         7z)      7z a $2.7z           $2                      ;;
         rar)     rar a $2.rar         $2                      ;;
         *)       echo "'$1' Cannot be packed via pack()"      ;;
      esac
   else
      echo "'$1' is not a valid file"
   fi
}

alias x=unpack


Распаковка deb взята из oh-my-zsh плагина extract, но мной проверена не была.


Reply to: