|
2.8, Аноним (16), 12:10, 08/12/2020 [^] [^^] [^^^] [ответить] [↑] [п©б╘п▒Б┬≥Б∙≈ п©б╘п▒Б┬≥Б∙≥п©б╘п▒Б┬≥Б∙⌡п©б╘п▒Б┬≥Б∙▓п©б╘п▒Б┬≥я▒я▐Б√░п▒Б√═Б■─п©б╘п▒Б┬≥ц╥я▐Б√░п▒Б√═Б√└п©б╘п▒Б┬≥Б∙⌡я▐Б√░п▒Б√═Б■─я▐Б√░п▒Б√═Б√▒]
| +2 +/– |
Зшизмы заточены на комфортный интерактив (и куча плагинов комплектом соответственно тоже) и баш на скрипты, в значительной мере избавленные внешних вызовов. Он легче зш, но некоторые поведение в частности с пайпами и его ридлайн довольно своеобразное. Вроде я столкнулся с несовместимыми отличиями в глобах, сетопт и хэштейблах, из-за чего от поддержки зш в качестве интерпретатора пришлось отказаться. А кроме того, зш есть не каждой системе, и баш есть везде, поэтому если и брать зш, то только "для души".
| |
|
|
|
|
|
7.156, Аноним (230), 19:25, 08/12/2020 [^] [^^] [^^^] [ответить] [п©б╘п▒Б┬≥Б∙≈ п©б╘п▒Б┬≥Б∙≥п©б╘п▒Б┬≥Б∙⌡п©б╘п▒Б┬≥Б∙▓п©б╘п▒Б┬≥я▒я▐Б√░п▒Б√═Б■─п©б╘п▒Б┬≥ц╥я▐Б√░п▒Б√═Б√└п©б╘п▒Б┬≥Б∙⌡я▐Б√░п▒Б√═Б■─я▐Б√░п▒Б√═Б√▒]
| –1 +/– |
Речь, вроде, шла не обо мне и не о владельцах зоопарков, а о тех, у кого
> больше одного компа
Два — это всё ещё больше одного, или я слишком давно не слежу за новостями арифметики?
P. S. Если ты админишь зоопарк серверов без какого бы то ни было SCM, это говорит не о твоей крутости, а о твоей профнепригодности.
| |
|
|
|
|
|
|
|
|
|
|
|
6.81, Аноним (16), 14:52, 08/12/2020 [^] [^^] [^^^] [ответить] [п©б╘п▒Б┬≥Б∙≈ п©б╘п▒Б┬≥Б∙≥п©б╘п▒Б┬≥Б∙⌡п©б╘п▒Б┬≥Б∙▓п©б╘п▒Б┬≥я▒я▐Б√░п▒Б√═Б■─п©б╘п▒Б┬≥ц╥я▐Б√░п▒Б√═Б√└п©б╘п▒Б┬≥Б∙⌡я▐Б√░п▒Б√═Б■─я▐Б√░п▒Б√═Б√▒]
| –2 +/– |
Редко не редко, примерно в 1 из 10 случаев без него никак. Или как, но в 1000 раз сложнее и запутанее. Другое дело, что можно и взять питон. И использовать eval уже в нём, ахаха! Ну там ast.literal_eval есть что всё же получше. Да и в целом eval в питоне нужен примерно никогда, а вот в баше без него просто никуда. Вообще все динамические хэштейблы, массивы, переменные это всё eval будет.
| |
|
|
|
|
|
|
|
5.265, Аноним (263), 14:43, 09/12/2020 [^] [^^] [^^^] [ответить] [↑] [п©б╘п▒Б┬≥Б∙≈ п©б╘п▒Б┬≥Б∙≥п©б╘п▒Б┬≥Б∙⌡п©б╘п▒Б┬≥Б∙▓п©б╘п▒Б┬≥я▒я▐Б√░п▒Б√═Б■─п©б╘п▒Б┬≥ц╥я▐Б√░п▒Б√═Б√└п©б╘п▒Б┬≥Б∙⌡я▐Б√░п▒Б√═Б■─я▐Б√░п▒Б√═Б√▒]
| +/– |
>Сколько тысяч процессов при этом вызывал каждый из тысячи процессов?
FYI https://github.com/gh0stwizard/yafb Там две ветки с разным подходом.
Твой вопрос смешной, т.к. 2000 процессов, которые тупо складывают одно число убивают (ну раньше убивали) линукс полностью. Если не понял в чем суть вопроса, то ты make -j 10000 делаешь или как велят умные дяди make -j {кол-во ядер + 1}? Ок, даже если ты чутка в теме и скажешь, что это из-за disk i/o, то смотри линк выше, там нет никакого disk i/o.
| |
|
|
|
|
|
4.277, Аноним (263), 21:58, 09/12/2020 [^] [^^] [^^^] [ответить] [п©б╘п▒Б┬≥Б∙≈ п©б╘п▒Б┬≥Б∙≥п©б╘п▒Б┬≥Б∙⌡п©б╘п▒Б┬≥Б∙▓п©б╘п▒Б┬≥я▒я▐Б√░п▒Б√═Б■─п©б╘п▒Б┬≥ц╥я▐Б√░п▒Б√═Б√└п©б╘п▒Б┬≥Б∙⌡я▐Б√░п▒Б√═Б■─я▐Б√░п▒Б√═Б√▒]
| +/– |
>А потом — то есть perl.
Как перловик со стажем, ответственно заявляю, что бородатые дядьки, которые говорили, что awk решает 95% задач perl, были абсолютно правы. Да, на перле можно делать что-то сложнее, но в контексте скриптов, не _приложений_, awk намного удобнее, т.к. а) есть во всех системах б) стандартизированный (не нужно трахатся с вопросом а есть в _этой_ системе такой-то пакет) в) компактный г) законченный. Если вопрос стоит на чем писать _приложение_, то вариантов масса, факторов влияющих на решение задачи масса и решений масса. Опять же, из личного опыта, приложение писать скорее всего придется на чем-то сложнее чем awk, включая perl.
| |
|
|
|
|
|
3.90, Аноним (230), 15:10, 08/12/2020 [^] [^^] [^^^] [ответить] [↓] [п©б╘п▒Б┬≥Б∙≈ п©б╘п▒Б┬≥Б∙≥п©б╘п▒Б┬≥Б∙⌡п©б╘п▒Б┬≥Б∙▓п©б╘п▒Б┬≥я▒я▐Б√░п▒Б√═Б■─п©б╘п▒Б┬≥ц╥я▐Б√░п▒Б√═Б√└п©б╘п▒Б┬≥Б∙⌡я▐Б√░п▒Б√═Б■─я▐Б√░п▒Б√═Б√▒]
| +/– |
Смысл в этом тот, что написанный тобой скрипт должен работать независимо от того, установлен в системе (не твоей) bash или нет. Ну если ты программист, то есть. Если админ, то смысла, может быть, и нет, тебе виднее.
| |
|
4.96, вынь любит вас во все девайсы (?), 15:39, 08/12/2020 [^] [^^] [^^^] [ответить] [↓] [п©б╘п▒Б┬≥Б∙≈ п©б╘п▒Б┬≥Б∙≥п©б╘п▒Б┬≥Б∙⌡п©б╘п▒Б┬≥Б∙▓п©б╘п▒Б┬≥я▒я▐Б√░п▒Б√═Б■─п©б╘п▒Б┬≥ц╥я▐Б√░п▒Б√═Б√└п©б╘п▒Б┬≥Б∙⌡я▐Б√░п▒Б√═Б■─я▐Б√░п▒Б√═Б√▒]
| +/– |
Это понятно, насколько оно будет в итоге работать как надо, вот вопрос. Тот же баш не совместим между собой в зависимости от версии. Т.е. что лучше универсальный скрипт, возможно вызывающий проблемы или нативный баш, который можно доставить с большинстве случаев. Получается нужно учитывать зоопарк шелов и их версий, нет? А сложность скрипта и накладываемые ограничения?
Я бы выбрал второе, а те места куда баш никак, но очень надо, то заточил бы отдельно. В общем, филькин труд.
| |
|
5.120, Аноним (230), 16:36, 08/12/2020 [^] [^^] [^^^] [ответить] [↑] [п©б╘п▒Б┬≥Б∙≈ п©б╘п▒Б┬≥Б∙≥п©б╘п▒Б┬≥Б∙⌡п©б╘п▒Б┬≥Б∙▓п©б╘п▒Б┬≥я▒я▐Б√░п▒Б√═Б■─п©б╘п▒Б┬≥ц╥я▐Б√░п▒Б√═Б√└п©б╘п▒Б┬≥Б∙⌡я▐Б√░п▒Б√═Б■─я▐Б√░п▒Б√═Б√▒]
| +/– |
> универсальный скрипт, возможно вызывающий проблемы
Если он вызывает проблемы, он не универсальный.
> Получается нужно учитывать зоопарк шелов и их версий, нет?
Нет. Как правило, достаточно придерживаться стандарта и не использовать то, что выходит за его рамки.
> А сложность скрипта и накладываемые ограничения?
Если скрипт получается слишком сложным, его лучше писать на другом языке. Шелл хорош для сравнительно простых вещей.
> Я бы выбрал второе, а те места куда баш никак, но очень надо, то заточил бы отдельно.
Ну, то есть, ты не программист, о чём я и писал. Программист зачастую знает очень мало о целевой системе и не имеет возможности повлиять на состав установленного на ней софта. Для контролируемых тобой систем, безусловно, можешь использовать, что тебе вздумается.
| |
|
|
|
|
|
|
5.181, VINRARUS (ok), 20:39, 08/12/2020 [^] [^^] [^^^] [ответить] [п©б╘п▒Б┬≥Б∙≈ п©б╘п▒Б┬≥Б∙≥п©б╘п▒Б┬≥Б∙⌡п©б╘п▒Б┬≥Б∙▓п©б╘п▒Б┬≥я▒я▐Б√░п▒Б√═Б■─п©б╘п▒Б┬≥ц╥я▐Б√░п▒Б√═Б√└п©б╘п▒Б┬≥Б∙⌡я▐Б√░п▒Б√═Б■─я▐Б√░п▒Б√═Б√▒]
| +/– |
> Во-первых, что-то странное ты там описал. Слабо верится в такое поведение. Во-вторых,
> dash — урезанный форк ash, так что баги у них вполне
> могут быть общие. В-третьих, если баг и был, из твоих же
> слов следует, что он давно исправлен.
Мне тоже было неимоверно сложно в это поверить — больше года не верил пока не начал раскопки.
dash имеет сообщение о завершении фонового процеса, а busybox ash нет.
И да, исправлено костылём в скрипте всего лиш.
ПС: разве ash развивает щас кто то?
| |
|
|
|
|
1.153, VINRARUS (ok), 19:12, 08/12/2020 [ответить] [﹢﹢﹢] [ · · · ] [↓] [↑] [п©б╘п▒Б┬≥Б∙≈ п©б╘п▒Б┬≥Б∙≥п©б╘п▒Б┬≥Б∙⌡п©б╘п▒Б┬≥Б∙▓п©б╘п▒Б┬≥я▒я▐Б√░п▒Б√═Б■─п©б╘п▒Б┬≥ц╥я▐Б√░п▒Б√═Б√└п©б╘п▒Б┬≥Б∙⌡я▐Б√░п▒Б√═Б■─я▐Б√░п▒Б√═Б√▒]
| +/– |
Bash такой же как и system:D мегакусок говнокода.
А 5.1 ещо более тормозное и размазаное удобрение чем 5.0:
time bash-5.0 -c 'D=1; while [ "$D" -lt 1000000 ]; do D="$((D+1))"; done'
real 0m6,178s
user 0m6,173s
sys 0m0,005s
time bash-5.1 -c 'D=1; while [ "$D" -lt 1000000 ]; do D="$((D+1))"; done'
real 0m7,184s
user 0m7,184s
sys 0m0,001s
time dash-0.5.10.2 -c 'D=1; while [ "$D" -lt 1000000 ]; do D="$((D+1))"; done'
real 0m2,186s
user 0m2,185s
sys 0m0,001s
Скомпилировано и сконфигурировано на OpenSUSE.
ПС: кто не понял — в этом примере dash на 329% быстрее исполняет скрипт чем bash-5.1
| |
|
|
3.184, VINRARUS (ok), 20:45, 08/12/2020 [^] [^^] [^^^] [ответить] [п©б╘п▒Б┬≥Б∙≈ п©б╘п▒Б┬≥Б∙≥п©б╘п▒Б┬≥Б∙⌡п©б╘п▒Б┬≥Б∙▓п©б╘п▒Б┬≥я▒я▐Б√░п▒Б√═Б■─п©б╘п▒Б┬≥ц╥я▐Б√░п▒Б√═Б√└п©б╘п▒Б┬≥Б∙⌡я▐Б√░п▒Б√═Б■─я▐Б√░п▒Б√═Б√▒]
| +/– |
> Баш вообще в циклах хреново работает, ты бы ещё файл построчно читать
> попробовал. Вот попробуй, охренеешь.
> Поэтому циклы лучше на линуксовые утилиты положить, а не на баш. Башу
> только управление софтом, переменными, функциями можно и это реально бомба.
Мне вот нада скриптом управлять скоростью вентилятора следя за термодатчиками, используя простую арифметику делать плавное увеличение\уменьшение оборотов.
Я написал скрипт весом 4 кб на sh, 4 года работает без проблем.
На какие альтернативы среди утилит положыть эту логику?
| |
|
|
|
|
5.222, VINRARUS (ok), 00:50, 09/12/2020 [^] [^^] [^^^] [ответить] [↓] [п©б╘п▒Б┬≥Б∙≈ п©б╘п▒Б┬≥Б∙≥п©б╘п▒Б┬≥Б∙⌡п©б╘п▒Б┬≥Б∙▓п©б╘п▒Б┬≥я▒я▐Б√░п▒Б√═Б■─п©б╘п▒Б┬≥ц╥я▐Б√░п▒Б√═Б√└п©б╘п▒Б┬≥Б∙⌡я▐Б√░п▒Б√═Б■─я▐Б√░п▒Б√═Б√▒]
| +/– |
>> Тогда уже не "((D+=1))", а "((D++))" наверно.
> А какая разница?
Если б bash нормально был написан то наверно никакой бы небыло, но по факту быстрее.
>> Даже такими титаническими усилиями оно значительно медленнее даша. А также у меня
>> огромные вопросы к смыслу таких усилий и того какое это имеет
>> отношение к shell.
> Что там титанического? В моём коде ничего титаническго, совершенно 0 усилий. Никаких
> хаков. Я всегда только так и пишу.
Ну да, обьясни интерпритатуру сначала шо тот набор цыфр это номер, а не слово, потом используй какие то левые С подобные конструкцыи, шобы интерпритатор исполнял роль тупого транслятора, а в итоге получи пшык в кепке.
> Итого, даш даже с грязнохаками слился "башизмам".
Слился в чом, в сложении? xD
И да, я з zsh не знаком, по этому ничего про него сказать не могу, в отличии от забаганого баша.
| |
|
6.227, Аноним (16), 01:19, 09/12/2020 [^] [^^] [^^^] [ответить] [п©б╘п▒Б┬≥Б∙≈ п©б╘п▒Б┬≥Б∙≥п©б╘п▒Б┬≥Б∙⌡п©б╘п▒Б┬≥Б∙▓п©б╘п▒Б┬≥я▒я▐Б√░п▒Б√═Б■─п©б╘п▒Б┬≥ц╥я▐Б√░п▒Б√═Б√└п©б╘п▒Б┬≥Б∙⌡я▐Б√░п▒Б√═Б■─я▐Б√░п▒Б√═Б√▒]
| +/– |
Какие баги? Нет никаких багов. А по синтаксису, это обычный bash синтаксис и встроенный оператор объявления массивов, переменных, объявления переменных глобальными и всего остального, ему уж лет сколько. От объявления переменной числом баш не выигрывает на таком "тесте", это зш оптимизирует на 20% или сколько там, но вообще для счётчиков довольно эффективно. Я просто объявляю все числа числами, очень удобно.
Вон там соседний ответ, расскажи пожалуйста, как удалить последний элемент массива в dash и как складывать числа в dash, я хочу сравнить производительность на сложении чисел (числа простые строки в массиве, без всего).
| |
|
5.224, Аноним (16), 01:11, 09/12/2020 [^] [^^] [^^^] [ответить] [↑] [п©б╘п▒Б┬≥Б∙≈ п©б╘п▒Б┬≥Б∙≥п©б╘п▒Б┬≥Б∙⌡п©б╘п▒Б┬≥Б∙▓п©б╘п▒Б┬≥я▒я▐Б√░п▒Б√═Б■─п©б╘п▒Б┬≥ц╥я▐Б√░п▒Б√═Б√└п©б╘п▒Б┬≥Б∙⌡я▐Б√░п▒Б√═Б■─я▐Б√░п▒Б√═Б√▒]
| +/– |
tcsh похоже победитель:
$ time tcsh ~/bin/cshvariant.sh
real 9m20.743s
user 6m18.812s
sys 3m31.950s
Бтв как удалить последний элемент из массива в zsh?
Вот это чёт не прокатывает unset 'raye[${#raye[@]}-1]' (в баше работает), а то в баше я просто напишу unset raye[-1] и всё норм.
Короче только вот так, raye=("${(@)raye[1,$#raye-1]}")
В итоге, на более реальной задаче баш складывает несколько чисел (300000 чисел) за
real 0m34.796s
user 0m2.884s
sys 0m3.044s
и зш за
real 0m35.218s
user 0m2.913s
sys 0m3.113s
вот и всё. :(
и что-то сразу на реальном кейсе всё посыпалось, я надеялся будет хоть чуточку побыстрее.
| |
|
|
|
|
1.257, Аноним (257), 13:03, 09/12/2020 [ответить] [﹢﹢﹢] [ · · · ] [↓] [↑] [п©б╘п▒Б┬≥Б∙≈ п©б╘п▒Б┬≥Б∙≥п©б╘п▒Б┬≥Б∙⌡п©б╘п▒Б┬≥Б∙▓п©б╘п▒Б┬≥я▒я▐Б√░п▒Б√═Б■─п©б╘п▒Б┬≥ц╥я▐Б√░п▒Б√═Б√└п©б╘п▒Б┬≥Б∙⌡я▐Б√░п▒Б√═Б■─я▐Б√░п▒Б√═Б√▒]
| +/– |
> Переработан движок генерации псевдослучайных чисел. Добавлена переменная SRANDOM, содержащая случайное 32-разрядное число из системного генератора псевдослучайных чисел (вместо LCRNG использованы вызовы getrandom/getentropy, /dev/urandom или arc4random, в зависимости от ОС). Выдаваемая последовательность теперь не является линейной и не повторяется при идентичном следовании запросов.
То то я думаю, что такое, каждый раз под андроидом запускаю VLC плеер, музыку послушать из папки (директории). И VLC каждый раз начинает с одной и той же песни и примерно 3-5 песен в последовательности с начала одни и теже.
get_random() { echo "42" } # it is my lovely random number ;)
Вот какой рандом в андроиде ;)
Может быть с этой версии bash-а все будет гораздо лучше ;)
| |
|