1. bash / Говнокод #7174

    −352

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    #!/bin/bash
    function f() {
        sleep "$1"
        echo "$1"
    }
    while [ -n "$1" ]
    do
        f "$1" &
        shift
    done
    wait

    example usage:
    ./sleepsort.bash 5 3 6 3 6 3 1 4 7

    Метод сортировки :)
    Взято с:
    http://dis.4chan.org/read/prog/1295544154

    ramzes_2, 06 Июля 2011

    Комментарии (15)
  2. bash / Говнокод #7111

    −127

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    type="${(@j::M)${(@)tmp#-}#?}"
    if (( $tmp[(I)-g*] )); then
      glob="${${${${(@M)tmp:#-g*}#-g}##[[:blank:]]#}%%[[:blank:]]#}"
      [[ "$glob" = *[^\\][[:blank:]]* ]] &&
          glob="{${glob//(#b)([^\\])[[:blank:]]##/${match[1]},}}"
    
      # add `#q' to the beginning of any glob qualifier if not there already
      [[ "$glob" = (#b)(*\()([^\|\~]##\)) && $match[2] != \#q* ]] &&
          glob="${match[1]}#q${match[2]}"
    fi

    zsh, избранное из _files: остальное чуть лучше.
    Зато... хм, портабельно (в смысле между не оболочками, а платформами).

    greno, 30 Июня 2011

    Комментарии (15)
  3. bash / Говнокод #7102

    −130

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    38. 38
    39. 39
    40. 40
    41. 41
    42. 42
    43. 43
    44. 44
    45. 45
    Request() { 
     Info "Добро пожаловать в VKSearch $sys_version!"
     Info "Загрузка списка треков..."
     vkapi_signature=$(echo -n "${vkapi_id}api_id=1696393count=${cfg_search_count}method=audio.searchq=${query}test_mode=1v=2.0${vkapi_secret}"|md5sum|awk '{print $1}')
     wget "http://api.vkontakte.ru/api.php?api_id=1696393&count=${cfg_search_count}&v=2.0&method=audio.search&sig=${vkapi_signature}&test_mode=1&q=$query" -qO "${sys_temp}/vksearch.out"
     found=$(cat ${sys_temp}/vksearch.out | sed -ne 's,<count>\([^<]*\)</count>,\1,p'|sed 's/^[ \t]*//')
    
     error_msg="$(cat ${sys_temp}/vksearch.out | sed -n 's|<error_msg>\(.*\)</error_msg>|\1|p'|sed 's/^[ \t]*//'|head -n1 )"
     error_code="$(cat ${sys_temp}/vksearch.out | sed -n 's|<error_code>\(.*\)</error_code>|\1|p'|sed 's/^[ \t]*//'|head -n1)"
     [ -n "$error_msg" ] && Info "Ошибка: $error_msg (Код $error_code)" die
     
     song_count=$(cat ${sys_temp}/vksearch.out | grep '<url>'|wc -l )
     [ $song_count -eq 0 ] && Info "По запросу ${query} не найдено ни одного трека..." die || Info "По запросу ${query} найдено ${found} композиций. Обработка первых ${song_count}."
    }
    
    Parse() { 
     OLD_IFS=$IFS
     IFS=$'\n'
     song_urls=( `cat ${sys_temp}/vksearch.out | sed -n 's|<url>\(.*\)</url>|\1|p'|sed 's/^[ \t]*//' ` )
     song_artists=( `cat ${sys_temp}/vksearch.out | sed -n 's|<artist>\(.*\)</artist>|\1|p'|sed 's/^[ \t]*//' ` )
     song_titles=( `cat ${sys_temp}/vksearch.out | sed -n 's|<title>\(.*\)</title>|\1|p'|sed 's/^  //' ` )
     song_durations=( `cat ${sys_temp}/vksearch.out |sed -n 's|<duration>\(.*\)</duration>|\1|p'|sed 's/^[ \t]*//' ` )
     song_counts=$(( ${#song_urls[@]} - 1 ))
     IFS=$OLD_IFS
    }
    
    RemoveDoubles() {
     rm ${sys_temp}/vksearch.pars* 2>&-
     Info "Начинаю удаление треков с одинаковой длительностью..."
     for i in `seq 0 $song_counts`
     do
      echo "<1>${song_durations[$i]}<2>${song_artists[$i]}<3>${song_titles[$i]}<4>${song_urls[$i]}<5>" >> ${sys_temp}/vksearch.parsing 
     done
     cat ${sys_temp}/vksearch.parsing | sort -n | uniq -w 6 > ${sys_temp}/vksearch.parsed
     cat ${sys_temp}/vksearch.parsing | sort -n | uniq -w 6 -d > ${sys_temp}/vksearch.doubles
     OLD_IFS=$IFS
     IFS=$'\n'
     song_urls=( `cat ${sys_temp}/vksearch.parsed |sed -ne 's,.*<4>\([^<]*\)<5>.*,\1,p' ` )
     song_artists=( `cat ${sys_temp}/vksearch.parsed |sed -ne 's,.*<2>\([^<]*\)<3>.*,\1,p' ` )
     song_titles=( `cat ${sys_temp}/vksearch.parsed | sed -ne 's,.*<3>\([^<]*\)<4>.*,\1,p' ` )
     song_durations=( `cat ${sys_temp}/vksearch.parsed |sed -ne 's,.*<1>\([^<]*\)<2>.*,\1,p' ` )
     song_counts=$(( ${#song_urls[@]} - 1 ))
     IFS=$OLD_IFS
     Info "В плейлисте осталось ${#song_urls[@]} треков." 
    }

    парочка функций из моего проекта VKSearch - поиск и сохранение музыки ВКонтакте на shell... -_-

    snoopcatt, 29 Июня 2011

    Комментарии (9)
  4. bash / Говнокод #7100

    −144

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    #! /bin/sh
    
    # some code
    
    daemon1="/usr/home/daemon1.sh"
    daemon2="/home/daemon2.sh"
    
    # some code with variables

    Скрипт на BSD. Хомяк находится в /usr/home, а /home симлинк на него

    Elvenfighter, 29 Июня 2011

    Комментарии (7)
  5. bash / Говнокод #7063

    −129

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    #!/bin/bash
    EMAIL="Your email"
    PASSWORD="your password"
    USERAGENT="Mozilla/5.0 (X11; Linux i686; rv:2.0.1) Gecko/20110529 Firefox/4.0"
    
    curl -A "$USERAGENT" -c /tmp/vklogin.cookie -d "pass=$PASSWORD&email=$EMAIL" http://login.vk.com/?act=login -L | iconv -f cp1251 > /tmp/vklogin
    
    perl -e  "while(<STDIN>) {\$a=\$_; if(\$a =~ /^\s*<input[^>]*?name='([^']*)'[^>]*?value='([^']*)'\s*\/>/i) {print \"\$1=\$2&\";}}" < /tmp/vklogin > /tmp/vklogin.postdata
    POSTDATA="$(cat /tmp/vklogin.postdata)"
    
    curl -A "$USERAGENT" -d "$POSTDATA" -b /tmp/vklogin.cookie -c /tmp/vklogin.cookie http://vkontakte.ru/login.php -L -v 2>&1 | iconv -f cp1251 &> /dev/null
    
    echo 1 > /tmp/vklogin.mailid
    echo 1 > /tmp/vklogin.mailoutid
    
    while [ `cat /tmp/vklogin.mailid | wc -l` -gt 0 ]; do
        curl -A "$USERAGENT" -d "$POSTDATA" -b /tmp/vklogin.cookie -c /tmp/vklogin.cookie http://vk.com/mail -L | iconv -f cp1251 > /tmp/vklogin.mail
        cat /tmp/vklogin.mail |  perl -e "while(<STDIN>) {if (\$_ =~ /.*mail.deleteMsg\((\d*)/) {print \"\$1\n\";} }" > /tmp/vklogin.mailid
        for i in $(cat /tmp/vklogin.mailid); do
            curl -A "$USERAGENT" -d "act=a_delete&al=1&from=inbox&hash=1309098903_0eefa6ea250675f38e&id=$i"  -b /tmp/vklogin.cookie -c /tmp/vklogin.cookie http://vk.com/al_mail.php -L | iconv -f cp1251 
        done
    done
    
    while [ `cat /tmp/vklogin.mailoutid | wc -l` -gt 0 ]; do
        curl -A "$USERAGENT" -d "$POSTDATA" -b /tmp/vklogin.cookie -c /tmp/vklogin.cookie http://vk.com/mail?section=outbox -L | iconv -f cp1251 > /tmp/vklogin.mailout
        cat /tmp/vklogin.mailout |  perl -e "while(<STDIN>) {if (\$_ =~ /.*mail.deleteMsg\((\d*)/) {print \"\$1\n\";} }" > /tmp/vklogin.mailoutid
        for i in $(cat /tmp/vklogin.mailoutid); do
            curl -A "$USERAGENT" -d "act=a_delete&al=1&from=outbox&hash=1309103621_59302e5e1b1a924a70&id=$i"  -b /tmp/vklogin.cookie -c /tmp/vklogin.cookie http://vk.com/al_mail.php -L | iconv -f cp1251 
        done
    done
    rm /tmp/vklogin*

    Удаляет все сообщения на vk.com

    Наверное hash надо будет заменить.

    Tanger, 26 Июня 2011

    Комментарии (6)
  6. bash / Говнокод #6947

    −127

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    am=`cat $file | wc -l`
    for ((i=1;i<=$am;i++))
    do
        read z
        imsi=`echo $z | sed -e "s/^[0-9]*[ ]*//" `
    done < $file

    berezhinskiy, 14 Июня 2011

    Комментарии (6)
  7. bash / Говнокод #6711

    −134

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    # Fallback static file handler, now with XSendfile support.
        if not if(test -f $local_path) {
            if(! ~ $#xsendfile 0) {
                if(! ~ $#xsendfile_alternate 0)
                    XSendfileHeader='X-Accel-Redirect'
                if not
                    XSendfileHeader='X-Sendfile'
                echo $XSendfileHeader': '`{pwd}^'/'$local_path
            }
            if not
                static_file $local_path
        }
        if not if(~ $req_path /pub/* && test -f .$req_path) {
            if(! ~ $#xsendfile 0) {
                if(! ~ $#xsendfile_alternate 0)
                    XSendfileHeader='X-Accel-Redirect'
                if not
                    XSendfileHeader='X-Sendfile'
                echo $XSendfileHeader': '`{pwd}^'/'$req_path
            }
            if not
                static_file .$req_path
        }

    dukzcry, 19 Мая 2011

    Комментарии (9)
  8. bash / Говнокод #6631

    −133

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    #!/bin/bash
    
    cat -b $1 > file.txt
    sed -e 's/^/<br>/g' -i file.txt
    curl --data-urlencode [email protected] netelis.hmsite.net/upload.php | head -n1

    Аналог wgetpaste

    AliceGoth, 11 Мая 2011

    Комментарии (12)
  9. bash / Говнокод #6457

    −139

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    38. 38
    39. 39
    40. 40
    41. 41
    42. 42
    43. 43
    44. 44
    45. 45
    46. 46
    47. 47
    48. 48
    49. 49
    50. 50
    #!/bin/bash
    
    export cpx=0
    export cpy=0
    cf=0
    export xf=0
    export yf=0
    while :
    do
      tput reset
      xp=`cat /tmp/X.txt`
      yp=`cat /tmp/Y.txt` 
    echo "xp $xp yp $yp"
    clear
    if [ $cpx -eq $xp ]
    then
      echo "x coincided"
      xf=1
    elif [ $cpx -gt $xp ]
    then
      let cpx--
    else
      let cpx++
    fi
    
    if [ $cpy -eq $yp ]
    then
      echo "y coincided"
      yf=1
    elif [ $cpy -gt $yp ]
    then
      let cpy--
    else
      let cpy++
    fi
    tput cup 45 130
    echo px $xp py $yp
    tput cup 46 130
    echo x $cpx y $cpy
    tput cup $cpx $cpy
    sleep 0.5s
    if [ $xf -eq 1 ]
    then
      if [ $yf -eq 1 ]
      then
        echo "Point coincide"
        exit
      fi
    fi
    done

    Move cursor in right place.

    AliceGoth, 22 Апреля 2011

    Комментарии (24)
  10. bash / Говнокод #6439

    −132

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    38. 38
    39. 39
    40. 40
    41. 41
    42. 42
    43. 43
    44. 44
    45. 45
    46. 46
    47. 47
    #!/bin/bash
    
    export k=1
    export g=0
    export i=1
    export j=1
    handle_terminatem() {
        let k=-1
        let g=0
    }
    handle_terminatep() {
        let k=1
        let g=0
    }
    handle_terminategp() {
        let g=1
        let k=0
    }
    handle_terminategm() {
        let g=-1
        let k=0
    }
    echo pid $$
    trap handle_terminatem 2 3
    trap handle_terminatep 20 19 9
    trap handle_terminategp 31 
    trap handle_terminategm 1 
    
    while :
    do
      tput clear
      tput cup $i $j
      echo "$1 $k $g"
      if [ $j -gt 0 ]
      then
      let "j+=k"
      else 
        let j=1
      fi
      if [ $i -gt 0 ]
      then
      let "i+=g"
        else
        let i=1
      fi
      sleep 0.1s
    done

    Управляет сигналами положением слова курсора на экране.

    AliceGoth, 21 Апреля 2011

    Комментарии (0)