The OpenNET Project / Index page

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

Анонсирован выход Bash 4.0, лицензия изменена на GPLv3

22.02.2009 11:38

Спустя 5 лет с момента выхода предыдущей ветки, представлен новый релиз командного интерпретатора Bash - 4.0. Исходные тексты программы, начиная с данного релиза, распространяются под лицензией GPLv3.

Из новых возможностей, появившихся в bash 4.0 с момента выпуска прошлого релиза bash 3.2, можно отметить:

  • Реализована новая опция "autocd", при включении которой появляется возможность быстрого перехода в директории через ввод имени директории вместо команды (т.е. выполнение в интерактивной оболочке "dir" будет эквивалентно запуску "cd dir");
  • Если заданная команда не найдена, оболочка теперь пытается выполнить shell функцию с именем "command_not_found_handle", в которую в качестве аргументов передаются параметры не найденной команды;
  • Добавлена реализация поддержки ассоциативных массивов, которые могут быть созданы при помощи декларатора "-A". Формат: name[subscript]=value, обращение к элементу ${name[subscript]};
  • Изменен формат встроенной документации, который теперь напоминает man-страницы. Изменен метод сортировки вывода в команде help. К команду help добавлены опции "-d" (вывод короткого списка описаний) и "-m" (вывод в помощи в формате man-страниц);
  • Система автодополнения претерпела ряд небольших усовершенствований, например, добавлена начальная поддержка дополнения глобальных переменных в командах. Новая опция "dirspell" позволяет включить механизм корректировки орфографии при автодополнении имен файлов и директорий. Расширены возможности программирования обработчиков автодополнения;
  • Изменено поведение встроенной функции read в момент истечения заданного таймаута, который можно задать через опцию "-t". Теперь при этом возвращается код ошибки больше 128 и сохраняются частично полученные до таймаута данные. Кроме того, таймаут теперь может принимать дробные значения. Дополнительно в read добавлена новая опция "-i", которая позволяет при использовании readline поместить введенный текст в буфер ответа (reply buffer);
  • Новая опция "checkjobs" для проверки наличия активных или приостановленных заданий перед выходом и вывода предупреждения, если такие имеются;
  • В переменной $BASHPID теперь сохраняется идентификатор (pid) текущего процесса.
  • Если из-за недостатка ресурсов bash не удалось создать дочерний процесс, то перед выводом ошибки осуществляется еще несколько попыток;
  • Размер блока для опций "-c" и "-f" команды ulimit приведен в соответствие с Posix и теперь равен 512 байтам при активном Posix режиме. В ulimit добавлены новые опции -b (размер буфера сокета) и -T (число нитей);
  • Добавлена новая встроенная команда "mapfile" (плюс добавлен синоним "readarray") для заполнения массива на основе строк указанного файла;
  • Реализована новая опция "globstar", при включении которой под маску "**" подпадают все директории и файлы с использованием рекурсивного перебора;
  • Добавлен новый оператор редиректа "&>>", который добавляет стандартный вывод и стандартный поток ошибок к заданному файлу;
  • Для дополнения передаваемого следующему процессу стандартного вывода потоком ошибок, вместо конструкции "2>&1 теперь можно использовать синоним "|&";
  • Реализовано несколько новых терминирующих конструкций в системе обработки "case" списков: ";&" (запустить действие приписанное к следующему шаблону) и ";;&" (продолжить проверку следующих шаблонов).
  • Оболочка распознает новую команду для обрезание длинных путей PROMPT_DIRTRIM. В качестве значения указывается длина пути. После превышения заданной длины в приглашении ввода будет осуществлено обрезание длинных путей, заменяя конец на "...";
  • Новые средства для приведения определенных символов в строке к верхнему или нижнему регистру: uppercase (^[^]) и lowercase (,[,]). В команде declare появилась поддержка преобразования регистра через указание опций -l (lowercase) и -u (uppercase);
  • Для управления асинхронным выполнением команд добавлено ключевое слово "coproc";
  • Ощутимо расширены возможность библиотеки readline и shell биндинга к ней, добавлено около десятка новых функций.


  1. Главная ссылка к новости (http://tiswww.case.edu/php/che...)
  2. OpenNews: Анонсирован выход Bash-3.0
  3. Список изменений
  4. ftp.gnu.org/gnu/bash/
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/20409-bash
Ключевые слова: bash, shell
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (24) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Анонимус (?), 14:08, 22/02/2009 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    > command_not_found_handle

    ИМХО зря. И так оно не быстро в этом месте работает.

     
     
  • 2.20, Аноним (20), 08:41, 23/02/2009 [^] [^^] [^^^] [ответить]  
  • +/
    frank@fqc-desktop:~$ time mysql
    Программа 'mysql' на данный момент не установлена.  Вы можете установить ее, напечатав:
    sudo apt-get install mysql-client-5.0
    bash: mysql: команда не найдена

    real 0m0.207s
    user 0m0.140s
    sys 0m0.040s

    frank@fqc-desktop:~$ lsb_release -a
    No LSB modules are available.
    Distributor ID: Ubuntu
    Description: Ubuntu 8.10
    Release: 8.10
    Codename: intrepid

     

  • 1.2, pavlinux (ok), 14:29, 22/02/2009 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    > Новая опция "dirspell" позволяет включить механизм корректировки

    Теперь совсем забудем как правильно команды пишутся, вполне <Tab> хватало...


    > асинхронным выполнением команд добавлено ключевое слово "coproc";

    Ну на этом можно перестроить весь init


     
     
  • 2.6, User294 (ok), 16:35, 22/02/2009 [^] [^^] [^^^] [ответить]  
  • +/
    > Ну на этом можно перестроить весь init

    Кому было надо - уже и так его перестроили давно.Я про upstart, initng и подобных...

     

  • 1.3, Андрей К (?), 15:17, 22/02/2009 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Дополнения хорошие, жаль, совместимость с предыдущей версией теряется.
     
     
  • 2.4, pavlinux (ok), 15:20, 22/02/2009 [^] [^^] [^^^] [ответить]  
  • +/
    Например?!
     
     
  • 3.8, vitek (??), 19:49, 22/02/2009 [^] [^^] [^^^] [ответить]  
  • +/
    например с фрибзд!!! это ж надо! gpl3!!! :-D
     
     
  • 4.14, 1 (??), 23:35, 22/02/2009 [^] [^^] [^^^] [ответить]  
  • +/
    gcc тоже под gpl3 и чо?
     

  • 1.9, Аноним (-), 19:51, 22/02/2009 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    а есть способ настроить перебор вариантов автодополнения по второму табу как в zsh?
     
     
  • 2.11, Аноним (20), 21:08, 22/02/2009 [^] [^^] [^^^] [ответить]  
  • +/
    >а есть способ настроить перебор вариантов автодополнения по второму табу как в
    >zsh?

    Поставить zsh.

     
     
  • 3.23, fredy (?), 15:56, 23/02/2009 [^] [^^] [^^^] [ответить]  
  • +/
    >>а есть способ настроить перебор вариантов автодополнения по второму табу как в
    >>zsh?
    >
    >Поставить zsh.

    zsh уже стоит, но используется только этот долбанный второй таб, причем использование продвинутого дополнения омрачается хешем, который вообще никак не реагирует на новые исполняемые файлы. Причем использование функции rehash предлагаемое в faq больше похоже на грязный хак чем на решение проблемы. Теперь вопрос: накой ***** мне этот паровоз, если из его функциональности используется всего 1 функция и один бааальшой костыль?

     
  • 2.17, pavlinux (ok), 00:52, 23/02/2009 [^] [^^] [^^^] [ответить]  
  • +/
    >а есть способ настроить перебор вариантов автодополнения по второму табу как в
    >zsh?

    Это и так есть...

     
     
  • 3.24, fredy (?), 16:00, 23/02/2009 [^] [^^] [^^^] [ответить]  
  • +/
    >>а есть способ настроить перебор вариантов автодополнения по второму табу как в
    >>zsh?
    >
    >Это и так есть...

    а поподробней можно

    bash --version
    GNU bash, version 3.2.39(1)-release (x86_64-pc-linux-gnu)
    Copyright (C) 2007 Free Software Foundation, Inc.

    унету: второй таб повторяет варианты

     
     
  • 4.28, pavlinux (ok), 02:06, 24/02/2009 [^] [^^] [^^^] [ответить]  
  • +/
    >>Это и так есть...
    >
    >а поподробней можно
    >унету: второй таб повторяет варианты

    А ты как хотел... что б bash мысли читал... :)

    # a <TAB><TAB>
    Display all 201 possibilities? (y or n)

    Как выбирать из 201 варианта ???


    А для остального используется complete,

    например

    # echo -ne > ~/.bash_completions
    # vi ~/.bash_completions

    complete -W "$(echo 'cat ~/.ssh/known_hosts | cut -f 1 -d ' ' | sed -e s/,.*//g | uniq | grep -v "\["';)" ssh


    <ESC> : wq

    # ^D

    # ssh <TAB><TAB>  

    будет из ~/.ssh/known_hosts показывать хосты на которые ходил.


     
     
  • 5.31, fredy (?), 10:27, 24/02/2009 [^] [^^] [^^^] [ответить]  
  • +/
    еще раз нужно не показывать варианты нужно ПЕРЕБИРАТЬ.

    например
    $/m tab
    /mnt
    /media
    $/m tab
    $/media
    $/media tab
    $/mnt
    $/mnt tab
    $/media

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

    а про программируемое заполнение и как его активировать не знает разве что ленивый.

     

  • 1.12, Василий (??), 21:32, 22/02/2009 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    > Для дополнения передаваемого следующему процессу стандартного
    > вывода потоком ошибок, вместо конструкции "2>&1 теперь можно
    > использовать синоним "|&";

    И зачем этот дубль? Оригинальный вариант 2>&1 в каких-то случаях невозможно применить?

     
     
  • 2.18, Andrew Kolchoogin (?), 01:07, 23/02/2009 [^] [^^] [^^^] [ответить]  
  • +/
    Для csh'истов.
     

  • 1.13, Sphynkx (?), 22:43, 22/02/2009 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Двумерные массивы не догадались реализовать :-(( Разочарован.
     
  • 1.15, Michael Shigorin (ok), 00:22, 23/02/2009 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Тем временем некоторые и так открыли для себя zsh. :)  Правда, уж если подсаживаться, то стоит давать себе отчёт в zsh-измах и отмечать их соответствующим шебангом.
     
  • 1.16, Василий (??), 00:30, 23/02/2009 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    > Добавлена реализация поддержки ассоциативных массивов

    А это вообще супер-достижение! В zsh лет 100 (не меньше!) использую ассоциативные массивы! :-)))

     
     
  • 2.22, Фантом (?), 12:45, 23/02/2009 [^] [^^] [^^^] [ответить]  
  • +/
    >> Добавлена реализация поддержки ассоциативных массивов
    >
    >А это вообще супер-достижение! В zsh лет 100 (не меньше!) использую ассоциативные
    >массивы! :-)))

    C 1909-ого года? Вау...

     
     
  • 3.27, User294 (ok), 21:08, 23/02/2009 [^] [^^] [^^^] [ответить]  
  • +/
    >C 1909-ого года? Вау...

    ZshЪ. Since 1909... :D

     

  • 1.25, Bogus (??), 20:40, 23/02/2009 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    а встроенную историю выполнения команд с указанием времени и pid'а хозяина так и не сделали.... :(
    Вещь иногда очень нужная, особенно при разборе полетов...
     
     
  • 2.32, NAVY (?), 18:44, 25/02/2009 [^] [^^] [^^^] [ответить]  
  • +/
    >а встроенную историю выполнения команд с указанием времени и pid'а хозяина так
    >и не сделали.... :(
    >Вещь иногда очень нужная, особенно при разборе полетов...

    bash> csh
    и плакал твой разбор. Для этого нормальный аудит надо юзать. Оно от шелла не зависит.

     

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



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

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