anonymous@RULINUX.NET~# Last login: 2024-12-23 17:02:25
Регистрация Вход Новости | Разметка | Пользователи | Галерея | Форум | Статьи | Неподтвержденное | Трекер | Правила форума | F.A.Q. | Ссылки | Поиск
[#] [Добавить метку] [Редактировать]
Скрыть

А почему говорят, что bash - УГ?

Посмотрите на этот код, разве он не прекрасен?

]
#!/bin/bash

case "$1" in
  list )        case "$2" in
                  "" )          echo "List of the installed repositories"
                                echo -e $(color ltyellow)" Repo:ttt     Proto:t  Address:"$(color off)
                                echo -en $(color ltgreen)" * mainttt     [Rsync      ] (`cat /etc/portage/repo.d/current | sed 's/"//g'`                    )"$(color off)
                                layman -l
                                exit 0
                                ;;
                  all )         echo "List of the available repositories"
                                echo -en $(color ltyellow)" Repo:ttt     Proto:t  Address:"$(color off)
                                layman -Lq
                                exit 0
                                ;;
                  main )        echo "List of the installed main repositories"
                                echo -e $(color ltyellow)" Repo:tttttAddress:"$(color off)
                                echo -e $(color ltgreen)" currenttttt(`cat /etc/portage/repo.d/current | sed 's/"//g'`)"$(color off)
                                ls -1r /etc/portage/repo.d | grep -v current > /tmp/repo_main_list
                                repo_count=`wc -l /tmp/repo_main_list | cut -d' ' -f1`
                                while [ "$repo_count" != 0 ]; do
                                  repo_name=`sed $repo_count!d /tmp/repo_main_list`
                                  echo -e " $repo_nametttt(`cat /etc/portage/repo.d/"$repo_name" | sed 's/"//g'`)"
                                  let "repo_count-=1"
                                done
                                rm /tmp/repo_main_list
                                echo ""
                                ;;
                esac
                ;;
  add ) case "$2" in
                 "" )           echo -e "Usage:ttrepo add <repo_name> <repo_address> <depo_address>"
                                exit 1
                                ;;
                 * )           if layman -i "$2" &>/dev/null
                                then
                                  if layman -a "$2"
                                  then
                                    echo "*/*::"$2" ~amd64" > /etc/portage/branch.d/"$2"
                                    ln -s /etc/portage/branch.d/"$2" /etc/portage/package.keywords/"$2"
                                    echo $(color ltgreen)"Repository "$2" successfully added"$(color off)
                                  else
                                    echo "Fail"
                                    exit 1
                                  fi
                                elif [ -z "$3" ]
                                then
                                  echo "Please, specify repo address"
                                  exit 1
                                elif [ -z "$4" ]
                                then
                                  echo "Please, specify depo address"
                                  exit 1
                                elif [ -f /etc/portage/repo.d/"$2" ]
                                then
                                  echo "Repo "$2" has been added already"
                                  exit 1
                                elif echo "$3" | grep 'rsync' &>/dev/null
                                then
                                  echo "$3" > /etc/portage/repo.d/"$2"
                                  sed -i 's/(.*)/"1"/' /etc/portage/repo.d/"$2"
                                  echo "$4" > /etc/portage/depo.d/"$2"
                                  sed -i 's/(.*)/"1"/' /etc/portage/depo.d/"$2"
                                  echo $(color ltgreen)"Repo "$2" has been added"$(color off)
                                else
                                  echo "Incorrect repo address"
                                  exit 1
                                fi
                                ;;
                esac
                ;;
  delete )      case "$2" in
                      "" )      echo -e "Usage:ttrepo delete <repo_name>"
                                exit 1
                                ;;
                      * )      if [ -f /etc/portage/repo.d/"$2" ]
                                then
                                  rm /etc/portage/repo.d/"$2"
                                  rm /etc/portage/depo.d/"$2"
                                  echo $(color ltgreen)"Repo "$2" has been deleted"$(color off)
                                elif [ -f /etc/portage/branch.d/"$2" ]
                                then
                                  layman -d "$2"
                                  rm /etc/portage/package.keywords/"$2"
                                  rm /etc/portage/branch.d/"$2"
                                  echo $(color ltgreen)"Repo "$2" has been deleted"$(color off)
                                else
                                  echo $(color ltred)"Repo "$2" not found!"$(color off)
                                  exit 1
                                fi
                                ;;
                    esac
                    ;;
  sync )        case "$2" in
                      "" | all )        echo $(color ltyellow)"Sync all repos:"$(color off)
                                          emerge --sync
                                          layman -S
                                          emerge --metadata
                                          ;;
                      main )          echo $(color ltyellow)"Sync main repo:"$(color off)
                                          emerge --sync
                                          emerge --metadata
                                          ;;
                      * )                if [ -f /etc/portage/branch.d/"$2" ]
                                          then
                                            echo $(color ltyellow)"Sync "$2" repo:"$(color off)
                                            layman -s "$2"
                                            emerge --metadata
                                          else
                                            echo $(color ltred)"Repo "$2" not found!"$(color off)
                                            exit 1
                                          fi
                                          ;;
                    esac
                    ;;
  branch )     arch_type_raw=`cat /etc/portage/arch | sed 's/"//g' | cut -d'-' -f1`
                    if [ "$arch_type_raw" = "x86_64" ]
                    then
                      arch_type="amd64"
                    else
                      arch_type="x86"
                    fi
                    branch_conv()
                    {
                      case "$1" in
                        "$arch_type" )          branch_name="low"
                                                        ;;
                        ~"$arch_type" )       branch_name="high"
                                                        ;;
                        ** )                          branch_name="top"
                                                        ;;
                      esac
                    }
                    case "$2" in
                      "" | list )       echo $(color ltyellow)"Available branches:"$(color off)
                                          echo -e "Lowtt- old stable packages ('arch' in Gentoo)"
                                          echo -e "Hightt- new testing packages, default value ('~arch' in Gentoo)"
                                          echo -e "Toptt- newest experimental packages, not recommended ('**' in Gentoo)"
                                          echo ""
                                          ;;
                      all )              echo -e $(color ltyellow)" Repo:ttttBranch:"$(color off)
                                          old_branch_name=`cat /etc/portage/branch.d/main | sed 's/"//g'`
                                          branch_conv $old_branch_name
                                          echo -e $(color ltgreen)" maintttt"$branch_name""$(color off)
                                          ls -1r /etc/portage/branch.d | grep -v main > /tmp/repo_list
                                          repo_count_b=`wc -l /tmp/repo_list | cut -d' ' -f1`
                                          while [ "$repo_count_b" != 0 ]; do
                                            repo_name_b=`sed $repo_count_b!d /tmp/repo_list`
                                            old_branch_name_1=`cat /etc/portage/branch.d/"$repo_name_b" | cut -d' ' -f2`
                                            branch_conv $old_branch_name_1
                                            echo -e " "$repo_name_b"tttt"$branch_name""
                                            let "repo_count_b-=1"
                                          done
                                          rm /tmp/repo_list
                                          echo ""
                                          ;;
                      * )                if [ -f /etc/portage/branch.d/"$2" ]
                                          then
                                            if [ -z "$3" ]
                                            then
                                              old_branch_name_2=`cat /etc/portage/branch.d/"$2" | cut -d' ' -f2`
                                              branch_conv $old_branch_name_2
                                              echo -e $(color ltyellow)" Repo:ttttBranch:"$(color off)
                                              echo -e " "$2"tttt"$branch_name""
                                            else
                                              case "$3" in
                                                low )           rm /etc/portage/branch.d/"$2"
                                                                  echo "*/*::"$2" "$arch_type"" > /etc/portage/branch.d/"$2"
                                                                  echo $(color ltgreen)"Repo "$2" uses "$3" branch now"$(color off)
                                                                  ;;
                                                high )         rm /etc/portage/branch.d/"$2"
                                                                  echo "*/*::"$2" ~"$arch_type"" > /etc/portage/branch.d/"$2"
                                                                  echo $(color ltgreen)"Repo "$2" uses "$3" branch now"$(color off)
                                                                  ;;
                                                top )           rm /etc/portage/branch.d/"$2"
                                                                  echo "*/*::"$2" **" > /etc/portage/branch.d/"$2"
                                                                  echo $(color ltgreen)"Repo "$2" uses "$3" branch now"$(color off)
                                                                  ;;
                                                * )              echo $(color ltred)"Unknown branch!"$(color off)
                                                                  ;;
                                              esac
                                            fi
                                          else
                                            echo $(color ltred)"Repo not found!"$(color off)
                                          fi
                                          echo ""
                                          ;;                                              
                    esac
                    ;;
