LINUX.ORG.RU
ФорумAdmin

Изучая ABS...

 ,


1

2

Здравствуйте. Где можно найти большое количество баш-скриптов, с хорошим (жел-но русским) комментированием, начиная от простых и заканчивая более сложными скриптами?

AUR, http:/crux.nu, «репозитарий слаки»

Любой Pkgfile/PKGBUILD/Slackbuild - это bash-скрипт.

misteralter
()

Игры на bash и комментарии к ним. :) А если серьезно тут был гуру баша, но вот ник к сожалению забыл емнип на Z начинался, писал хорошие примеры в ответах, а так же давал хорошие ссылки на документацию. Может по поиску найдете...

anc ★★★★★
()
Последнее исправление: anc (всего исправлений: 1)

Так ты ж сам ответил на свой вопрос. Advanced Bash Scrpting Guide. На русском на opennet'е есть.

Kroz ★★★★★
()
Ответ на: комментарий от Kroz

когда последний раз читал, он был так топорно переведён, что оригинал на инглише было легче понять

darkenshvein ★★★★★
() автор топика
Ответ на: комментарий от greenman

Разбор пары примеров из advanced bash scripting guide

До второго не дошёл, бросил на первом. Этот мем про ВНЕЗАПНО при обсуждении книги достаточно, чтобы автора по теме больше не читать. Где у него доказательство, что в версии bash 2.0.4, которая там явно указана была операция деления по модулю?

vodz ★★★★★
()

Где можно найти большое количество баш-скриптов

linux ;)

с хорошим (жел-но русским) комментированием

Вот это вряд ли

начиная от простых и заканчивая более сложными скриптами?

простые в старых дистрибутивах в /etc/init.d/ ( /etc/rc.d/init.d/ ), сложнее в /usr/bin

cd /usr/bin; ls -1 -f ./ | xargs -n 100 file | grep -i shell

Ещё возможно на sourceforge или freshmeat есть какой-то поиск по языку

router ★★★★★
()
Ответ на: комментарий от dexpl

Тогда уж

Да я не сколько байты оптимизировал, сколько впервые увидел конструкцию ls | xargs, и ладно бы, так ведь еще с -n 100, как-будто это действительно там надо...

vodz ★★★★★
()
Ответ на: комментарий от vodz

ls | xargs

Н-да, слона-то я и не приметил. И вообще, хватило бы file /usr/bin/* | grep -i shell.

dexpl ★★★★★
()
Последнее исправление: dexpl (всего исправлений: 1)
Ответ на: комментарий от anc

А если серьезно тут был гуру баша, но вот ник к сожалению забыл емнип на Z начинался...

Вот точно! ТС Zmicier-ра я вспоминал.

Свят-свят-свят!

Но раз уж скастовали, то:

Где можно найти большое количество баш-скриптов, с хорошим (...) комментированием, начиная от простых и заканчивая более сложными скриптами?

Если имеются в виду реальные программы, то, увы, не видел. Этот самый literate programming вообще редкость, а на Баше, на котором и вообще программ мало... Но, конечно, все может быть. Если найдете, будьте добры, обязательно сообщите.

(жел-но русским) комментированием

А это даже не ищите.

Zmicier ★★★★★
()
Ответ на: комментарий от vodz

ls -1 -f ./ | xargs -n 100 file | grep -i shell

Кто ж вас так учил?

А кто у нас десятилетиями учит весь мир говнокодингу на Баше? Любимый Kroz’овский да Deathstalker’овский Мендель Купер вестимо:

| ls | xargs -p -l gzip gzips every file in current directory, one at a time, prompting before each operation.

— Advanced Bash-Scripting Guide — 2014 — С. 224

| Using wc to count how many .txt files are in current working directory:
| $ ls *.txt | wc -l

— ibid — С. 250

| ls /home/bozo | awk '{print "rm -rf " $1}'

— ibid — С. 276

| exe_file=$( ls -l /proc/$1 | grep "exe" | awk '{ print $11 }' )

— ibid — С. 466

| if ls -l nonexistent_filename 2>&1 | grep -q 'No such file or directory'

— ibid — С. 538

Zmicier ★★★★★
()
Последнее исправление: Zmicier (всего исправлений: 1)
Ответ на: комментарий от Zmicier
ls | xargs -p -l gzip # gzips every file in current directory, one at a time, prompting before each operation

Ну а чего, тут как раз удобно — будет отсортированно по алфавиту (find же не сортирует) и не будет проблемы max args если тупо echo *, а без echo, так у gzip * не будет промпта. Всё ровно наоборот, чем у того примера, что не оставило равнодушным прокомментировать в этом треде: отключить sort и отдельный cd и один столбец (по умолчанию не на терминал)...

Хотя это скорее unix, чем shell, тут явно цикл надо было делать, всё равно по одному аргументу работает. Про \n в именах лучше опустить :)

vodz ★★★★★
()
Последнее исправление: vodz (всего исправлений: 4)
Ответ на: комментарий от vodz

и не будет проблемы max args если тупо echo *, а без echo, так у gzip *

Вы, кажется, что-то напутали. Во-первых, как вы вообще сюда прилепите echo? Во-вторых, ARG_MAX — это именно к gzip(1), а никак не к нему.

Всё ровно наоборот, чем у того примера, что не оставило равнодушным прокомментировать в этом треде: отключить sort и отдельный cd и один столбец (по умолчанию не на терминал)...

А, так пан гольфист. :-) Ну тогда конечно.

Zmicier ★★★★★
()
Последнее исправление: Zmicier (всего исправлений: 2)
Ответ на: комментарий от Zmicier

Вы, кажется, что-то напутали. Во-первых, как вы вообще сюда прилепите echo

Ничего я не напутал. Задача в том скрипте описана - загзипить файлики спрашивая о каждом. У gzip опции prompt нет. echo * — тупая замена ls для xargs, которая спрашивая подтверждение выполняет одно действие по циклу. Тут ведь есть интересный момент, можно задавать в качестве теста на системное программирование под Unix: xargs одновременно имеет stdin и с пайпа и с ввода человеком после промпта.

ARG_MAX — это именно к gzip

ARG_MAX — это проблема exec(2), в данном случае shell, но так как echo давно встроенна, то я прогнал, с ARG_MAX для echo * проблем пока есть память - нет. :)

А, так пан гольфист.

Чо?

vodz ★★★★★
()
Ответ на: комментарий от vodz

А, так пан гольфист. :-)

Чо?

По жизни в гольф играете. В смысле в игру, как написать программу, уложившись в наименьшее количество символов.

Zmicier ★★★★★
()
Последнее исправление: Zmicier (всего исправлений: 3)
Ответ на: комментарий от Zmicier

Ну если «тупая» — это в том смысле, что превращающая все в кашу, а потому в принципе непригодная, то да.

Бгг. А слабо было на этом дурацком каталоге сделать ls -1 | xargs -n 1 ? Вы видите разницу? Я — не вижу. Тупая, это в данном случае делает ровно тоже, но совершенно неприспособленна к любому мало-мальскому усложнению задачи.

В смысле в игру, как написать программу, уложившись в наименьшее количество символов.

Вы опять промахнулись, там же было объяснение, что правка была по сути охреневания от, а не по оптимизации.

vodz ★★★★★
()
Ответ на: комментарий от vodz

А слабо было на этом дурацком каталоге сделать ls -1 | xargs -n 1 ? Вы видите разницу?

Да, прощу прощения. Тогда отвечаю на ваш вопрос, который «ну а чего». Того, что товарищ Купер умудрился пропустить в своем учебнике -d '\n' (а я так привык верить печатному слову, что забыл, что это Купер; а к нулевому разделителю так, что и забыл, что для xargs’а перевод строки — это не умолчание).

Вы опять промахнулись, там же было объяснение, что правка была по сути охреневания от, а не по оптимизации.

Ах да. Вижу-вижу. Вы пишете, что впервые увидели конструкцию вида ls | xargs — и именно она вас и возмутила. Впервые — это, право, удивительно. Но возмутила — правильно ведь сделала. Зачем же вы, когда я накидал вам аналогичных примеров из Купера, с’ехали на «отдельный cd» и отключенную сортировку?

Zmicier ★★★★★
()
Последнее исправление: Zmicier (всего исправлений: 1)
Ответ на: комментарий от Zmicier

Если имеются в виду реальные программы,

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

darkenshvein ★★★★★
() автор топика
Ответ на: комментарий от Zmicier

Тогда отвечаю на ваш вопрос, который «ну а чего».

Вы отвечаете на свой вопрос. В моём про пробелы было отдельно сказано, что не рассматривается, и без этого есть с чего охреневать.

Зачем же вы, когда я накидал вам аналогичных примеров из Купера, с’ехали на «отдельный cd» и отключенную сортировку?

Причём тут ваша куча, если разговор был ровно про первый, остальные разбирать — целую статью же писать. Отключенная сортировка, бесполезный вывод в один столбец и отдельный cd — это вообще было о причине замены ls на find для примера пользователя router и никак к вашему Куперу никакого дела не имела. Там же find не подойдёт, потому что для взаимодействия с человеком посредством спрашивания... а нафиг, устал уже по 3 раза одно и тоже долбить впустую.

vodz ★★★★★
()
Последнее исправление: vodz (всего исправлений: 2)
Ответ на: комментарий от darkenshvein

«zed is dead, baby. zed is dead»

Я же сказал - «в старых дистрибутивах»

И только не говори, что считаешь bash молодым перспективным ЯП ;)

router ★★★★★
()
Ответ на: комментарий от vodz

Вы отвечаете на свой вопрос.

Да нет, какой вопрос я задавал? На ваш, на вот этот:

>> ls | xargs -p -l gzip
> Ну а чего, тут как раз удобно...

В моём про пробелы было отдельно сказано

Что-то у меня со способностью видеть написанное. Можно цитату?

Отключенная сортировка

И что? Не нужна — вот и отключили.

бесполезный вывод в один столбец

Как это «бесполезный»? Вывод должен быть именно в один столбец. А играть в гольф никто и не собирался.

Zmicier ★★★★★
()
Ответ на: комментарий от Zmicier

Да нет, какой вопрос я задавал?

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

Можно цитату?

Да пожалуйста, последнее предложение: Изучая ABS... (комментарий)

И что? Не нужна — вот и отключили.

Ну и? Потому удобнее и безопаснее find path, а не cd path; ls -f .

Вывод должен быть именно в один столбец.

А, я понял, вы не в курсе, что по умолчанию у ls при выводе не на терминал, а, например, в пайп, все утилиты, которые красиво рисуют колонки начинают выводить в одну? Ну так вот, это очень просто понять, так как у пайпа нет ширины строки :)

vodz ★★★★★
()
Ответ на: комментарий от vodz

В моём про пробелы было отдельно сказано

Что-то у меня со способностью видеть написанное. Можно цитату?

Да пожалуйста, последнее предложение: Изучая ABS... (комментарий)

И все-таки у меня определенно трудности с прочтением вами написанного. Дайте *цитату*, пожалуйста.

бесполезный вывод в один столбец

Как это «бесполезный»? Вывод должен быть именно в один столбец. А играть в гольф никто и не собирался.

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

Нет-т, не поняли. И, боюсь, уже не поймете, занятная и затягивающая игра в бесполезную экономию байтов вас окончательно испортила. :-(

Zmicier ★★★★★
()
Ответ на: комментарий от darkenshvein

когда последний раз читал, он был так топорно переведён, что оригинал на инглише было легче понять

Я читал, было всё хорошо. Хотя оригинал всегда лучше: там как минимум есть более новая версия.

Kroz ★★★★★
()
Ответ на: комментарий от Zmicier

Нет-т, не поняли. И, боюсь, уже не поймете

Тогда закончим. Попробуйте научиться признавать свои ошибки и незнания, а не маскировать их в изощренном хамстве (в этом вам стоит поаплодировать, многие тут так не могут, сразу переходят на грубый мат).

vodz ★★★★★
()

Скрипты Lfs и смежных с ним проектов. Каменты в оригинале не по русски но как примеры чудесные.

anonymous
()
Ответ на: комментарий от vodz

Тогда закончим.

Жаль. Право, жаль. А я так хотел увидеть, как (и как долго) вы будете продолжать убеждать меня, что вы написали не «\n» [0], а «пробелы» [1]. :-)

Попробуйте научиться признавать свои ошибки...

Увы и ах, но повторять критику, которую вы привыкли слышать в свой адрес, в отношении других людей бывает неразумно. Особенно, когда в контексте это выглядит откровенно анекдотично.

(Кстати о признании ошибок. Если залетный читатель нитей не уловит, за какую свою ошибку я извинялся выше [2], то это я просто ее осознал и успел исправить письмо быстрее, чем на нее указал т. vodz; то есть надо смотреть прошлые его редакции.)

в этом вам стоит поаплодировать

/me поклонился.

[0] Изучая ABS... (комментарий)
[1] Изучая ABS... (комментарий)
[2] Изучая ABS... (комментарий)

Zmicier ★★★★★
()
Последнее исправление: Zmicier (всего исправлений: 1)
Ответ на: комментарий от Zmicier

Жаль. Право, жаль. Увы и ах, /me поклонился.

Вам никто не говорил, что бесплатное клоунство вызывает только жалость?

А я так хотел увидеть

Пф, судорожно нашли через несколько комментов от обсуждаемого опцию -d '\n' для xargs, а потом еще других обвинять в том, что аналог с этой опцией не аналог? И это мы еще не дошли до того, что этой опции нет у POSIX-ового xargs.

vodz ★★★★★
()
Ответ на: комментарий от vodz

Вам никто не говорил, что бесплатное клоунство вызывает только жалость?

Нет, не говорил. Благодарю за откровенность. Хотя... не хочу вас обидеть, но все-таки подозреваю, что это скорее зависит от качества, чем от цены.

В моём про пробелы было отдельно сказано

Что-то у меня со способностью видеть написанное. Можно цитату?

Да пожалуйста, последнее предложение: Изучая ABS... (комментарий)

И все-таки у меня определенно трудности с прочтением вами написанного. Дайте *цитату*, пожалуйста.

закончим

А я так хотел увидеть, как (и как долго) вы будете продолжать убеждать меня, что вы написали не «\n» [0], а «пробелы» [1].

судорожно нашли через несколько комментов от обсуждаемого опцию -d '\n' для xargs, а потом еще других обвинять в том, что аналог с этой опцией не аналог?

Извините, я, кажется, потерял нить разговора.

Zmicier ★★★★★
()
Ответ на: комментарий от Zmicier

Извините, я, кажется, потерял нить разговора.

Так и предётся писать пространное сообщение, иначе ваше клоунство не уймётcя. Про '\n' я писал в шутливой форме, так как явно предполагал, что гуру bash-а с пробелами разберётся, а вот с переводами строки будут проблемы, так как ls не предусматривает вывод в виде zero-terminating. Потому оставил это вообще из рассмотрения. Хотя настоящий гуру bash-а дожден был бы понять, что «замена на find более безопасна» - это собственно речь ровно о том.

А вы же начали клоунствовать после того, как оказалось, что совершенно не в курсе были, что для xargs без -d '\n' и ls -1 для пайпа ничего не меняется. Но как же можно признать свой факап то?

vodz ★★★★★
()
Последнее исправление: vodz (всего исправлений: 3)
Ответ на: комментарий от vodz

Про '\n' я писал в шутливой форме

Ой, все.

Но как же можно признать сво[ю оплошность]?

Хм... Может быть ровно так, как я это сделал выше, то есть с дежурным извинением и небольшим пояснением по существу?

А вообще, знаете, я вам благодарен — вы мне открыли новые грани человеческой природы: впервые встречаю человека, настолько не готового признавать даже самые плевые, не стоящие и выеденного яйца помарки в своих словах — всего одно слово (!) на веб-форуме (!!) пропустил — и уже начинает лепить отмазки, причем самые бездарные: «я написал», «я написал <ссылка туда, где должно быть, но нет>» и наконец венец всех отмазок — «я пошутил»... Так вот — настолько не готового, что он отказывается верить своим глазам, когда люди вокруг него это делают безо всяких проблем.

Zmicier ★★★★★
()
Ответ на: комментарий от Zmicier

А я уже привык к тому, что тут даже не поймёшь, человек туп или он просто пытается скрыть свою оплошность тупостью. Ну как можно не понять, после трёх объяснений, что xargs без -d '\n' работает аналогично для пробелов и '\n', оригинальному автору достаточно было ls-а, а раз так, то и echo *, но про лучшесь find-а, особенно при явном указании не сортировать для ls-а тоже было сказано отдельно, и потому ваше бесконечное мнимое торжество на самом деле вас всё глубже и глубже затягивает в собственное дерьмо? Что, правда сложная фраза? Ну да, олигофрения не лечится, сочувствую.

vodz ★★★★★
()
Последнее исправление: vodz (всего исправлений: 1)
Ответ на: комментарий от vodz

Забаньте уже этого водза, пожалуйста, замучал нести свои сокровенные знания с важным видом в каждой теме.

anonymous
()
Ответ на: комментарий от anonymous

Есть такой недостаток. Но он проявляется тогда, когда после ответа, кристально корректного во всех смыслах, начиная с вежливости, начинают меня учить, и вдруг оказывается, что зря пытались. А уж тут срабатывает типичный ЛОР — с оплошностью тут не мирятся.

А топик заспамливается отсутствием личный сообщений, да и сообщения тут грубее чем следовало возможно именно по причине отсутствия PM.

vodz ★★★★★
()
Последнее исправление: vodz (всего исправлений: 1)
29 июня 2019 г.
Ответ на: комментарий от vodz

Не, всё равно одинаковое говно. Из-за этого в моём кде уже 20 лет баги при работе с файлами. А sort, xargs, uniq и прочее чему можно скормить выхлоп find, тем временем умеет считывать строки разделённые \0 — это наверно единственный безопасный способ работы с файлами в шелле на сегодняшний день. Но это добавили в gnu coreutils. Поэтому то фряха и сосёт, хахаха.

anonymous
()
Ответ на: комментарий от anonymous

Два года вынашивали... Я уже забыл о чём тут речь. Разделение по \0 - это для работы со списком файлов, там система гарантирует, что \0 не может быть. А вот в самих файлах нули — запросто могут быть.

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