The OpenNET Project / Index page

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

Xonsh - командная оболочка, сочетающая Python с лучшими возможностями Bash, zsh и fish

05.06.2016 08:45

В рамках проекта xonsh развивается интерактивная командная оболочка, предоставляющая возможность выполнения сценариев на языке Python и предлагающая интерфейс командной строки, заимствующий лучшие черты таких оболочек как bash, zsh, fish и IPython. Язык сценариев является подмножеством языка Python 3.4, расширенный дополнительными примитивами традиционных оболочек. Код написан на языке Python и распространяется под лицензией BSD. Поддерживается работа в Linux, Windows и OS X.

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

При работе в xonsh в командной строке доступны типовые библиотеки функций Python, например, можно использовать регулярные выражения при выборке файлов, манипулировать контентом в формате JSON, выполнять математические действия, вызывать функции библиотек pandas, NLTK и numpy в процессе проведения научных исследований. При этом, в отличие от IPython, выполнение команд не требует использования отдельного префикса. Разбор ввода производится в привязке к контексту, например, ввод "ls -l" может быть трактован как вызов команды ls с аргументом "-l", но если определены переменные "ls" и "l", то выражение будет трактоваться как "ls минус l". Также можно явно использовать режим Python и режим подкомманд (к в обычном shell). Дополнительно предлагается собственный менеджер виртуальных Python-окружений Vox, позволяющий одновременно работать в нескольких изолированных пространствах имён.

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



  1. Главная ссылка к новости (https://us.pycon.org/2016/sche...)
  2. OpenNews: Выпуск IPython 4.0
  3. OpenNews: Релиз командного интерпретатора Bash 4.3
  4. OpenNews: Выпуск командной оболочки fish 2.2.0
  5. OpenNews: Релиз командной оболочки zsh 5.1
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/44547-shell
Ключевые слова: shell, python, xonsh
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (47) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Аноним (-), 11:14, 05/06/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • +53 +/
    > например, ввод "ls -l" может быть трактован как вызов команды ls с аргументом "-l", но если определены переменные "ls" и "l", то выражение будет трактоваться как "ls минус l"

    Кошмар.

     
     
  • 2.14, Аноним (-), 14:49, 05/06/2016 [^] [^^] [^^^] [ответить]  
  • +4 +/
    Достойный ответ однострочникам на перловке.
     
  • 2.25, анином (?), 00:01, 06/06/2016 [^] [^^] [^^^] [ответить]  
  • +17 +/
    Согласен полностью. Заранее хорошо и тщательно расставленые грабли.
     
  • 2.28, Александр (??), 05:30, 06/06/2016 [^] [^^] [^^^] [ответить]  
  • –4 +/
    Всегда этим пользуюсь, только не l а ll. В убунете кстате по умолчанию включено. очень удобно
     
     
  • 3.33, тОпор (?), 09:13, 06/06/2016 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Да-да неудобно только спать на потолке. Одеяло падает. А ловить ошибки по три часа.... Так нам за это же саше деньги платят, наверно.
     

  • 1.3, Аноним (-), 11:50, 05/06/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    > манипулировать контентом в формате JSON

    Для чего писать целую оболочку, если достаточно написать одну утилиту?

     
     
  • 2.4, Аноним (-), 12:14, 05/06/2016 [^] [^^] [^^^] [ответить]  
  • +5 +/
    есть такая утилита jq

    jq - commandline JSON processor [version ]
    Usage: jq [options] <jq filter> [file...]

     
     
  • 3.6, Аноним (-), 12:37, 05/06/2016 [^] [^^] [^^^] [ответить]  
  • +4 +/
    jq вещь еще пару лет назад про нее на #linux рассказывал. Очень удобно в сочетании с curl.
     
  • 3.29, Аноним (-), 05:34, 06/06/2016 [^] [^^] [^^^] [ответить]  
  • +/
    Вместо curl, httpie
     

  • 1.9, rob pike (?), 13:04, 05/06/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Скучный шелл. Обсудим лучше гугловский styleguide

    https://google.github.io/styleguide/shell.xml

     
     
  • 2.19, ТТТ (?), 20:12, 05/06/2016 [^] [^^] [^^^] [ответить]  
  • +/
    Начинайте.
     

  • 1.12, jOKer (ok), 14:09, 05/06/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • –5 +/
    Как интересно! Надо заюзать.
     
  • 1.13, vvp (??), 14:44, 05/06/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    > Отдельного внимания заслуживают средства по работе с историей операций, которые построены с использованием асинхронной модели, охватывающей сразу все активные сеансы, а не только текущий терминал.

    вот это 5, а всё остальное зачем? йа нинапимать
    видать с возрастом в олдфага превращаюсь ...

     
     
  • 2.27, Алексей Морозов (ok), 03:07, 06/06/2016 [^] [^^] [^^^] [ответить]  
  • +/
    Ну, как, проделывать нужные операции, не выходя из оболочки. Только, представляется, что автокомплишна имен файлов, наподобие того, как это сделано в bpython, достаточно для всего.

    Разве что, особым маньяками предоставить возможность выбор стрелочками из списка, как в zsh'ном menu автокомплишне, pipes (стандартный модуль), и базовые файловые операции.

     

  • 1.15, KOT040188 (?), 16:52, 05/06/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    >>Отдельного внимания заслуживают средства по работе с историей операций, которые построены с использованием асинхронной модели, охватывающей сразу все активные сеансы, а не только текущий терминал.

    Вот этого реально не хватает.

     
     
  • 2.17, rob pike (?), 18:15, 05/06/2016 [^] [^^] [^^^] [ответить]  
  • +3 +/
    И конечно для этого надо питонить новый шелл.
    Когда пепельница в автомобиле забивается, только новые русские покупают новый автомобиль. Настоящие герои проектируют новую модель автомобиля.

    http://unix.stackexchange.com/questions/1288/preserve-bash-history-in-multipl

     
     
  • 3.24, KOT040188 (?), 22:32, 05/06/2016 [^] [^^] [^^^] [ответить]  
  • –1 +/
    >>новые русские

    Это что-то из 90-ых?

     
  • 2.20, Аноним (-), 20:13, 05/06/2016 [^] [^^] [^^^] [ответить]  
  • +3 +/
    zsh умеет же
     
     
  • 3.21, Аноним (-), 21:01, 05/06/2016 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Понимаешь, тут как с сустемд и дмиксом…
     
  • 3.36, Аноним84701 (?), 14:58, 06/06/2016 [^] [^^] [^^^] [ответить]  
  • +/
    > zsh умеет же

    Глянул http://xon.sh/#comparison
    У них похоже какой-то свой zsh — у меня он вполне и в "Syntax highlighting" и в "Man-page completion" умеет.

     

  • 1.18, Дуплик (ok), 20:06, 05/06/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Интересная вещь
     
  • 1.22, all_glory_to_the_hypnotoad (ok), 21:13, 05/06/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • +5 +/
    > Язык сценариев является подмножеством языка Python 3.4 ... ввод "ls -l" может быть трактован как вызов команды ls с аргументом "-l", но ... то выражение будет трактоваться как "ls минус l".

    Во дебилы. Казалось бы трудно найти что-то тупее пыхеров

     
  • 1.23, Аноним (-), 22:31, 05/06/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Когда уже сделают шелл на javascript))
     
     
  • 2.30, Аноним (-), 05:35, 06/06/2016 [^] [^^] [^^^] [ответить]  
  • +/
    > Когда уже сделают шелл на javascript))

    Давно уже есть

     

  • 1.26, Аноним (-), 01:56, 06/06/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    А оно нужно кому то? имхо шелы хороши когда портабельны между разными системами и платформами. а тут....хорошо если на линуксе заработает как то на одном или двух хостах. но больше то как и зачем?
     
     
  • 2.32, zztop (?), 09:07, 06/06/2016 [^] [^^] [^^^] [ответить]  
  • +/
    новость не читай @ коменты оставляй
     
     
  • 3.57, Аноним (-), 16:43, 09/06/2016 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Хорошо пригорает у бидонистов это может только веселить ~Питонопроблемы~
     

  • 1.31, Аноним (-), 07:17, 06/06/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Сам питон готов то к шеллу кроме Django?
     
     
  • 2.34, PnDx (ok), 11:08, 06/06/2016 [^] [^^] [^^^] [ответить]  
  • +3 +/
    "Эй, питон, готовься к шеллу".
    * не удержался.
     

  • 1.35, Кубер100 (?), 14:14, 06/06/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    "автодополнение ввода клавишей табуляции"

    т.е., в простом баше никто этого делать не уметь...

     
  • 1.37, Онаний (?), 17:21, 06/06/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    сейчас спровоцирую поход на офсайт:

    А все видели их логотип, напоминающий женскую половую 3,14^W орган?

     
  • 1.38, Аноним (-), 19:05, 06/06/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    А что изображено на их логотипе, интересно?
     
     
  • 2.40, 123 (??), 21:03, 06/06/2016 [^] [^^] [^^^] [ответить]  
  • +/
    Раковина (shell) же
     
     
  • 3.41, Аноним (-), 00:07, 07/06/2016 [^] [^^] [^^^] [ответить]  
  • +/
    щель
     
     
  • 4.42, Led (ok), 00:29, 07/06/2016 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > щель

    А о чём ещё могут думать йунные укротители питона, как не о щели?

     
     
  • 5.51, Онаний (?), 15:16, 07/06/2016 [^] [^^] [^^^] [ответить]  
  • +/
    >> щель
    > А о чём ещё могут думать йунные укротители питона, как не о
    > щели?

    +1

     
     
  • 6.52, Andrey Mitrofanov (?), 16:51, 07/06/2016 [^] [^^] [^^^] [ответить]  
  • +/
    >>> щель
    >> А о чём ещё могут думать йунные укротители питона, как не о
    >> щели?
    > +1

    Я тоже +1!! Я йун инсайдЪ, поэтому тоже минутку подумаю о НЕЙ.   ....  .....  Спасибо, да и б.г. с ним с пайтомам.

     
     
  • 7.58, Аноним (-), 21:24, 13/06/2016 [^] [^^] [^^^] [ответить]  
  • +/
    Ни разу не фанат питона.. но походу к нему надо присмотреться.

    Раз он не нравится такому количество идиотов.

     

  • 1.39, Blind Vic (ok), 19:41, 06/06/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Video: https://www.youtube.com/watch?v=uaje5I22kgE
     
  • 1.43, rob pike (?), 02:36, 07/06/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Чинить некому, все свои шеллы пишут

    > No really: bash's ulimit documented -b but didn't implement it, had a -x based on an RLIMIT_LOCKS feature the Linux kernel removed in 2003 (so it hasn't worked in 13 years), used 1024 byte units for -f when posix explicitly said 512, and then it used 512 byte units for -p which was displaying a hardwired value that chagned in 2010 (linux commit 35f3d14dbbc5) so it's been wrong for over 5 years. Linux grew a very nice RLIMIT_RTTIME feature back in 2008 (linux commit 8808117ca571) that ulimit never bothered to hook up
    > And of course Linux grew a "prlimit" syscall ages ago (2.6.36 in 2010) but bash's ulimit doesn't use it.

     
  • 1.44, Kostiantyn Lysenko (?), 06:00, 07/06/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Пользовался Xonsh вместе с https://github.com/donnemartin/gitsome
    Удобно.

    Но emacs + bash еще удобней.

     
  • 1.45, lor_anon (ok), 06:30, 07/06/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Объектный пайп есть?
     
  • 1.46, omo (?), 11:54, 07/06/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Всё хорошо до тех пор, пока работаешь на одной машине, но как только добавляется ещё n разных/древних/кривых/косых, так понимаешь, что "есть bash и есть остальные".
     
     
  • 2.50, Andrey Mitrofanov (?), 12:55, 07/06/2016 [^] [^^] [^^^] [ответить]  
  • +2 +/
    > Всё хорошо до тех пор, пока работаешь на одной машине, но как
    > только добавляется ещё n разных/древних/кривых/косых, так понимаешь, что "есть bash и
    > есть остальные".

    С минуты на минуту питонисты приделают онлайн синкание шелл-истории через дроббокс/гитнуб/вассап/телеграм и таогда-а-а.... и пубершельные, и гнутые будут "глотать пыль"ТМ !

     

  • 1.53, Аноним (-), 06:40, 08/06/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    А powershell под линукс есть?
     
     
  • 2.54, Аноним (-), 06:43, 08/06/2016 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Сам спросил сам отвечу - есть!
    https://www.opennet.dev/opennews/art.shtml?num=42185
     
     
  • 3.55, Andrey Mitrofanov (?), 10:17, 08/06/2016 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Сам спросил сам отвечу - есть!
    >opennet.ru/opennews/art.shtml?num=42185

    И ведь ссылка на ёпенет, то есть вопрос "зачем это здесь" уже излишен -- дважды.

    Как, десяточка-то == хороша???

     

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



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

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