Автор Тема: Bash скрипт  (Прочетена 19816 пъти)

the_real_maniac

  • Напреднали
  • *****
  • Публикации: 1258
  • Kernel panic, me - no panic ;-) :-)
    • Профил
Bash скрипт
« Отговор #15 -: Aug 23, 2007, 18:12 »
1. "колко ще платиш"

реалист ?

2. "да са по икономични"

оптимист ?

--

все пак прав си че се получи дискусия, хвала  '<img'> Но не знам дал иначина е като се заяжда човек :-P



Активен

Powered by Debian GNU / LINUX /// Intel inside ...

„Насилието е последното убежище на некомпетентността“ - Айзък Азимов (1920 — 1992)

romeo_ninov

  • Напреднали
  • *****
  • Публикации: 2155
    • Профил
Bash скрипт
« Отговор #16 -: Aug 23, 2007, 19:01 »
Цитат (sdr @ Авг. 23 2007,18:28)
Не мислех да поствам след като казах каквото иках да кажа но понеже се понатрупаха въпроси към мен:

@Gaara
Цитат
sdr, като си толкова могъщ на думи, покажи ни и на практика колко си добър.


Колко си готов да платиш?

@GigaVolt
Цитат
@sdr, като си голям специялист вместо да плюеш защо не даде твой вариант на скрипта? Написал си цели 6 реда, а можеше с твойте способности да напишеш скрипта н един ред!

Щото има тонове готови такива скриптове.

Хубавото в цялата тая работа е, че успях да предизвикам дискусия и има надежда следващите ви скриптове да са по-иконимични

@sdr

В програмирането (най-общо) има правило че не е лошо програмата да бъде четима освен за компилатора/интерпретатора/траслатора и за автора/редактора/дебъгващия. Да, и аз съм чел няколко книги за писане на скриптове и мога да намеря сигурно десетки примери за "практически" безсмислено използване на програмата cat. Но много често за човешкия мозък е по-лесно да "види" така нещата, да ги прочете и разбере. Освен това скоростите на съвременните процесори са толкова големи че забавяне от 0.1% или даже 5% е несъществено в общия случай. И //офтопик не е лошо да е научиш да коментираш културно работата на другите. Все пак тук сме се "събрали" да дискутираме и помагаме, а не да се обиждаме (надявам се)



Активен

0x2B|~0x2B

sdr

  • Напреднали
  • *****
  • Публикации: 655
    • Профил
Bash скрипт
« Отговор #17 -: Aug 23, 2007, 21:01 »
@romeo_ninov: Ще го имам предвид. Особено когато става въпрос за 3 ПРОЦЕСА вместо един и цялото усилие за комуникация между тях. Ако на някой не му е ясен единствения ред с awk ,който заметва реда подвърпрос, огромния пайп който пак завършва на awk няма да му стане по-ясен. Нямам протиw всеки да си пише както иска по неговите машини, въпроса е да не се разпространяват "лоши практики" сред младежта. По логиката "скоростите на съвременните процесори са толкова големи" всички трябва да седнем да пишем всичко на bash смесен с VBasic под wine!
Активен

Йордан

  • Напреднали
  • *****
  • Публикации: 1451
  • Distribution: Ubuntu / Gentoo
  • Window Manager: Gnome
  • не е важно колко ти е голяма пишката, а какво можеш с нея
    • Профил
    • WWW
Bash скрипт
« Отговор #18 -: Aug 23, 2007, 21:02 »
Цитат (sdr @ Авг. 23 2007,17:28)
Хубавото в цялата тая работа е, че успях да предизвикам дискусия и има надежда следващите ви скриптове да са по-иконимични

Не забелязах някой да дискутира оптимизиране на код.!
Май народа дискотира ТЕБ!
Активен

Всеки пост - отговор на въпрос !!!

Йордан Георгиев
http://ygeorgiev.net/

the_real_maniac

  • Напреднали
  • *****
  • Публикации: 1258
  • Kernel panic, me - no panic ;-) :-)
    • Профил
Bash скрипт
« Отговор #19 -: Aug 23, 2007, 21:12 »
Цитат (sdr @ Авг. 23 2007,22:01)
@romeo_ninov: Ще го имам предвид. Особено когато става въпрос за 3 ПРОЦЕСА вместо един и цялото усилие за комуникация между тях. Ако на някой не му е ясен единствения ред с awk ,който заметва реда подвърпрос, огромния пайп който пак завършва на awk няма да му стане по-ясен. Нямам протиw всеки да си пише както иска по неговите машини, въпроса е да не се разпространяват "лоши практики" сред младежта. По логиката "скоростите на съвременните процесори са толкова големи" всички трябва да седнем да пишем всичко на bash смесен с VBasic под wine!

Не бе човек ... човекът(romeo_ninov) ти казва , че прегледност за програмист е по-добре от колкото краткият път ПОНЯКОГА !!!

Примерен код

същото като .........вместо

if(!mem_pointer) и if(mem_pointer == NULL);-)

и т.н.


горният пример е елементарен, но в такиа случеи се печели

1. че се разбира по-лесно идеята -> защо така е направено
2. че се намират по-лесно пролемите
и 3. че ако някой реши да променя е в пъти по-лесно '<img'> и гъвкаво за това става дума

то и аз го казах по-горе

Цитат (trm @ ,)

Ако е по-прегледно , защо да не се напише един cat в повече ? (примерно)

не винаги НАЙ-ЛЕСНИЯТ начин е НАЙ-БЪРЗИЯТ !





Активен

Powered by Debian GNU / LINUX /// Intel inside ...

„Насилието е последното убежище на некомпетентността“ - Айзък Азимов (1920 — 1992)

VladSun

  • Напреднали
  • *****
  • Публикации: 2166
    • Профил
Bash скрипт
« Отговор #20 -: Aug 23, 2007, 21:26 »
Това чак аз не го вярвам '<img'>

Примерен код

root@levski:~# cat pp*
#!/bin/bash

for ip in `cat /var/log/messages | grep Accepted | awk '{print $11}' | sort -u`; do
        echo OK
done

#!/bin/bash

for ip in `awk '/Accepted/ {print $11}' /var/log/messages | sort -u`; do
        echo OK
done

root@levski:~# time ./pp.sh
OK
OK
OK

real    0m0.051s
user    0m0.004s
sys     0m0.044s


root@levski:~# time ./pp2.sh
OK
OK
OK

real    0m0.218s
user    0m0.164s
sys     0m0.056s


PS: pp2.sh е втората част от изхода на cat .
PPS: Повторих опитите няколко пъти - резултата е качествено подобен.
PPPS:

Примерен код
root@levski:~# wc -l /var/log/messages
 166097 /var/log/messages




Активен

KISS Principle ( Keep-It-Short-and-Simple )
http://openfmi.net/projects/flattc/
Има 10 вида хора на този свят - разбиращи двоичния код и тези, които не го разбират :P

sdr

  • Напреднали
  • *****
  • Публикации: 655
    • Профил
Bash скрипт
« Отговор #21 -: Aug 23, 2007, 21:32 »
Ми нека коментираме скорости тогава

Примерен код
sdr@sdr ~ $ cat test1.sh
#!/bin/bash
cat /var/log/everything/current | grep "cron" | awk '{print $11}' > /dev/null
sdr@sdr ~ $ time ./test1.sh

real    0m0.086s
user    0m0.048s
sys     0m0.008s
sdr@sdr ~ $ cat test2.sh
#!/bin/bash
awk '/cron/{print $11}' /var/log/everything/current >/dev/null
sdr@sdr ~ $ time ./test2.sh

real    0m0.008s
user    0m0.008s
sys     0m0.000s
sdr@sdr ~ $ cat test3.sh
#!/bin/bash
cat /var/log/everything/current | egrep "cron" | awk '{print $11}' > /dev/null
sdr@sdr ~ $ time ./test3.sh

real    0m0.081s
user    0m0.048s
sys     0m0.004s
sdr@sdr ~ $                
Активен

VladSun

  • Напреднали
  • *****
  • Публикации: 2166
    • Профил
Bash скрипт
« Отговор #22 -: Aug 23, 2007, 21:35 »
1:1 друго не мога да кажа ...
Освен:

Цитат

root@levski:~# cat /proc/cpuinfo
processor       : 0
vendor_id       : GenuineIntel
cpu family      : 15
model           : 4
model name      : Intel® Pentium® 4 CPU 3.20GHz
stepping        : 9
cpu MHz         : 3200.866
cache size      : 1024 KB
bogomips        : 6410.12

