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

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



On 13.10.2013 21:57, Ivan Kovnatsky wrote:
Видел эти функции, не знаю где они изначально появились, когда ковырялся в арче
спер конфиг у какого-то хакера арче, вроде бы codemac, но точно не помню, были
и куски кода phrakture (Aaron Griffin).

Функции крутые, но в свое время отказался от них, чтобы не забывать команд, не
везде есть свой .bashrc/.zshrc под рукой, и потому по памяти можно набирать
unpack/pack, но вывод будет:

--
-bash: unpack: command not found
--

Косяк исправлен в доброске выше. :-)

Кстати pack функция изначально называлась _roll_, только что глянул свой
.bashrc, там так и осталась она.


А вот то, что у меня в .zsh/functions лежит еще:
(кстати синтаксис рабочий только в zsh)

--
unpack()
{
     local old_dirs current_dirs lower
     lower=${(L)1}
     old_dirs=( *(N/) )
     if [[ $lower == *.tar.gz || $lower == *.tgz ]]; then
         tar xvzf $1
     elif [[ $lower == *.gz ]]; then
         gunzip $1
     elif [[ $lower == *.tar.bz2 || $lower == *.tbz ]]; then
         tar xvjf $1
     elif [[ $lower == *.bz2 ]]; then
         bunzip2 $1
     elif [[ $lower == *.zip ]]; then
         unzip $1
     elif [[ $lower == *.rar ]]; then
         unrar e $1
     elif [[ $lower == *.tar ]]; then
         tar xvf $1
     elif [[ $lower == *.lha ]]; then
         lha e $1
     else
         print "Unknown archive type: $1"
         return 1
     fi
     # Change in to the newly created directory, and
     # list the directory contents, if there is one.
     current_dirs=( *(N/) )
     for i in {1..${#current_dirs}}; do
         if [[ $current_dirs[$i] != $old_dirs[$i] ]]; then
             cd $current_dirs[$i]
             break
         fi
     done
}

это и для баша и для zsh идентично
roll()
{
     FILE=$1
     case $FILE in
         *.tar.bz2) shift && tar cjf $FILE $* ;;
         *.tar.gz) shift && tar czf $FILE $* ;;
         *.tgz) shift && tar czf $FILE $* ;;
         *.zip) shift && zip $FILE $* ;;
         *.rar) shift && rar $FILE $* ;;
     esac
}
--

-Ivan

Мои лучше. :-) Только LHA ещё надо будет впилить.


Reply to: