LINUX.ORG.RU

Bash тоже может быть комбайном


0

0

Вышел очередной патч bashdiff-1.16 для любителей экспериментировать с "башизмами". Этот патч добавляет оболочке bash-3.0 некоторые полезные возможности, заимствованные из Awk, Python, Zsh, Ksh.

С подробностями можно ознакомиться по следующей ссылке http://home.eol.ca/~parkw/index.html#...

Ссылка для скачивания http://home.eol.ca/~parkw/bashdiff/ba...

>>> Подробности

★★★★★

Проверено: Shaman007 ()

Re: Bash тоже может быть комбайном

bash рулит

zsh фтопку, пока не научится с utf8 работать

anonymous ()

Re: Bash тоже может быть комбайном

Свежевыкрашенный набор граблей, для создания несовместимых скриптов.

Sun-ch ()
Ответ на: Re: Bash тоже может быть комбайном от Sun-ch

Re: Bash тоже может быть комбайном

Младой человек - попуститесь, не исчите везде красноглазых багописателей. Уж что-что а баши слава богу с Юникса мало чем изменились. У виндовой консоли и то обратная несовместимость намного выше :)

Linfan ★★★★★ ()

Re: Bash тоже может быть комбайном

bash жил, живет и жить будет

anonymous ()
Ответ на: Re: Bash тоже может быть комбайном от Linfan

Re: Bash тоже может быть комбайном

Простите, что не в тему. Про zsh что можите сказать? Стоит он того, чтобы его изучать? (Возможностей у него говорят много, так что он может mc за пояс заткнуть)

anonymous ()
Ответ на: Re: Bash тоже может быть комбайном от anonymous

Re: Bash тоже может быть комбайном но IPython лучше всех

побочный эффект привыкания к таким средам - тяжело работать под обычными башами на других машинах :)

вообще же рекомендую всем IPython - штука просто фантастическая и оставляет позади все известные доселе шеллы. Подробнее тут:
http://www.livejournal.com/users/vadim_kataev/9702.html

как вам например такие штучки:
for i in range(1,30):wget -c "http://dl.zvuki.ru/3/0692/mp3/${i}.mp3"

или вот такие:
$$a=ls
for i in a: cp ${i} ${i}.bak

и много чего ещё

vm ★★ ()

Re: Bash тоже может быть комбайном но IPython лучше всех

>вообще же рекомендую всем IPython - штука просто фантастическая и оставляет позади все известные доселе шеллы.

действительно фантастика!

>как вам например такие штучки: for i in range(1,30):wget -c "http://dl.zvuki.ru/3/0692/mp3/${i}.mp3"

да также как и for i in `seq 1 30`; do wget -c "http://dl.zvuki.ru/3/0692/mp3/${i}.mp3" ; done

>или вот такие:$$a=ls; for i in a: cp ${i} ${i}.bak

for i in `ls`; do cp $i $i.bak ; done

то что я написал - sh, даже не bash.

аффтар, учи албанский

ngrechukh ()

Re: Bash тоже может быть комбайном но IPython лучше всех

ок. а например такие вот:
$$avi=ls -1 *.avi
$$srt=ls -1 *.srt
avisrt = ['mplayer "'+ x +'" -sub "'+y+'"' for x in avi for y in srt]

или так:
avisrt=map(dododo , avi, srt)
shell(avisrt[NUMBER_OF_VIDEO] + ' -subfps 24')

vm ★★ ()

Re: Bash тоже может быть комбайном но IPython лучше всех

>$$avi=ls -1 *.avi $$srt=ls -1 *.srt avisrt = ['mplayer "'+ x +'" -sub "'+y+'"' for x in avi for y in srt]

и опять же for x in `ls *.avi`; for y in `*.srt`; do mplayer $x -sub $y; done

не совсем понял семантику последнего присваивания, но не суть важно.

>avisrt=map(dododo , avi, srt) shell(avisrt[NUMBER_OF_VIDEO] + ' -subfps 24')

а это да. но к башу можно написать макросы.

ngrechukh ()

Re: Bash тоже может быть комбайном но IPython лучше всех

2vm:

>всё можно, вопрос в удобочитаемости и простоте написания , в чём питону равных нет

По мне, так шеловские попроще читаются:)

Led ★★★☆☆ ()

Re: Bash тоже может быть комбайном но IPython лучше всех

>По мне, так шеловские попроще читаются:)

вот задачка требующая двухмерности: список mp3 и список текстовых файлов с тэгами. нужно: read A из одного источника и _одновременно_ read B из второго

красиво не получится, бо трубы одномерные.

ngrechukh ()

Re: Bash тоже может быть комбайном

новость интерестно, но - сие есть изврат.
сейчас оболочка должна обеспечивать совместимость 
между системами - беремс linux/bsd , solaris, hpux, aix
/bin/sh - и что должны получить ? праально - posix shell..
и ничё более; максимум - более удобный user-интерфейс, то есть 
auto-complete, history, биндинги туда-сюда, но блин не разницу
в языке, тем более в таких нелепостях. Либо bash - системная оболочка,
либо породия на php|perl.

Лучше бы упорядочили и стандартизовали поведение конвееров,
а то у `find xxx | grep yyy`
$? даёт результат поиска в последнем каталоге, то есть может 1, может 0.

Мощь оболочек unix - конвееры - надо ИХ идеалогически развивать.

anonymous ()

Re: Bash тоже может быть комбайном но IPython лучше всех

> вот задачка требующая двухмерности: список mp3 и список текстовых файлов с тэгами. нужно: read A из одного источника и _одновременно_ read B из второго

> красиво не получится, бо трубы одномерные.

man paste ?

monk ★★★★★ ()

Re: Bash тоже может быть комбайном но IPython лучше всех