processor       : 1
vendor_id       : GenuineIntel
cpu family      : 15
model           : 4
model name      : Intel® Pentium® 4 CPU 3.20GHz
stepping        : 9
cpu MHz         : 3200.866
cache size      : 1024 KB
bogomips        : 6400.72

root@levski:~# free
             total       used       free     shared    buffers     cached
Mem:        905324     859820      45504          0     215252     427280
-/+ buffers/cache:     217288     688036
Swap:       520684          0     520684

Активен

KISS Principle ( Keep-It-Short-and-Simple )
http://openfmi.net/projects/flattc/
Има 10 вида хора на този свят - разбиращи двоичния код и тези, които не го разбират :P

VladSun

  • Напреднали
  • *****
  • Публикации: 2166
    • Профил
Bash скрипт
« Отговор #23 -: Aug 23, 2007, 21:38 »
Примерен код

root@levski:~# cat pp3.sh
#!/bin/bash

for ip in `grep Accepted /var/log/messages | awk '{print $11}' | sort -u`; do
        echo OK
done

root@levski:~# time ./pp3.sh
OK
OK
OK

real    0m0.030s
user    0m0.012s
sys     0m0.020s
root@levski:~#


Едит: Това е най-доброто време при мен ...



Активен

KISS Principle ( Keep-It-Short-and-Simple )
http://openfmi.net/projects/flattc/
Има 10 вида хора на този свят - разбиращи двоичния код и тези, които не го разбират :P

tarator

  • Напреднали
  • *****
  • Публикации: 849
    • Профил
Bash скрипт
« Отговор #24 -: Aug 23, 2007, 21:45 »
Аз също винаги пиша cat | grep в скриптове. IMNSHO така е по-прегледно.

Awk не използвам. Както казва Роб Пайк, "If you think awk is the perfect programming language for the problem, you don't understand the problem yet."
Активен

A gentleman is one who is never rude unintentionally. - Noel Coward

sdr

  • Напреднали
  • *****
  • Публикации: 655
    • Профил
Bash скрипт
« Отговор #25 -: Aug 23, 2007, 21:51 »
Ха ха ха! Посипвам си главата с пепел!
Наистина използването на три процеса е даже и по-бързо!
Примерен код

sdr@sdr ~ $ wc -l test.log
166097 test.log
sdr@sdr ~ $ grep 'Apache configured'  test.log  | wc -l
65
sdr@sdr ~ $ cat test1.sh
#!/bin/bash
cat test.log | grep "Apache configured" | awk '{print $11}' > /dev/null
sdr@sdr ~ $ time ./test1.sh

real    0m2.435s
user    0m2.280s
sys     0m0.132s
sdr@sdr ~ $ cat test2.sh
#!/bin/bash
awk '/Apache configured/{print $11}' test.log >/dev/null
sdr@sdr ~ $ time ./test2.sh

real    0m2.564s
user    0m2.492s
sys     0m0.052s
sdr@sdr ~ $ cat test3.sh
#!/bin/bash
cat test.log | egrep "Apache configured" | awk '{print $11}' > /dev/null
sdr@sdr ~ $ time ./test3.sh

real    0m2.244s
user    0m2.112s
sys     0m0.112s
sdr@sdr ~ $ time ./test1.sh; time ./test2.sh; time ./test3.sh

real    0m2.251s
user    0m2.164s
sys     0m0.064s

real    0m2.578s
user    0m2.472s
sys     0m0.080s

real    0m2.315s
user    0m2.216s
sys     0m0.080s
sdr@sdr ~ $ time ./test1.sh; time ./test2.sh; time ./test3.sh

real    0m2.426s
user    0m2.312s
sys     0m0.096s

real    0m2.585s
user    0m2.508s
sys     0m0.056s

real    0m2.248s
user    0m2.124s
sys     0m0.104s
sdr@sdr ~ $ time ./test1.sh; time ./test2.sh; time ./test3.sh

real    0m2.248s
user    0m2.136s
sys     0m0.092s

real    0m2.582s
user    0m2.492s
sys     0m0.068s

real    0m2.261s
user    0m2.156s
sys     0m0.088s
sdr@sdr ~ $ time ./test3.sh; time ./test2.sh; time ./test1.sh

real    0m2.250s
user    0m2.112s
sys     0m0.112s

real    0m2.588s
user    0m2.512s
sys     0m0.060s