esac

exit 0
 

Nosferatu(*) (2013-03-25 12:35:36)
Отредактировано Tux-oid по причине use code, Luke!
;>, ;5BOI55 =0 :@K;LOE =>G8

[Ответить на это сообщение]
[#] [Добавить метку] [Редактировать] Ответ на: А почему говорят, что bash - УГ? от Nosferatu 2013-03-25 12:35:36
avatar
Скрыть

Re:А почему говорят, что bash - УГ?

блять, ну что за ёптваюмать у вас тут с автоформатированием?

Nosferatu(*)(2013-03-25 12:36:08)

;>, ;5BOI55 =0 :@K;LOE =>G8
[#] [Добавить метку] [Редактировать] Ответ на: А почему говорят, что bash - УГ? от Nosferatu 2013-03-25 12:35:36
avatar
Скрыть

Re:А почему говорят, что bash - УГ?

perl
perl -e '$??s:;s:s;;$?::s;;=]=>%-{<-|}<&|`{;;y; -/:-@[-`{-};`-{/" -;;s;;$_;see'
 


Всё нормально у нас с форматированием...



anonymous(*)(2013-03-25 13:41:59)

Mozilla/5.0 (X11; Linux x86_64; rv:19.0) Gecko/20100101 Firefox/19.0
[#] [Добавить метку] [Редактировать] Ответ на: А почему говорят, что bash - УГ? от Nosferatu 2013-03-25 12:35:36
avatar
Скрыть

Re:А почему говорят, что bash - УГ?

И что тут прекрасного? Код как код, ничего особенного, да и синтаксис у баша не очень хороший.

spaceivan(*)(2013-03-25 17:36:44)

Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:19.0) Gecko/20100101 Firefox/19.0
[#] [Добавить метку] [Редактировать] Ответ на: Re:А почему говорят, что bash - УГ? от spaceivan 2013-03-25 17:36:44
avatar
Скрыть

Re:А почему говорят, что bash - УГ?

>И что тут прекрасного?
внешний вид и читаемость

на том же Питоне код выглядит много хуже

>синтаксис у баша не очень хороший
почему?

Nosferatu(*)(2013-03-25 17:39:06)

;>, ;5BOI55 =0 :@K;LOE =>G8
[#] [Добавить метку] [Редактировать] Ответ на: Re:А почему говорят, что bash - УГ? от spaceivan 2013-03-25 17:36:44
avatar
Скрыть

Re:А почему говорят, что bash - УГ?

>да и синтаксис у баша не очень хороший.
Синтаксис как синтаксис, а вот возможностей "внутри" языка довольно мало - на каждый чих надо дёргать sed да awk, и сложные операции превращаются внешне в какой-то код на перле.

SystemV(*)(2013-03-25 17:52:46)

Emacs-w3m/1.4.513 w3m/0.5.3
[#] [Добавить метку] [Редактировать] Ответ на: Re:А почему говорят, что bash - УГ? от Nosferatu 2013-03-25 17:39:06
avatar
Скрыть

Re:А почему говорят, что bash - УГ?

> на том же Питоне код выглядит много хуже

Вон Хаха давеча приводил более-менее нормальный код на петоне: http://rulinux.net/thread_39066_page_1#msg167699.

anonymous(*)(2013-03-25 17:53:04)

[#] [Добавить метку] [Редактировать] Ответ на: Re:А почему говорят, что bash - УГ? от anonymous 2013-03-25 17:53:04
avatar
Скрыть

Re:А почему говорят, что bash - УГ?

фигово выглядит

плюс, за отсутствие case разрабов Питона вообще избить надо

Nosferatu(*)(2013-03-25 17:55:02)

;>, ;5BOI55 =0 :@K;LOE =>G8
[#] [Добавить метку] [Редактировать] Ответ на: Re:А почему говорят, что bash - УГ? от SystemV 2013-03-25 17:52:46
avatar
Скрыть

Re:А почему говорят, что bash - УГ?

>на каждый чих надо дёргать sed да awk
вот да, это печалит

Nosferatu(*)(2013-03-25 17:55:53)

;>, ;5BOI55 =0 :@K;LOE =>G8
[#] [Добавить метку] [Редактировать] Ответ на: Re:А почему говорят, что bash - УГ? от Nosferatu 2013-03-25 17:55:02
avatar
Скрыть

Re:А почему говорят, что bash - УГ?

>плюс, за отсутствие case разрабов Питона вообще избить надо
Я, если есть много кода и надобность в case, обычно на функции разбиваю и реализую case через dict с ними. Если структура программы позволяет, конечно. Заодно код не выглядит как большой единый кусок.

SystemV(*)(2013-03-25 18:11:00)

Emacs-w3m/1.4.513 w3m/0.5.3
[#] [Добавить метку] [Редактировать] Ответ на: А почему говорят, что bash - УГ? от Nosferatu 2013-03-25 12:35:36
avatar
Скрыть

Re:А почему говорят, что bash - УГ?

блин, переписал свой питоноскрипт (для скрытия отдельных пакетов от глаз пакетного менеджера) на bash, так мало того, что он намного короче, так ещё и работает быстрее

где справедливость?

Nosferatu(*)(2013-03-26 12:22:09)

;>, ;5BOI55 =0 :@K;LOE =>G8
Этот тред читают 4 пользователя:
Анонимных: 4
Зарегистрированных: 0




(c) 2010-2020 LOR-NG Developers Group
Powered by TimeMachine

Valid HTML 4.01 Transitional Правильный CSS!