>ок. а например такие вот:
>$$avi=ls -1 *.avi
>$$srt=ls -1 *.srt
>avisrt = ['mplayer "'+ x +'" -sub "'+y+'"' for x in avi for y in srt]

>или так:
>avisrt=map(dododo , avi, srt)
>shell(avisrt[NUMBER_OF_VIDEO] + ' -subfps 24')

Примерно так?
avi=(*.avi) ; srt=(*.srt); i=0
while [ x${Q[$i]} != "x" ] ; do
echo whatever ${avi[$i]} ${srt[$i]}
i=$(($i+1))
done

;)

anonymous ()

Re: Bash тоже может быть комбайном

Ей бо материться хочется... Я понимаю конечно что баш это круто... Я понимаю что всякие мега шелы тоже круто, но зачем же превращять рабочимй инструмент в игрушку/пазл/конструктор/гребу_чо_исчо ... Да скрипеть на bash удобно и красиво... скрипеть на sh немногим менее удобно всего лишь (меньше фичей тож)... я даже незнаю что такое нужно писать постоянно (ибо шелл это просто рабочий инструмент)... IMHO для чего то более чем простенький скрип нужно использовать уже perl/C/C++/python/FreePascal ... ибо чего чего а компиляторов/интерпретаторов в Линукс всегда хватало... мдя...

Jetty ★★★★★ ()

Re: Bash тоже может быть комбайном но IPython лучше всех

тьфу ты. а еще юниксоиды. такие штучки curl без всяких шелов делать умеет. а если приспичит то и на awk можно факториалы считать. зачем еще учить какой то неудобный попсовый язык с обязательными отступами

anonymous ()
Ответ на: Re: Bash тоже может быть комбайном от ngrechukh

Re: Bash тоже может быть комбайном

Нарушишь унихвэй, вставляя в одну софтину функциональность, присутствующую в другой, когда это не требуется из соображений производительности. На хрена шеллу знать про регэкспы, к примеру, если есть grep и awk?

vlugovsky ()
Ответ на: Re: Bash тоже может быть комбайном от anonymous

Re: Bash тоже может быть комбайном

а ты почитай man find на предмет -iregexp и удивись. кроме того зачем совместимость с мертвым чпуксом? или solaris, aix? я на линухе и фре ставлю баш. баш - это нынче стандарт дефакто.

anonymous ()
Ответ на: Re: Bash тоже может быть комбайном от anonymous

Re: Bash тоже может быть комбайном

> а ты почитай man find на предмет -iregexp и удивись. кроме того зачем совместимость с мертвым чпуксом? или solaris, aix? я на линухе и фре ставлю баш. баш - это нынче стандарт дефакто.

а на десктопе стандарт де-факто это винда. и что - теперь все программы писать только под нее?

anonymous ()

Re: Bash тоже может быть комбайном

Ещё bash вот так умеет :) $ cat < /dev/tcp/weather.tomsk.net/7777 температура 17.7 гр, давление 749.3 мм рт/с, ветер сев-вос 2 м/сек

x11term ()
Ответ на: Re: Bash тоже может быть комбайном от x11term

Re: Bash тоже может быть комбайном

IPython - самодостаточный инструмент с полной функциональностью питона.
Баш годен лишь для самых примитивных задач, более сложные пассажи превращаются в головную боль.

vm ★★ ()
Ответ на: Re: Bash тоже может быть комбайном от vm

Re: Bash тоже может быть комбайном

тебе же сказали. шелл это шелл. напяливать на него навороты - нарушение unix-way. а более сложные пассажи пишутся на перле, сях и фортране.

anonymous ()
Ответ на: Re: Bash тоже может быть комбайном от vm

Re: Bash тоже может быть комбайном

развитие - это замечательно, выбор - тоже неплохо, примерчики занятные, все это в личных и админских задачках сделает жизнь приятнее, но серьезные переносимые вещи imo как делались, так и будут делаться на sh, реализуя необходимую функциональность на sed/awk/perl/python/ruby .. вполне в духе юниксвея

NiKel ()

Re: Bash тоже может быть комбайном но IPython лучше всех

> вот задачка требующая двухмерности: список mp3 и список текстовых файлов с тэгами. нужно: read A из одного источника и _одновременно_ read B из второго

> красиво не получится, бо трубы одномерные.

стало быть надо создать два (три...сколько угодно) пайпа. Видимо фильтр умеет читать из двух источников сразу, например из stdin и из некого файла одновременно или из двух разных файлов?

mkfifo mypipe && cat src1 > mypipe & cat src2 | filter mypipe

или

mkfifo mypipe && cat src1 > mypipe & mkfifo mypipe2 && cat src2 > mypipe2 & filter mypipe mypipe2

читаем в обоих случаях из пайпов, в первом только один из них named pipe, во втором оба. В обоих случаях временных файлов нет и диск в передаче данных не участвует

anonymous ()

Re: Bash тоже может быть комбайном но IPython лучше всех

опс, не отформатировал в пред посте...

> вот задачка требующая двухмерности: список mp3 и список текстовых файлов с тэгами. нужно: read A из одного источника и _одновременно_ read B из второго

> красиво не получится, бо трубы одномерные.

стало быть надо создать два (три...сколько угодно) пайпа. Видимо фильтр умеет читать из двух источников сразу, например из stdin и из некого файла одновременно или из двух разных файлов?

mkfifo mypipe && cat src1 > mypipe &
cat src2 | filter mypipe

или

mkfifo mypipe && cat src1 > mypipe &
mkfifo mypipe2 && cat src2 > mypipe2 &
filter mypipe mypipe2

читаем в обоих случаях из пайпов, в первом только один из них named pipe, во втором оба. В обоих случаях временных файлов нет и диск в передаче данных не участвует

anonymous ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.