Beri bash i ebash / Говнокод #12198 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  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
# For bash and ksh, we can use faster builtin routines to do manipulation,
# otherwise (ash) fall back to slower method using `expr'.
# The extra level of indirection using `eval' is necessary a) for ksh, and
# b) to get past ash.

if [ "$RANDOM" != "$RANDOM" ]
then
    math () {
        eval echo "\$(($*))"
    }
    index () {  # index string c
        eval "I=\${1%$2*}"
        eval echo "\${#I}"
    }
    ...
else
    math () {
        expr "$@"
    }
    index () {  # index string c
        expr $1 : ".*$2" - 1
    }
    ...
fi

Отличный способ определения шелла из старослакварского /dev/MAKEDEV.

bormand bormand, (Updated )

Комментарии (12, +12)

Beri bash i ebash / Говнокод #12039 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  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
  51. 51
#!/bin/bash
export TMP_FS=/tmp
export MAILRU_LOG=$TMP_FS/mail_ru_log2.txt
RECF=$PWD/.rec
mkdir -p avatars && cd avatars
declare -a symb=({a..z} {0..9} - _)
pid='';
ppid='';
pln=0
i=0
max_len=9
ci=0
ask_pid()
{
  read pid
  ppid=$pid
  echo "Pid changed to $pid"
  pln=`echo $pid | wc -c`
  max_len=$pln
}
function get_name
{
pid=$1
let ci++
echo $ci > $RECF
for idn2 in  $(seq 0 $((${#symb[@]} - 1))); do
  ppid=$pid
  pid=$pid${symb[$idn2]}
    curl --connect-timeout 1 -s http://avt.foto.mail.ru/mail/$pid/_avatar > $pid.jpg
  fdif=`cmp $pid.jpg ../A.jpg`
  if test -z "$fdif"
  then
    #echo "File is empty"
    rm $pid.jpg
  else
   friends=`curl --connect-timeout 1 -# http://my.mail.ru/mail/$pid | grep -o \"/mail/[^/]*/\" | sed -e 's/\/mail\///g;s/\///g' | uniq`
    echo "friends : $friends"
    echo "$PWD/$pid.jpg friends:$friends" | tee -a $MAILRU_LOG
    echo "File isn't empty"
fi
  let pln++;
if [ $pln -lt $max_len ]; then
  get_name $pid
fi
  let pln--
  pid=$ppid
  pid=${pid:0:$pln}
done
}
trap 'ask_pid' USR1 INT
get_name $pid

AliceGoth AliceGoth, (Updated )

Комментарии (42, +42)

Beri bash i ebash / Говнокод #11918 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
MAXJOBS=20
for i in `seq 1 $MAXJOBS` ; do nice -n 19 gzip -c /dev/zero > /dev/null & done

while true
do
 LA=`</proc/loadavg` && LA=${LA// */}
 H=$(date +%M) && H=${H/0/}
 G=`echo "(${MAXJOBS}/2)*(s(2*3.14159*${H}/60) +1 ) <= ${LA}" | bc -l`
 test ${G} -lt 1 && for i in `seq 1 $MAXJOBS` ; do  kill -SIGCONT %$i  ; done  || for i in `seq 1 $MAXJOBS` ; do  kill -SIGSTOP %$i; done
 sleep 1
done

Генерирует load average, и поддерживает её в форме синусоиды, с периодом в час.

на графике выглядит как-то так:
http://i.piccy.info/i7/108cbdd61801da0ed805ecf41ecbc9e3/4-47-114/35579895/localhost_load.png

bliznezz bliznezz, (Updated )

Комментарии (7, +7)

Beri bash i ebash / Говнокод #11917 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
FPOINT=$1
test ${FPOINT:12:2} = "e-" && echo 0 && exit 0
FPOINT=$1 ; FPOINT=${FPOINT/,/.}
MANT=${FPOINT//e*/} ; EXP=${FPOINT:((${#FPOINT}-2)):2} ;
echo "define i(x) {auto s;s=scale;scale=0;x/=1;scale=s;return(x);} ; i(${MANT}*10^${EXP})" | bc

rrdtool хранит и что самое противное выводит при запросе данные в формате с плавающей запятой, том самом который выглядит так: 1.2345678901e+09
а баш в свою очередь не умеет работать с float, так что для коекакой работы с этими базами на баше пришлось написать такую функцию.
Учитывая что у меня только положительные значения, пока ошибок не было.

bliznezz bliznezz, (Updated )

Комментарии (3, +3)

Beri bash i ebash / Говнокод #11752 Ссылка на оригинал

0

  1. 1
cd /root/jbot; java -jar jimbot.jar 2> /dev/null 1> /dev/null &

Я тихонечко это тут положу...
А вот по скромному мнению автора, что делают эти строки:

Вот выбрал систему Ubuntu (прим: видимо речь идет о VPS/VDS дай бог что не в виртуалбоксе под виндой). Администратирование веду через программу PuTTy.
В даный момен я тестирую ICQ чат. Для этого надо включить java. В моем случае это так:
cd /root/jbot; java -jar jimbot.jar 2> /dev/null 1> /dev/null &
“Убить” процес:
sudo killall -9 java
cd – значит что выбрать из дериктории /root/jbot; и с дериктории java -jar jimbot.jar значок запустить 2>/dev/null так же второй скрипт 1> /dev/null и значок завершение &

Исходник тута: http://zvlad.com/3-zapusk-icq-chata-v-ubuntu.html

deep deep, (Updated )

Комментарии (15, +15)

Beri bash i ebash / Говнокод #11595 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
  14. 14
  15. 15
  16. 16
  17. 17
#!/bin/bash
hl=`cat ~/hostlist.txt`
wrd=`cat ~/worlds.txt`
for address in $hl
do
rm /tmp/`basename $address`.txt && echo "Deleted file "/tmp/`basename $address`.txt
done
for address in `cat ~/hostlist.txt`
do
echo $address
for wrd in `cat ~/worlds.txt`
do
  tmp=/tmp/`basename $address`.txt
  curl -s $address| cat -b |grep -i $wrd >> $tmp
  curl -s $address| cat -b |grep -i $wrd
done
done

Находит слова с файла ~/worlds.txt на сайтах со списка в файле ~/hostlist.txt

AliceGoth AliceGoth, (Updated )

Комментарии (17, +17)

Beri bash i ebash / Говнокод #11548 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  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
  51. 51
  52. 52
  53. 53
  54. 54
  55. 55
  56. 56
  57. 57
  58. 58
  59. 59
  60. 60
  61. 61
  62. 62
#!/bin/dash -e

fono="#DFAF8F"
monato="#80AAD4"
kvin="#DCA3A3"
fino="#949494"


enigo () {
  while read inc < "$FIFO"
  do
    rel=$(( $rel + $inc ))
    cal -m $( date +'%m %Y' -d "+$rel month" ) | filtrilo $rel
  done
}


filtrilo () {
  kura=$(date +%e)

  awk -v rel=$1 -v kura="$kura" -v fono=$fono \
      -v monato=$monato -v kvin=$kvin -v fino=$fino '

  BEGIN { nigra = "#000000" }

  function fg(koloro, text) { return sprintf("^fg(%s)%s^fg()", koloro, text) }
  function bg(koloro, text) { return sprintf("^bg(%s)%s^bg()", koloro, text) }

  function set(i,j, koloro) { for(k=i;k<=j;k++) $k = fg(koloro, $k) }

  NR == 1 { $1 = fg(monato,$1) }
  NR == 2 { set(1,5,kvin); set(6,7,fino) }
  NR > 2 && rel == 0 { sub( sprintf("%s\\>",kura), fg(nigra, bg(fono, kura)) ) }

  { print "  " $0 }'
}


eligo () {
  dimensioj=$( xdpyinfo | awk '$1 == "dimensions:" { print $2 }' )
  ekrano=${dimensioj%x*}
  menuo=170 # artifiko
  x=$(( $ekrano - $menuo ))
  y=20

  i="exec:echo  0 > $FIFO"
  n="exec:echo +1 > $FIFO"
  p="exec:echo -1 > $FIFO"

  agoj="onstart=uncollapse,grabkeys,grabmouse,$i;onexit=$i;\
key_Escape=exit;key_q=exit;key_n=$n;key_p=$p;key_space=$n;key_BackSpace=$p;\
button3=exit;button5=$n;button4=$p"

  exec dzen2 -l 7 -x $x -y $y -w $menuo -u -e "$agoj"
}


FIFO=${0%.sh}
[ -p "$FIFO" ] || mkfifo "$FIFO"

rel=0
enigo | eligo

Зачем это здесь? Смеха ради.
Кстати в баше можно организовать bidirectional pipes? Никак не соображу.

tetsuo tetsuo, (Updated )

Комментарии (10, +10)

Beri bash i ebash / Говнокод #11534 Ссылка на оригинал

0

  1. 1
  2. 2
#!/bin/bash
sed -e 's/^\s*$/\#/gi' < $1| sed -e 's/$/<br>/gi'| awk 'BEGIN { i1=0;print "<html><head><META HTTP-EQUIV=\"Content-Type\" CONTENT=\"text/html; charset=Windows-1251\"></head><body>"; } {  gsub(/^#/,"<a name=\"L"i1++"\">L"i1-1"</a>");print } END { for(i=0;i<=i1;i++){ print "<a href=\"#L"i"\">#"i"</a><br\ >"};print "</body></html>" }' > $1.html

Программа преобразует текстовый файл в html

AliceGoth AliceGoth, (Updated )

Комментарии (65, +65)