real    0m2.240s
user    0m2.116s
sys     0m0.108s
sdr@sdr ~ $ time ./test2.sh; time ./test3.sh; time ./test1.sh

real    0m2.610s
user    0m2.524s
sys     0m0.072s

real    0m2.253s
user    0m2.148s
sys     0m0.092s

real    0m2.367s
user    0m2.268s
sys     0m0.088s
sdr@sdr ~ $  
Активен

VladSun

  • Напреднали
  • *****
  • Публикации: 2166
    • Профил
Bash скрипт
« Отговор #26 -: Aug 23, 2007, 21:53 »
хех, още няколко машини ...

Примерен код

root@mail:/# time ./pp.sh
OK
OK
OK

real    0m1.009s
user    0m0.012s
sys     0m0.020s
root@mail:/# time ./pp2.sh
OK
OK
OK

real    0m0.153s
user    0m0.052s
sys     0m0.016s



root@relef:/# time ./pp.sh
OK

real    0m0.509s
user    0m0.024s
sys     0m0.100s
root@relef:/# time ./pp2.sh
OK

real    0m0.436s
user    0m0.212s
sys     0m0.200s
root@relef:/#


root@router:~# time ./pp.sh
OK

real    0m0.047s
user    0m0.020s
sys     0m0.028s
root@router:~# time ./pp2.sh
OK

real    0m0.044s
user    0m0.020s
sys     0m0.024s

Активен

KISS Principle ( Keep-It-Short-and-Simple )
http://openfmi.net/projects/flattc/
Има 10 вида хора на този свят - разбиращи двоичния код и тези, които не го разбират :P

VladSun

  • Напреднали
  • *****
  • Публикации: 2166
    • Профил
Bash скрипт
« Отговор #27 -: Aug 23, 2007, 21:55 »
Има смисъл - никога не правим:

Примерен код

grep -v "unwanted" file.txt > file.txt


Според мен това е причината ...
Активен

KISS Principle ( Keep-It-Short-and-Simple )
http://openfmi.net/projects/flattc/
Има 10 вида хора на този свят - разбиращи двоичния код и тези, които не го разбират :P

the_real_maniac

  • Напреднали
  • *****
  • Публикации: 1258
  • Kernel panic, me - no panic ;-) :-)
    • Профил
Bash скрипт
« Отговор #28 -: Aug 23, 2007, 21:57 »
Истината се открива в спора, _но само когато спора е качествен _и се прави от хора, _които търсят _истината '<img'>

качествена тема се получи след всичко , оказва се че освен прегледно , прегледното се оказва и по-добро от към бързодействие, значи се получава с един коршум - два заека , супер '<img'> (2в1)

 ':ok:'
Активен

Powered by Debian GNU / LINUX /// Intel inside ...

„Насилието е последното убежище на некомпетентността“ - Айзък Азимов (1920 — 1992)

sdr

  • Напреднали
  • *****
  • Публикации: 655
    • Профил
Bash скрипт
« Отговор #29 -: Aug 23, 2007, 21:59 »
Цитат (VladSun @ Авг. 23 2007,21:38)
Примерен код

root@levski:~# cat pp3.sh
#!/bin/bash

for ip in `grep Accepted /var/log/messages | awk '{print $11}' | sort -u`; do
        echo OK
done

root@levski:~# time ./pp3.sh
OK
OK
OK

real    0m0.030s
user    0m0.012s
sys     0m0.020s
root@levski:~#


Едит: Това е най-доброто време при мен ...

най добре замени awk-a  с cut -f11 -d" " аз така постигнах най-добро време но все пак не бих държал подобен код на моя машина '<img'>
Активен

Подобни теми
Заглавие Започната от Отговора Прегледи Последна публикация
BASH: Как да поддържам една програма работеща
Общ форум
Regia 1 12942 Последна публикация Feb 16, 2005, 08:51
от
Bash features
Настройка на програми
kostadinz 1 1652 Последна публикация Mar 25, 2005, 13:42
от n_antonov
Малко помощ за bash скрипт
Общ форум
idn 3 3260 Последна публикация Feb 10, 2008, 17:39
от neter
подмяна на дума във файл през bash
Хардуерни и софтуерни проблеми
mishot 12 7573 Последна публикация Aug 01, 2008, 14:54
от Hapkoc
За bash и команди за супер потребител
Общ форум
Vatman 4 6368 Последна публикация Oct 25, 2008, 19:25
от Vatman