The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Релиз командного интерпретатора Bash 5.1

08.12.2020 11:43

После двух лет разработки опубликована новая версия командного интерпретатора GNU Bash 5.1, используемого по умолчанию в большинстве дистрибутивов Linux. Одновременно сформирован релиз библиотеки readline 8.1, применяемой в bash для организации редактирования командной строки.

Из ключевых улучшений можно отметить:

  • Переработан движок генерации псевдослучайных чисел. Добавлена переменная SRANDOM, содержащая случайное 32-разрядное число из системного генератора псевдослучайных чисел (вместо LCRNG использованы вызовы getrandom/getentropy, /dev/urandom или arc4random, в зависимости от ОС). Выдаваемая последовательность теперь не является линейной и не повторяется при идентичном следовании запросов.
  • Для ассоциативных массивов реализована поддержка составных присвоений, в которых передаётся набор из пар в формате ключ/значение ("[key]=value"). Реализовано динамическое увеличение размера хэш-таблицы в зависимости от типа данных, добавляемых в ассоциативный массив.
  • Добавлена переменная PROMPT_COMMANDS, которую можно использовать для запуска нескольких команд перед выводом приглашения командной строки.
  • В команду wait добавлена опция "-p имя переменной" для сохранения в переменной информации о PID процесса, возвращённого при выполнении "wait -n" или вызова wait без аргументов. В "wait -n" теперь допускается передача списка работ (wait будет ожидать изменения состояния любой задачи из списка).
  • Добавлены новые загружаемые встроенные команды: asort, mktemp, accept, mkfifo, csv и cut/lcut.
  • В POSIX-режиме реализована возможность замещения процесса (process substitution), при которой ввод и вывод команды обрабатывается другими командами как файл (например, "diff <(sort file1) <(sort file2)").
  • Добавлены новые параметры операторов преобразования: "U", "u" и "L" для преобразования в верхний регистр всей строки, преобразования в верхний регистр первого символа и преобразования в нижний регистр, а также параметр "K" для отображения ассоциативного массива в формате ключ/значение.
  • Для включения режима совместимости с прошлыми версиями теперь нужно использовать переменную BASH_COMPAT (через опцию compat50 установить режим совместимости с bash 5.0 не получится).
  • В Readline по умолчанию включён режим выделенной вставки (bracketed-paste), при котором извлекаемые из буфера обмена данные обрамляются escape-последовательностями ("\e[200~" и "\e[201~") для визуального выделения поступивших из буфера обмена данных. В Readline обеспечена подсветка подобных вставок, а также подсветка текста, найденного при инкрементальном и неинкрементальном поиске в истории. Расширено число команд и ситуаций, для которых подставляются метки для подсветки.
  • Readline реализовано автоматическое включение горизонтальной прокрутки на однострочных терминалах.
  • Добавлена команда rl-clear-display для очистки содержимого экрана и буфера прокрутки.
  • Возвращено старое поведение, связанное с раскрытием файлового пути при указании слов, включающих обратные слэши, но не использующих спецсимволы раскрытия маски. Как и в bash 4.4 подобные пути теперь не раскрываются (изменённое поведение Bash 5.0 соответствовало стандарту POSIX, но было отрицательно воспринято пользователями и комитет POSIX согласился изменить спецификацию). Кроме того режим GLOBIGNORE теперь игнорирует указание "." и ".." в качестве указанных в терминале компонентов пути.
  • Изменена обработка исключений (trap) при чтении данных с терминала при помощи конструкций read и select. Встроенная команда select теперь запускает trap-обработчики в случае прерывания сигналом внутреннего вызова команды read. Разрешён рекурсивный запуск обработчиков SIGINT.
  • Разрешено использование команды "read -e" с произвольными файловыми дескрипторами (read -u N).
  • Добавлена возможность связывания с уже установленной в системе библиотекой Readline, вместо встроенной версии lib/readline (для подобного связывания требуется версия Readline 8.1).
  • В команде "bind -x" добавлена поддержка определения разных привязок клавиатурных комбинаций для разных режимов редактирования и разных раскладок клавиатуры.
  • Реализована оптимизация числа форков, выполняемых при запуске команд в subshell или при помощи "bash -c". При выполнении "bash -c" статус выполнения работ теперь можно узнать командой jobs.
  • Код сопоставления по шаблону теперь использует вызов fnmatch для учёта одинаково выглядящих строк, но отличающихся по кодам символов.
  • В readline добавлена команда shell-transpose-words, использующая то же определение слов, что и в команде shell-forward-word. По умолчанию добавлены клавиатурные привязки для команд shell-forward-word, shell-backward-word, shell-transpose-words и shell-kill-word.
  • В начальном окружении командной оболочки теперь доступна переменная ARGV0, которой присвоено значение $0.
  • Добавлен оператор "test -N", определяющий время с наносекундной точностью.
  • Разрешена запись в переменную BASH_REMATCH.
  • В ulimit добавлена команда "-R" для просмотра и установки ресурса RLIMIT_RTTIME.
  • Встроенная реализация вызова malloc на 64-разрядных системах теперь выравнивает возвращаемую память по 16 байтовой границе.
  • При выходе из командной оболочки bash теперь пытается закрыть все FIFO-каналы, независимо от того, завершены ли связанные с ними процессы.


 
  1. Главная ссылка к новости (https://lists.gnu.org/archive/...)
  2. OpenNews: Релиз командного интерпретатора Bash 5.0
  3. OpenNews: Выпуск командной оболочки fish 3.0
  4. OpenNews: Xonsh - командная оболочка, сочетающая Python с лучшими возможностями Bash, zsh и fish
  5. OpenNews: В Bash выявлено ещё четыре уязвимости, эксплуатируемые через переменные окружения
  6. OpenNews: Релиз командной оболочки zsh 5.1
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/54214-bash
Ключевые слова: bash, shell
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (287) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, MasterSlave (?), 12:03, 08/12/2020 [ответить] [﹢﹢﹢] [ · · · ]  []     [к модератору]
  • –4 +/
    Народ, не вброса ради... Что всё-таки лучше для заурядного хомы: bash или zsh?
     

     ....большая нить свёрнута, показать (76)

  • 1.17, ttakttaguri (ok), 12:30, 08/12/2020 [ответить] [﹢﹢﹢] [ · · · ]  [] []     [к модератору]
  • +/
    Во мне есть ubuntu 20.10, bash 5.0.17.
    Что и как надо зделать чтобы установил bash 5.1?
     
     
  • 2.20, Аноним (18), 12:32, 08/12/2020 [^] [^^] [^^^] [ответить]      [к модератору]
  • +17 +/
    Ничего. Жди обновления, не сри в систему.
     
  • 2.21, Аноним (18), 12:32, 08/12/2020 [^] [^^] [^^^] [ответить]      [к модератору]
  • +1 +/
    Жди пакетов лучше. Либо переходи на роллинг дистры.
     
  • 2.38, Аноним (145), 13:23, 08/12/2020 [^] [^^] [^^^] [ответить]  []     [к модератору]
  • +11 +/
    >Во мне есть ubuntu 20.10, bash 5.0.17.

    Терминатор?

     
     
  • 3.85, вынь любит вас во все девайсы (?), 14:56, 08/12/2020 [^] [^^] [^^^] [ответить]      [к модератору]
  • +1 +/
    Злой на вынь+цмд.екзе
    Добрый на линь+бэш.
     
  • 2.48, danonimous (?), 13:40, 08/12/2020 [^] [^^] [^^^] [ответить]  []     [к модератору]
  • –1 +/
    Жди ебилдов.
     
  • 2.155, VINRARUS (ok), 19:24, 08/12/2020 [^] [^^] [^^^] [ответить]      [к модератору]
  • +1 +/
    ставь dash как /bin/sh, он в разы быстрее

    su
    apt-get install dash
    if [ -f /bin/dash ]
    then
    rm -f /bin/sh
    ln -s /bin/dash /bin/sh
    fi
    sh

     
     
  • 3.289, anonimous (?), 00:24, 12/12/2020 [^] [^^] [^^^] [ответить]      [к модератору]
  • +/
    открой для себя chcon
     

  • 1.23, Аноним (39), 12:36, 08/12/2020 [ответить] [﹢﹢﹢] [ · · · ]  [] []     [к модератору]
  • –1 +/
    > 5.1

    Вот она, программа здорового человека... ой, простите, человека без инвалидности!

     
     
  • 2.41, Аноним (145), 13:25, 08/12/2020 [^] [^^] [^^^] [ответить]      [к модератору]
  • –2 +/
    Ты что, против инклюзива человеков с инвалидностью?
     
  • 2.158, VINRARUS (ok), 19:35, 08/12/2020 [^] [^^] [^^^] [ответить]      [к модератору]
  • –1 +/
    >> 5.1
    > Вот она, программа здорового человека... ой, простите, человека без инвалидности!

    Гумонитарии они такие: пишут... ой, простите, рисуют код кисточками, а версии меняют через insert.

    Правда называть инвалидами тех кто пишет более эфективный код это так по ЛГБтшно...

     

  • 1.29, Аноннчик (?), 12:58, 08/12/2020 [ответить] [﹢﹢﹢] [ · · · ]  [] []     [к модератору]
  • –2 +/
    Чем ZSH хуже Баша?
     

     ....большая нить свёрнута, показать (31)

  • 1.32, Аноним (32), 13:15, 08/12/2020 [ответить] [﹢﹢﹢] [ · · · ]  [] []     [к модератору]
  • +4 +/
    Баш вместе с линукс утилитками производительнее питона получается. И времени на код меньше уходит.
     

     ....большая нить свёрнута, показать (78)

  • 1.43, Аноним (43), 13:26, 08/12/2020 [ответить] [﹢﹢﹢] [ · · · ]  [] []     [к модератору]
  • +/
    ребят, а где можно почитать гайды по posix-shell? ну т.е чтобы писать скрипты которые будут одинаково работать и под башем, и под zsh, и под чем угодно еще
     
     
  • 2.53, Аноним (230), 13:54, 08/12/2020 [^] [^^] [^^^] [ответить]  []     [к модератору]
  • +3 +/
    Читай стандарт, тестируй скрипты в разных шеллах (как минимум dash и ksh). Самый надёжный способ.
    Если для начального изучения, то на русском выходила книжка Кочана и Вуда, может быть, ещё найдёшь в продаже.
     
     
  • 3.54, Аноним (230), 13:59, 08/12/2020 [^] [^^] [^^^] [ответить]      [к модератору]
  • +1 +/
    > книжка Кочана и Вуда

    ISBN 978-5-9909445-3-4

     
  • 2.87, вынь любит вас во все девайсы (?), 15:05, 08/12/2020 [^] [^^] [^^^] [ответить]  [] []     [к модератору]
  • +/
    >> которые будут одинаково работать и под башем

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

     
     
  • 3.90, Аноним (230), 15:10, 08/12/2020 [^] [^^] [^^^] [ответить]  []     [к модератору]
  • +/
    Смысл в этом тот, что написанный тобой скрипт должен работать независимо от того, установлен в системе (не твоей) bash или нет. Ну если ты программист, то есть. Если админ, то смысла, может быть, и нет, тебе виднее.
     
     
  • 4.96, вынь любит вас во все девайсы (?), 15:39, 08/12/2020 [^] [^^] [^^^] [ответить]  []     [к модератору]
  • +/
    Это понятно, насколько оно будет в итоге работать как надо, вот вопрос. Тот же баш не совместим между собой в зависимости от версии. Т.е. что лучше универсальный скрипт, возможно вызывающий проблемы или нативный баш, который можно доставить с большинстве случаев. Получается нужно учитывать зоопарк шелов и их версий, нет? А сложность скрипта и накладываемые ограничения?
    Я бы выбрал второе, а те места куда баш никак, но очень надо, то заточил бы отдельно. В общем, филькин труд.
     
     
  • 5.108, InuYasha (??), 16:06, 08/12/2020 [^] [^^] [^^^] [ответить]  []     [к модератору]
  • +/
    Мой пример: на телевизоре нет bash, только sh. От линукса там практически только ядро. То же самое на андроеде, особенно в recovery. На самом деле, только в настольно-серверные Люляксы ваш баш и завезли. А больше - никуда.
     
     
  • 6.111, вынь любит вас во все девайсы (?), 16:15, 08/12/2020 [^] [^^] [^^^] [ответить]      [к модератору]
  • +1 +/
    Баш он не наш, а общий. В твоем случае не логично ли на sh и написать, чисто под девайсы?
     
  • 6.138, Урри (ok), 17:27, 08/12/2020 [^] [^^] [^^^] [ответить]      [к модератору]
  • +/
    Под ведроид есть фришный termux с башем и терминалами. Ставь и не парься.
     
     
  • 7.253, InuYasha (??), 11:55, 09/12/2020 [^] [^^] [^^^] [ответить]      [к модератору]
  • +/
    > Под ведроид есть фришный termux с башем и терминалами. Ставь и не
    > парься.

    Ствалю. Только чем он при внешнем подключении поможет?

     
  • 5.120, Аноним (230), 16:36, 08/12/2020 [^] [^^] [^^^] [ответить]  []     [к модератору]
  • +/
    > универсальный скрипт, возможно вызывающий проблемы

    Если он вызывает проблемы, он не универсальный.

    > Получается нужно учитывать зоопарк шелов и их версий, нет?

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

    > А сложность скрипта и накладываемые ограничения?

    Если скрипт получается слишком сложным, его лучше писать на другом языке. Шелл хорош для сравнительно простых вещей.

    > Я бы выбрал второе, а те места куда баш никак, но очень надо, то заточил бы отдельно.

    Ну, то есть, ты не программист, о чём я и писал. Программист зачастую знает очень мало о целевой системе и не имеет возможности повлиять на состав установленного на ней софта. Для контролируемых тобой систем, безусловно, можешь использовать, что тебе вздумается.

     
  • 4.165, nebularia (ok), 20:01, 08/12/2020 [^] [^^] [^^^] [ответить]  []     [к модератору]
  • +/
    > скрипт должен работать независимо от того, установлен в системе (не твоей) bash или нет.

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

     
  • 3.110, псевдонимус (?), 16:14, 08/12/2020 [^] [^^] [^^^] [ответить]  [] []     [к модератору]
  • –2 +/
    За башизмы нужно яйца отрывать по самую шею.
     
     
  • 4.117, вынь любит вас во все девайсы (?), 16:33, 08/12/2020 [^] [^^] [^^^] [ответить]      [к модератору]
  • –1 +/
    Отрывать надо разрабу, когда происходит "опаньки" от желания угодить всем.
    Башизмы никого не интересуют, и в первую очередь пользователей.
     
  • 4.196, Аноним (195), 21:42, 08/12/2020 [^] [^^] [^^^] [ответить]      [к модератору]
  • +/
    ну оторви, попробуй
     
     
  • 5.199, псевдонимус (?), 22:05, 08/12/2020 [^] [^^] [^^^] [ответить]      [к модератору]
  • +/
    У вас, шапкорабов, уже и отрывать нечего. Все уже оторвано до нас.
     
     
  • 6.201, Аноним (195), 22:24, 08/12/2020 [^] [^^] [^^^] [ответить]      [к модератору]
  • +/
    метлу привяжи, когда с lfs-ником базаришь
     
     
  • 7.210, псевдонимус (?), 22:47, 08/12/2020 [^] [^^] [^^^] [ответить]      [к модератору]
  • +/
    С долбо..ом что-ли?
     
  • 3.122, псевдонимус (?), 16:41, 08/12/2020 [^] [^^] [^^^] [ответить]  [] []     [к модератору]
  • +/
    >>> которые будут одинаково работать и под башем
    > Какой в этом смысл, когда баш есть везде, но может быть не
    > установлен по умолчанию.

    Так он есть везде или не установлен?

     
     
  • 4.236, вынь любит вас во все девайсы (?), 01:57, 09/12/2020 [^] [^^] [^^^] [ответить]      [к модератору]
  • +/
    Да.
     
     
  • 5.246, псевдонимус (?), 05:10, 09/12/2020 [^] [^^] [^^^] [ответить]      [к модератору]
  • +/
    > Да.

    Есть везде, но его нет. Шелл Шредингера.

     
  • 3.216, OpenEcho (?), 23:37, 08/12/2020 [^] [^^] [^^^] [ответить]  []     [к модератору]
  • –2 +/
    > Какой в этом смысл, когда баш есть везде, но может быть не установлен по умолчанию.

    Смысл очень простой -> безопасность.
    Первое, что чаще всего делают взломщики используя зиро-дэй дыру, это запуск баша в режиме реверс консоли (т.к. баш спокойно говорит на языках TCP/UDP) и имееют по полной удаленную систему, которая как правило даже не заметит в логах конекты из баша. Поэтому уважающие свое время админы делают chmod 750 root:root /bin/bash /bin/gawk ... , a юзеров приучают быть ПОСИКС совместимыми разрешая им максимум /bin/sh

     
  • 2.106, InuYasha (??), 16:04, 08/12/2020 [^] [^^] [^^^] [ответить]  []     [к модератору]
  • +2 +/
    http://tldp.org/LDP/Bash-Beginners-Guide/html/index.html
    там вроде были оговорки, что в sh работает, а что - нет.
     
  • 2.113, samsamy4 (ok), 16:22, 08/12/2020 [^] [^^] [^^^] [ответить]  []     [к модератору]
  • +2 +/
    Пиши скрипты на dash. Он максимально POSIX-совместимый. Ман у него маленький, вполне можно за пару часов освоить.
     
     
  • 3.163, VINRARUS (ok), 19:56, 08/12/2020 [^] [^^] [^^^] [ответить]      [к модератору]
  • +/
    Тогда уже на ash, в идеале busybox ash.
    Вот на днях столкнулся с dash несовместимостью: https://forum.motofan.ru/index.php?s=&showtopic=162200&view=findpost&p=1793813
     
     
  • 4.177, Аноним (230), 20:29, 08/12/2020 [^] [^^] [^^^] [ответить]      [к модератору]
  • +/
    Во-первых, что-то странное ты там описал. Слабо верится в такое поведение. Во-вторых, dash — урезанный форк ash, так что баги у них вполне могут быть общие. В-третьих, если баг и был, из твоих же слов следует, что он давно исправлен.
     
     
  • 5.181, VINRARUS (ok), 20:39, 08/12/2020 [^] [^^] [^^^] [ответить]      [к модератору]
  • +/
    > Во-первых, что-то странное ты там описал. Слабо верится в такое поведение. Во-вторых,
    > dash — урезанный форк ash, так что баги у них вполне
    > могут быть общие. В-третьих, если баг и был, из твоих же
    > слов следует, что он давно исправлен.

    Мне тоже было неимоверно сложно в это поверить — больше года не верил пока не начал раскопки.
    dash имеет сообщение о завершении фонового процеса, а busybox ash нет.
    И да, исправлено костылём в скрипте всего лиш.
    ПС: разве ash развивает щас кто то?

     
  • 2.162, VINRARUS (ok), 19:51, 08/12/2020 [^] [^^] [^^^] [ответить]  []     [к модератору]
  • +/
    > ребят, а где можно почитать гайды по posix-shell? ну т.е чтобы писать
    > скрипты которые будут одинаково работать и под башем, и под zsh,
    > и под чем угодно еще

    Я тут начинал: https://forum.motofan.ru/index.php?showtopic=162200 =)

     
  • 2.172, Аноним (170), 20:21, 08/12/2020 [^] [^^] [^^^] [ответить]      [к модератору]
  • –1 +/
    Берёшь стандарт POSIX и читаешь. Он учится полностью за один вечер.
     
  • 2.183, Аноним (183), 20:41, 08/12/2020 [^] [^^] [^^^] [ответить]      [к модератору]
  • +/
    https://pubs.opengroup.org/onlinepubs/9699919799/utilities/V3_chap02.html
     
  • 2.221, Аноним (263), 00:40, 09/12/2020 [^] [^^] [^^^] [ответить]      [к модератору]
  • +/
    Правильно будет сказать, что есть (ba)sh и есть ksh. Обычный sh почти во всех линуксах. На бсд-лайк системах (особенно на солярке) в системе только ksh. Я лично сам пишу под mksh, который как бы из мира ksh, но очень мнго взял из sh. При этом по скорости опережает здесь рекламируемый dash.
     
     
  • 3.264, Аноним (230), 14:42, 09/12/2020 [^] [^^] [^^^] [ответить]      [к модератору]
  • +/
    Ты бредишь. Классический sh — это Борн шелл. И ksh к нему намного ближе, чем нынешний bash. Но все они из одной оперы, дугой лагерь — это csh и его вариации, столь любимые в FreeBSD.
     

  • 1.47, Иваня (?), 13:38, 08/12/2020 [ответить] [﹢﹢﹢] [ · · · ]  [] []     [к модератору]
  • –4 +/
    крут, подскажите плз как накатить эту версию на убунту 18 :/
     
     
  • 2.104, Led (ok), 16:01, 08/12/2020 [^] [^^] [^^^] [ответить]      [к модератору]
  • +8 +/
    Да ты уже и так накатил...
     
  • 2.132, Нанобот (ok), 17:18, 08/12/2020 [^] [^^] [^^^] [ответить]      [к модератору]
  • +4 +/
    совсем линуксоиды деградировали...

    wget https://ftp-gnu-org.ip-connect.vn.ua/bash/bash-5.1.tar.gz
    tar xzvf bash-5.1.tar.gz
    cd bash-5.1
    ./configure
    make
    make install

     
     
  • 3.164, VINRARUS (ok), 19:58, 08/12/2020 [^] [^^] [^^^] [ответить]      [к модератору]
  • –3 +/
    Это ж убунтята, они без соски и диск не разметят.
     

  • 1.57, YetAnotherOnanym (ok), 14:05, 08/12/2020 [ответить] [﹢﹢﹢] [ · · · ]  [] []     [к модератору]
  • +/
    Понимаю, что выгляжу ретроградом, но весь этот улучшайзинг чреват обильными матюками, если в хозяйстве имеются машины с разными версиями скорлупы.
     
     
  • 2.62, Аноним (230), 14:14, 08/12/2020 [^] [^^] [^^^] [ответить]      [к модератору]
  • +2 +/
    Бери пример с анонима выше, изучай POSIX shell.
     

  • 1.86, псевдонимус (?), 14:59, 08/12/2020 [ответить] [﹢﹢﹢] [ · · · ]  [] []     [к модератору]
  • +4 +/
    Страшный сон системдунов зарелизился.
     
     
  • 2.99, вынь любит вас во все девайсы (?), 15:51, 08/12/2020 [^] [^^] [^^^] [ответить]  []     [к модератору]
  • +3 +/
    Системда работает крайне стабильно.
    Постгрес упал, системктл показывает, что процесс активен и не может его рестартовать.
    И такая радость в LTS дистрах.
     
     
  • 3.102, псевдонимус (?), 15:56, 08/12/2020 [^] [^^] [^^^] [ответить]      [к модератору]
  • +1 +/
    > Системда работает крайне стабильно.
    > Постгрес упал, системктл показывает, что процесс активен и не может его рестартовать.
    > И такая радость в LTS дистрах.

    Зато нет "портянок на баш" :-)))

    Это встроенная в системду развивающая игрушка. Чтобы обмин не заскучал.

    Что поделка пишет в свой недожурнал?

     
     
  • 4.109, вынь любит вас во все девайсы (?), 16:11, 08/12/2020 [^] [^^] [^^^] [ответить]      [к модератору]
  • +2 +/
    Логи не изучал. Не так давно Был инцидент у заказчика, упал портал. Моя задача была быстро поднять все взад, ребут решил вопрос.
    Неоднократно встречал сию проблему, когда дибилойд-системд находится в полной обсракции, если процесс именно падает.
     
     
  • 5.144, псевдонимус (?), 18:04, 08/12/2020 [^] [^^] [^^^] [ответить]      [к модератору]
  • +/
    > Логи не изучал. Не так давно Был инцидент у заказчика, упал портал.
    > Моя задача была быстро поднять все взад, ребут решил вопрос.
    > Неоднократно встречал сию проблему, когда дибилойд-системд находится в полной обсракции,
    > если процесс именно падает.

    Оно досихпор подение "сервАйса"©™ не может нормально обработать? ;-)

    Что за дистрибутив?

     
  • 2.100, Аноним (-), 15:54, 08/12/2020 [^] [^^] [^^^] [ответить]  []     [к модератору]
  • +7 +/
    >Страшный сон системдунов зарелизился.

    Просто напросто последователи systemD не осилили GNU bash. И за этого неосиляторства и идут все байки про "лапшу". Эту простую истину я понял совсем недавно и мне стало жалко того времени что я потратил на споры с "системдунами".

     
     
  • 3.127, Аноним (39), 17:13, 08/12/2020 [^] [^^] [^^^] [ответить]      [к модератору]
  • +3 +/
    > последователи systemD не осилили GNU bash

    В точку! И вместо пары строк на баше им приходится писать юниты+либы+бинари, которые прибиты шурупами к системде и в них нифига не исправишь, естественно.

     
     
  • 4.166, VINRARUS (ok), 20:04, 08/12/2020 [^] [^^] [^^^] [ответить]      [к модератору]
  • +/
    >> последователи systemD не осилили GNU bash
    > В точку! И вместо пары строк на баше им приходится писать юниты+либы+бинари,
    > которые прибиты шурупами к системде и в них нифига не исправишь,
    > естественно.

    моя шел твоя баш труба шатал,,,

     
  • 4.249, Видавший всякое (?), 06:44, 09/12/2020 [^] [^^] [^^^] [ответить]      [к модератору]
  • +2 +/
    > пары строк

    Вот давай без вранья.

     
     
  • 5.281, Аноним (281), 06:58, 10/12/2020 [^] [^^] [^^^] [ответить]      [к модератору]
  • +/
    Он имел ввиду пары сотен строк
     

  • 1.97, Аноним12345 (?), 15:41, 08/12/2020 [ответить] [﹢﹢﹢] [ · · · ]  [] []     [к модератору]
  • +1 +/
    А как же дженерики ???
     
     
  • 2.124, Ordu (ok), 16:57, 08/12/2020 [^] [^^] [^^^] [ответить]      [к модератору]
  • +1 +/
    > А как же дженерики ???

    Сначала надо типизацию завезти, и только потом дженерики. "Всё есть строка" не очень способствует дженерикам.

     

  • 1.137, Аноним (137), 17:24, 08/12/2020 [ответить] [﹢﹢﹢] [ · · · ]  [] []     [к модератору]
  • +2 +/
    То что написано на баше 30 лет назад, заработает и сейчас.
     
     
  • 2.141, Аноним (-), 17:46, 08/12/2020 [^] [^^] [^^^] [ответить]      [к модератору]
  • +1 +/
    >То что написано на баше 30 лет назад, заработает и сейчас.

    fixed

    С этого предложения надо бы и начинать эту новость.

     

  • 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

     
     
  • 2.180, Аноним (180), 20:37, 08/12/2020 [^] [^^] [^^^] [ответить]  []     [к модератору]
  • +/
    Баш вообще в циклах хреново работает, ты бы ещё файл построчно читать попробовал. Вот попробуй, охренеешь.
    Поэтому циклы лучше на линуксовые утилиты положить, а не на баш. Башу только управление софтом, переменными, функциями можно и это реально бомба.
     
     
  • 3.184, VINRARUS (ok), 20:45, 08/12/2020 [^] [^^] [^^^] [ответить]      [к модератору]
  • +/
    > Баш вообще в циклах хреново работает, ты бы ещё файл построчно читать
    > попробовал. Вот попробуй, охренеешь.
    > Поэтому циклы лучше на линуксовые утилиты положить, а не на баш. Башу
    > только управление софтом, переменными, функциями можно и это реально бомба.

    Мне вот нада скриптом управлять скоростью вентилятора следя за термодатчиками, используя простую арифметику делать плавное увеличение\уменьшение оборотов.
    Я написал скрипт весом 4 кб на sh, 4 года работает без проблем.
    На какие альтернативы среди утилит положыть эту логику?

     
     
  • 4.186, Аноним (180), 20:58, 08/12/2020 [^] [^^] [^^^] [ответить]      [к модератору]
  • +/
    Да для таких простых задач баш пригоден. Я имею ввиду какие-то жёсткие задачи, типо анализа текстового файла в десятки гигабайт, или запуска каких-то команд где очень быстро будет передаваться управление обратно в цикл, и весь скрипт из-за этого будет тормозить, упираться в баш.
     
  • 2.203, Аноним (180), 22:28, 08/12/2020 [^] [^^] [^^^] [ответить]  [] []     [к модератору]
  • +/
    Ну и эта команда на которой ты тестриуешь баш это не есть показать. У тебя простой цикл с инкриментом. Ну о чём это говорит вообще? Это не ЯП, это скриптовый, управлеченский код, нагруженные циклические проги прямо на него накидывать это бред, неэффективно.
    Баш в этой ситуации медленнее питона, но просто потому что ты баш применил так. А вот питон по другому не применить уже, вот это разница.
     
     
  • 3.211, VINRARUS (ok), 22:48, 08/12/2020 [^] [^^] [^^^] [ответить]      [к модератору]
  • +/
    > Это не ЯП, это скриптовый, управлеченский код, нагруженные циклические
    > проги прямо на него накидывать это бред, неэффективно.

    Shell это язык програмирования!
    Просто большынство юзеров юникса больше однострочников не пишут.

    ПС: питон не эфективен, юзай асм.

     
  • 2.207, Аноним (16), 22:34, 08/12/2020 [^] [^^] [^^^] [ответить]  [] []     [к модератору]
  • +/
    Зачем тебе баш если ты его не используешь?..



    ~ $ time bash -c 'D=1; while [ "$D" -lt 1000000 ]; do D="$((D+1))"; done'

    real    0m6.578s
    user    0m6.569s
    sys     0m0.000s

    ~ $  time bash -c 'D=1; while [[ "$D" -lt 1000000 ]]; do ((D+=1)); done'

    real    0m3.558s
    user    0m3.551s
    sys     0m0.001s

    ~ $  time bash -c 'declare -i D=1; while ((D<1000000)); do ((D+=1)); done'

    real    0m2.510s
    user    0m2.505s
    sys     0m0.001s

    то же самое с регулярками и всем остальным

     
     
  • 3.215, Аноним (16), 23:23, 08/12/2020 [^] [^^] [^^^] [ответить]      [к модератору]
  • +/
    А вот, кстати, zsh (но он по фичам несовместим с башем, да):



    ~ $  time zsh -c 'D=1; while [ "$D" -lt 1000000 ]; do D="$((D+1))"; done'

    real    0m4.796s
    user    0m4.470s
    sys     0m0.321s

    ~ $  time zsh -c 'D=1; while [[ "$D" -lt 1000000 ]]; do ((D+=1)); done'

    real    0m1.131s
    user    0m1.129s
    sys     0m0.001s

    ~ $  time zsh -c 'D=1; while ((D<1000000)); do ((D+=1)); done'

    real    0m0.868s
    user    0m0.867s
    sys     0m0.000s

    ~ $  time zsh -c 'declare -i D=1; while ((D<1000000)); do ((D+=1)); done'

    real    0m0.681s
    user    0m0.680s
    sys     0m0.000s


     
  • 3.217, VINRARUS (ok), 23:41, 08/12/2020 [^] [^^] [^^^] [ответить]      [к модератору]
  • +/
    Тогда уже не "((D+=1))", а "((D++))" наверно.

    Даже такими титаническими усилиями оно значительно медленнее даша. А также у меня огромные вопросы к смыслу таких усилий и того какое это имеет отношение к shell.

    ПС: я тоже читерить умею
    time dash -c 'D=1; while true; do case "$D" in 1000000) exit;; esac; D="$((D+1))"; done'

    real    0m0,964s
    user    0m0,958s
    sys     0m0,004s

     
     
  • 4.218, Аноним (16), 23:55, 08/12/2020 [^] [^^] [^^^] [ответить]      [к модератору]
  • +/
    А какая разница Что там титанического В моём коде ничего титаническго, соверше... большой текст свёрнут, показать
     
     
  • 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, я хочу сравнить производительность на сложении чисел (числа простые строки в массиве, без всего).

     
     
  • 7.273, VINRARUS (ok), 19:29, 09/12/2020 [^] [^^] [^^^] [ответить]      [к модератору]
  • +/
    >Я просто объявляю все числа числами, очень удобно.

    А я не обьявляю числа числами так как в этом нет необходимости — ещо удобнее.
    >Вон там соседний ответ, расскажи пожалуйста, как удалить последний элемент массива в dash и как складывать числа в dash, я хочу сравнить производительность на сложении чисел (числа простые строки в массиве, без всего).

    raye="2 4 8 16 32 64 128 256 512 1024"
    raye="${raye% *}"
    echo "$raye"

    На какую купку складывать?

     
     
  • 8.279, Аноним (16), 22:42, 09/12/2020 [^] [^^] [^^^] [ответить]      [к модератору]
  • +/
    А ничего особенного, типичная задача сложить миллион другой чисел, что такого К... большой текст свёрнут, показать
     
     
  • 9.280, VINRARUS (ok), 00:05, 10/12/2020 [^] [^^] [^^^] [ответить]      [к модератору]
  • +/
    whatshell sh Стопэ Отстань со своими ращосками от тех у кого нет волос Вот ... текст свёрнут, показать
     
  • 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

    вот и всё. :(

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

     
  • 2.208, Аноним (180), 22:37, 08/12/2020 [^] [^^] [^^^] [ответить]  [] []     [к модератору]
  • +/
    ~$ time bash -c 'declare -i D=1; while ((D<1000000)); do ((D+=1)); done'

    real 0m4.937s
    user 0m4.925s
    sys 0m0.004s


    На процессоре 2006 года релиза.

     
     
  • 3.214, VINRARUS (ok), 23:16, 08/12/2020 [^] [^^] [^^^] [ответить]      [к модератору]
  • +/
    А с dash?
     
  • 2.225, Аноним (263), 01:11, 09/12/2020 [^] [^^] [^^^] [ответить]  []     [к модератору]
  • +/
    Забавный тест, вот другой, где все несколько иначе time dash -c for a in ... большой текст свёрнут, показать
     
     
  • 3.233, Аноним (16), 01:45, 09/12/2020 [^] [^^] [^^^] [ответить]      [к модератору]
  • +/
    Отличные "тесты", ага. Десятиминутный победитель из того теста справился тут за секунду.



    $  time tcsh ~/bin/cshseq.sh

    real    0m1.250s
    user    0m0.765s
    sys     0m0.469s
    $  time dash -c 'for a in 'seq 100000'; do ( :; ); done'

    real    0m14.488s
    user    0m8.667s
    sys     0m6.319s
    $  time bash -c 'for a in 'seq 100000'; do ( :; ); done'

    real    0m36.407s
    user    0m19.588s
    sys     0m17.738s
    $  time zsh -c 'for a in 'seq 100000'; do ( :; ); done'

    real    0m45.363s
    user    0m22.131s
    sys     0m25.281s


     
     
  • 4.237, Аноним (263), 02:07, 09/12/2020 [^] [^^] [^^^] [ответить]      [к модератору]
  • +/
    Хз, что у тебя в скрипет, а у меня:
    ~> cat t.tcsh
    foreach a ('seq 100000')
    (:;)
    end
    ~> time tcsh t.tcsh
        0m26.02s real     0m16.09s user     0m15.83s system
     
     
  • 5.238, Аноним (16), 02:13, 09/12/2020 [^] [^^] [^^^] [ответить]  []     [к модератору]
  • +/
    #/bin/tcsh
    foreach i ( 'seq 100000' )
       :;
    end

    можно с echo "$i" -- ровно то же самое.

     
     
  • 6.240, Аноним (16), 02:17, 09/12/2020 [^] [^^] [^^^] [ответить]      [к модератору]
  • +/
    В шебанге опечатка, но я скармливал интерпретатору поэтому не важно.
     
  • 6.261, Аноним (261), 14:26, 09/12/2020 [^] [^^] [^^^] [ответить]      [к модератору]
  • +/
    В dash/bash круглые скобки форкают sub-shell. Я так понимаю, скрипт tcsh этого не делает, так что тест некорректен.
     
     
  • 7.266, Аноним (263), 15:00, 09/12/2020 [^] [^^] [^^^] [ответить]      [к модератору]
  • +/
    > В dash/bash круглые скобки форкают sub-shell. Я так понимаю, скрипт tcsh этого
    > не делает, так что тест некорректен.

    https://linux.die.net/man/1/tcsh

    Builtin and non-builtin command execution

    Builtin commands are executed within the shell. If any component of a pipeline except the last is a builtin command, the pipeline is executed in a subshell.

    Parenthesized commands are always executed in a subshell.
        (cd; pwd); pwd
    thus prints the home directory, leaving you where you were (printing this after the home directory), while
        cd; pwd
    leaves you in the home directory. Parenthesized commands are most often used to prevent cd from affecting the current shell.

     
     
  • 8.278, Аноним (261), 22:11, 09/12/2020 [^] [^^] [^^^] [ответить]      [к модератору]
  • +/
    О том и речь ... текст свёрнут, показать
     
  • 5.241, Аноним (16), 02:20, 09/12/2020 [^] [^^] [^^^] [ответить]  []     [к модератору]
  • +/
    В общем да на (:;) выдало это

    real    0m46.337s
    user    0m24.146s
    sys     0m24.104s

     

  • 1.198, Аноним (261), 22:03, 08/12/2020 [ответить] [﹢﹢﹢] [ · · · ]  [] []     [к модератору]
  • +/
    > Вызов malloc на 64-разрядных системах теперь выравнивает возвращаемую память по 16 байтовой границе.

    Что-то я не понял, а при чём тут bash?

     
     
  • 2.256, Аноним (256), 12:33, 09/12/2020 [^] [^^] [^^^] [ответить]      [к модератору]
  • –2 +/
    > Что-то я не понял, а при чём тут bash?

    Чтоб понимать - нужно изучать и практиковать программинг. Ну там _align всякие c11 уже как минимум применять, а не диким криком неандертальца через все джунгли кричать о том что неее-е-е-поняяял

     
     
  • 3.260, Аноним (261), 14:21, 09/12/2020 [^] [^^] [^^^] [ответить]      [к модератору]
  • +/
    Ваш комментарий очень важен и всё сразу объяснил. Спасибо Вам, о светоч мирового программинга.

    Для тех, кому на самом деле интересно, в составе bash есть встроенная реализация malloc, и в данном случае речь о ней.

     
     
  • 4.267, Аноним (-), 15:13, 09/12/2020 [^] [^^] [^^^] [ответить]      [к модератору]
  • +/
    >Ваш комментарий очень важен и всё сразу объяснил. Спасибо Вам, о светоч мирового программинга.

    А хамить обязательно надо?

     
     
  • 5.271, Аноним (261), 17:08, 09/12/2020 [^] [^^] [^^^] [ответить]      [к модератору]
  • +/
    > А хамить обязательно надо?

    Это вопрос не ко мне, а к тому анониму, который написал комментарий #256.

     
     
  • 6.275, VINRARUS (ok), 19:51, 09/12/2020 [^] [^^] [^^^] [ответить]      [к модератору]
  • –1 +/
    >а к тому анониму, который написал комментарий #256

    Эй, Аноним, зачем разговариваеш сам з собой?

     

  • 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-а все будет гораздо лучше ;)


     
     
  • 2.274, VINRARUS (ok), 19:41, 09/12/2020 [^] [^^] [^^^] [ответить]      [к модератору]
  • +/
    Ещо один признак кривости bash и его ненужности. Это ж нада было так упороться шобы повторяющиеся числа даже не попытаться сдвинуть по времени запуска хотя б...
    ПС: dd if=/dev/urandom bs=256 count=1 | tr -dc 0-9 | head -c 6
     

  • 1.283, Аноним (283), 15:46, 10/12/2020 [ответить] [﹢﹢﹢] [ · · · ]  []     [к модератору]
  • +/
    Когда уже rprompt заведут?
    В древнем tcsh есть!
     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2025 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру