The OpenNET Project / Index page

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

Как получать ответы на вопросы по программированию прямо из командной строки или редактора
В прошлой заметке было показано как, пользуясь сервисом cheat.sh, можно
получить краткую справку практически по любой популярной команде UNIX/Linux.
Сервис использует для этого популярные репозитории шпаргалок (cheat sheets),
такие как tldr, cheat и прочие.

Возможности сервиса cheat.sh были расширены, и теперь с его помощью можно
получать не только подсказки по командам UNIX/Linux, но и получать ответы на
любые вопросы по программированию.

В простейшем случае использование сервиса выглядит следующим образом:

    curl cheat.sh/python/append+file

Этот запрос возвращает ответ на вопрос, как дописать файл (append file) в python.

Вместо python в запросе можно указать другой язык программирования (из 55 поддерживаемых
сервисом в настоящий момент):

    curl cheat.sh/js/append+file
    curl cheat.sh/go/append+file

Возвращаемые запросы отформатированы по умолчанию как код на соотвествующем 
языке программирования: текстовые пояснения оформлены как комментарии языка.
Их можно убрать полностью (опция Q) или оставить как незакомментированный текст:

(с комментариями)

    $ curl cht.sh/lua/merge+tables
    -- Lua - merge tables?

    for k,v in pairs(second_table) do first_table[k] = v end

    -- [Doug Currie] [so/q/1283388] [cc by-sa 3.0]

(без комментариев)

    $ curl cht.sh/lua/merge+tables?Q
    for k,v in pairs(second_table) do first_table[k] = v end

Сервис поддерживает множество других опций, описание которых можно получить по запросу /:help

    curl cht.sh/:help

Обратите внимание, что к сервису можно обращаться как по полному имени (cheat.sh),
так и по краткому имени cht.sh. Для запросов можно использовать оба протокола HTTP и HTTPS.


Примеры запросов:

    curl cht.sh/go/reverse+a+list
    curl cht.sh/python/random+list+elements
    curl cht.sh/js/parse+json
    curl cht.sh/lua/merge+tables
    curl cht.sh/clojure/variadic+function

Демонстрация: https://www.opennet.ru/opennews/pics_base/0_1530858949.gif


cht.sh: Клиент для комадной строки


Сервис не требует инсталляции никакого дополнительного программного обеспечения
за исключением curl (или его альтернатив, таких как wget, httpie или fetch),
однако у него существует одноимённый клиент, cht.sh, который упрощает использование
сервиса и делает его использование более удобным:

    $ cht.sh python append file

Клиент поддерживаем режим оболочки (шелла), в котором можно задавать вопросы напрямую,
не вводя каждый раз при этом название языка и не вызывая клиент:

    $ cht.sh --shell python
    python> append file
    ...
    python> generate random string
    ...
    python> parse json
    ...

В зкспериментальном режиме сервис поддерживает запросы и на других языках кроме английского:

    python> дописать файл
    python> скопировать файл
    python> переименовать файл
    python> рекурсивный обход каталога
    python> cd /lua
    lua> использовать внешнюю функцию
    lua> отсортировать таблицу
    js> cd /js
    js> асинхронное чтение файла

Все запросы, приведённые выше, произвольны (и все возвращают корректные ответы).

Сервис работает следующим образом: после получения запроса он пытается обработать его пользуясь
данными из доступных репозиториев шпаргалок, таких как tldr, cheat, learnxiny и
так далее (а точнее,
их локальных копий, проиндексированных и находящихся в памяти, благодаря чему, в том числе,
достигается такая высокая скорость реакции). В простейших случаях, когда запросы односложны,
и являются, например, названием команд UNIX/Linux, этого оказывается достаточно.

Если же запрос обработать таким образом не удаётся, осуществляется поиск на внешних ресурсах
(в первую очередь stackoverflow.com и других сайтах stackexchange), и если подходящий ответ
найти удалось, он обрабатывается и возвращается пользователю. Код ответа форматируется,
как уже было сказано выше, таким образом, что текст в нём оформляется как комментарии,
код остаётся кодом, а внизу добавляется источник ответа, имя его автора и лицензия, по которой
он распространяется.

Если найденный для ответа вопрос не подходит, следующий можно посмотреть,
добавив /номер после него:

    python> generate random string
    python> generate random string /1
    python> generate random string /2


Клиент cht.sh имеет предоставляет ряд других приятных возможностей, таких как:

* автопродолжение;
* история поиска;
* копирование в буфер обмена (C);

и ряда других (для просмотра нужно вызвать help в cht.sh).

Кроме этого к cheat.sh можно обращаться напрямую из текстового редактора.

Демонстрация: https://www.opennet.ru/opennews/pics_base/0_1530859122.gif


Доступ из редактора

Запросы к cheat.sh, а значит к StackOverflow и к прочим источникам информации,
использующимся в cheat.sh,
можно отправлять напрямую из текстового редактора Vim или Emacs.

Для этого нужно установить дополнительные плагины (подробнее в cht.sh/:vim и в cht.sh/:emacs).

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

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

Традиционным решением было бы:

* открыть браузер,
* в нём - google,
* ввести "generate random string",
* получить ссылку на stackoverflow,
* перейти по ней,
* скопировать найденный ответ в буфер обмена,
* вставить его в редактор,
* подправить его под конкретную программу.

Вместо этого, используя плагин cheat.sh-vim:

* ввести запрос прямо в буфере редактора;
* нажать <leader>KP (или <leader>KB, или <leader>KK).

Ответ будет вставлен в код, показан в отдельном буфере редактора (<leader>KB)
или во внешнем пейджере (<leader>KK).

Демонстрация возможностей плагина: https://www.opennet.ru/opennews/pics_base/0_1530859160.gif

Альтернативные решения

Существуют альтернативные решения, которые позволяют достичь похожих результатов:

* tldr  - подсказки по командам UNIX/Linux;
* cheat - подсказкт по командам UNIX/Linux;
* how2  - поиск ответов на stackoverflow из командной строки;
* howdoi - поиск ответов на stackexchange из командной строки.

Все вышеназванные утилиты хорошо справляются с названными задачами.
При этом cheat.sh обладает рядом преимуществом в сравнении с каждой из них:

* Не требует инсталляции, может использоваться везде, где есть curl/wget/httpie
или любой HTTP-клиент;
* Предоставляет доступ как к шпаргалкам, так и к ответам на вопросы;
* Намного быстрее чем how2 и howdoi;
* Комментирует пояснительный текст в ответах;
* Может использоваться для автоматических запросов;
* Не требует актуализации репозиториев шпаргалок (как в случае с tldr и cheat);
* Поддерживает запросы на разных языках, в том числе на русском;
* Интеграция с текстовыми редакторами Vim и Emacs;
* Поддерживает Tab-completion (для bash, zsh и fish).

Недостатки (на данный момент):

* Не может работать в оффлайн-режиме (tldr и cheat могут; howdoi и how2 тоже нет).




Ссылки

* https://github.com/chubin/cheat.sh            - главный репозиторий проекта
* https://github.com/dbeniamine/cheat.sh-vim    - плагин для Vim
* https://github.com/davep/cheat-sh.el          - плагин для Emacs

* https://twitter.com/igor_chubin               - твиттер главного
разработчика проекта (используется для анонса существенных обновлений проектов
и новых проектов)

Другие подобные проекты (подмножество функций cheat.sh):

* https://github.com/tldr-pages/tldr            - подсказки для командной строки
* https://github.com/chrisallenlane/cheat       - подсказки для командной строки
* https://github.com/adambard/learnxinyminutes-docs - краткие учебники по
языкам программирования
* https://github.com/gleitz/howdoi              - поиск ответов на
вопросы по языкам программирования из командной строки
* https://github.com/santinic/how2              - поиск ответов на
вопросы по языкам программирования из командной строки

Сервисы для терминала:

* curl wttr.in  - погода из терминала
* curl rate.sx ; curl rate.sx/btc - курс валют и криптовалют из терминала
* curl qrenco.de - сервис для генерация QR-кода в терминале
* ix.io, sprunge.us, ptpb.pw, 0x0.st, clbin.com - Pastebin для терминала
* curl ifcfg.me, curl ip-addr.es и множество других - определение
внешнего IP-адреса в терминале
* https://github.com/chubin/awesome-console-services/ - полный список сервисов для терминала
 
05.07.2018 , Автор: igor_chubin , Источник: https://github.com/chubin/cheat.sh...
Ключи: help, cheat, shell
Раздел:    Корень / Пользователю / Файлы, копирование, архивация

Обсуждение [ Линейный режим | Показать все | RSS ]
  • 1.1, Аноним (1), 10:21, 06/07/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    curl cheat.sh/npm/leftpad

    Теперь если вдруг забудете, то ВСПОМНИТИ

     
  • 1.3, Alexander (ok), 12:29, 06/07/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    $ curl cheat.sh/определение+внешнего+IP-адреса
    Unknown topic.
    Do you mean one of these topics may be?

        * reg-import 15
        * run-mailcap 15
        * scala/:main 15

    $ curl cheat.sh/Pastebin+для+терминала
    Unknown topic.
    Do you mean one of these topics may be?

        * paste 37
        * update-rc.d 36
        * pbpaste 34

    Недоработочка ;-)

    Круто сервис, конечно. Спасибо!

     
     
  • 2.4, igor_chubin (ok), 12:52, 06/07/2018 [^] [^^] [^^^] [ответить]  
  • +/
    Такие запросы можно отправлять только для конкретного контекста (по крайней мере пока что).
    Без указания контекста (языка программирования) можно указывать только односложные команды.

    Попробуйте такие же запросы но с указанием контекста:

    curl cheat.sh/python/определение+внешнего+IP-адреса
    curl cheat.sh/bash/определение+внешнего+IP-адреса
    curl cheat.sh/bash/Pastebin+для+терминала

    Конечно, можно было бы всегда предполагать по умолчанию контекст bash, но это было бы не совсем правильно (потому что вы мысленно можете находиться в другом контесте, и тогда вы будете удивляться почему вам советуют такие ответы). То есть контекст введён намеренно и сознательно.

     
     
  • 3.10, pavlinux (ok), 16:19, 07/07/2018 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Мальчеги, выдолб....

    pavel@amd64:/tmp$ links https://www.google.ru/search?q='определение внешнего IP-адреса';
    ....

    pavel@amd64:/tmp$ function google() { links "https://www.google.ru/search?q=$@"; };
    pavel@amd64:/tmp$ google "определение внешнего IP-адреса"
    ....

    Вместо links пихайте любую хрень для доставки HTML: lynx, curl, wget -O- | html2txt,....

     
     
  • 4.11, igor_chubin (ok), 17:44, 07/07/2018 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Да ну, бросьте.

    При всём уважении к вам, Pavlinux, на мой взгляд, вы тут категорически неправы.

    То что предлагаете вы, это ещё хуже чем пользоваться графическим браузером. И единственное преимущество у вас в тут в том, что вы можете оставаться в консоли. Но дальше одним только минусы: медленно, неудобно, ненаглядно, никуда не интегрируется и так далее.

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

    ~~~
    $ time curl cht.sh/bash/определение+внешнего+IP-адреса
    # linux - Methods to detect public IP address in bash

    curl ipinfo.io/ip

    # Or

    wget -qO- ipinfo.io/ip

    # Or

    lynx -source ipinfo.io/ip

    # get public ip address (http://commandlinefu.com/commands/view/7368
    # /get-you-pub)
    #
    # [Steven Penny] [so/q/14594151] [cc by-sa 3.0]

    real    0m0.083s
    user    0m0.008s
    sys     0m0.000s
    ~~~

    Готовый к использованию красиво отформатированный и откомментированный код,
    полученный за 0.083s, с ссылками, указание авторства, лицензией и так далее.
    Может быть напрямую получен из редактора.
    Без необходимости установки html2txt, и тому подобного.

    Предлагаемое решение с помощью google() по сути ничего не даёт, кроме того что
    открывает поисковик google в links. Дальше нужно ходить и искать ответ как в обычном графическом браузере. Поиск на русском тоже сработает только если ответы есть на русском. А если нет?
    Попробуйте поискать так на каком-то другом, менее распространённом языке,
    или попробуйте поискать так что-то посложнее. Вы просто не найдёте ничего, потратите много времени на поиски.

    Если по каким-то причинам вам не нравится cheat.sh, лучше тогда использовать howdoi или how2, которые тоже хорошо работают.

     

  • 1.5, Аноним (5), 13:42, 06/07/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    Большое Вам спасибо за Ваш труд! Мне, как апологету CLI и нелюбителю раздутых современных браузеров, такое программное решение - как глоток воздуха.
     
     
  • 2.6, igor_chubin (ok), 15:44, 06/07/2018 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Истинно так И проблема даже не в том, что для того чтобы браузеру показать вам ... текст свёрнут, показать
     
     
  • 3.7, Онаним (?), 21:12, 06/07/2018 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Отсыпь немного
     
     
  • 4.8, igor_chubin (ok), 22:20, 06/07/2018 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Мне кажется, что без этого вашего комментария в моей записи оставалась какая-то недосказанность, а вот сейчас всё стало просто отлично. Спасибо большое
     
  • 4.45, Michael Shigorin (ok), 01:11, 15/08/2018 [^] [^^] [^^^] [ответить]  
  • +/
    На: http://www.wagner.pp.ru/~vitus/articles/user-friendly.html
     
  • 3.33, Аноним (33), 06:36, 11/07/2018 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Странный опус, для когото компьютер = развлекаться, для кого-то работать, вэб уже стал заменой консоли, и выдавит ее, не сегодня, так завтра. Лично мне не нравятся железки/софт с онли-вэб, но таких все больше, и если в вэбе проще промазать по кнопке - например, когда правила фаервола прыгают в микротике, можно легко рубануть не то. То у консоли свои "особенности", скопирована строка с переносом строки или без. Но вэб оперирует структурированными данными, чего от грипа добится невозможно. При прочих равных, функционал одинаковый, скрипт на дерганье чего-то через консоль проще в разы, но правильный вэб-2.0 (с RESTful) не сильное усложнение, зато вытащить таблицу как таблицу, а не как html-месиво, которое распарсить 90% кода скрипта, который внезапно улетает за вторую тысячу строк.
     
     
  • 4.34, igor_chubin (ok), 02:35, 12/07/2018 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Я думаю, что вы ошибаетесь насчёт консоли, насчёт того, что веб её выдавит.

    Моё мнение на этот счёт:

    Веб никого никуда не выдавит, максимум, что может сделать веб (но даже этого не произойдёт) это перетащить консоль в браузер, но только с тем чтобы это осталось полноценной консолью как сейчас, то есть по сути программой с ярко выраженным текстовым интерфейсом. Собственно, воплощением текстового интерфейса как такового.

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

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

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

    Вот вкратце, что я думаю об этом, и вот почему я считаю судьбу текста (а текст для меня = терминал + редактор) совершенно безоблачной.

    Конечно, это не более чем моё мнение, и оно очень даже запросто может быть ошибочным.

     
     
  • 5.35, Аноним (33), 04:57, 12/07/2018 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Ага, то-то на каждой первой железке консолька, то бэкспейс не умеет, то делет, а... текст свёрнут, показать
     
     
  • 6.46, Michael Shigorin (ok), 01:14, 15/08/2018 [^] [^^] [^^^] [ответить]  
  • +/
    > Но на наш век еще хватит, хорошо это или плохо.

    Вы вообще ничего не поняли, "настрадамус".

     

  • 1.9, pavlinux (ok), 16:10, 07/07/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    man пробовали?
     
     
  • 2.12, igor_chubin (ok), 17:48, 07/07/2018 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > man пробовали?

    Да

    Как с помощью man ответить на вопросы по программированию?

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

    lua прочитать json

    Какой man открывать и потом что там искать?

     
     
  • 3.37, pavlinux (ok), 02:54, 15/07/2018 [^] [^^] [^^^] [ответить]  
  • +/
    > Например, я хочу узнать как в
    > lua прочитать json
    > Какой man открывать и потом что там искать?

    Это вопросы начинающих, а не программиста. А эти консоль уже не знают.

     
     
  • 4.38, igor_chubin (ok), 05:09, 15/07/2018 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Да, так и есть, но только:

    1) Можно хорошо разбираться в одном языке программирования, но быть начинающим в другом языке программирования, это довольно типичная ситуация;
    2) Из всей консоли нужно знать только команду curl, что довпольно просто;
    3) Собственно, с учётом, плагинов для редакторов даже и консоль знать не обязательно.

     

  • 1.13, Crazy Alex (ok), 03:20, 08/07/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    А потом прилетит что-нибудь милое с ESC-последовательностями.
     
     
  • 2.14, igor_chubin (ok), 12:40, 08/07/2018 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Справедливое замечание. Спасибо.

    По правде говоря уже ничего серьёзного таким образом давно прилететь не может (если, конечно, вы не используете старый классический VT100-терминал).
    Вот здесь хороший полный обзор того, что может прилететь, известный на сегодняший день:

    https://unix.stackexchange.com/q/15101

    Это касается, конечно, не только этого сервиса, но и в принципе использования команды curl, а так же cat, less -R и так далее, собственно любой, где у вас осуществляется вывод неких внешних данных на терминал (cheat.sh просто использует ANSI-последовательности по умолчанию и не скрывает этого, а другие нет, но это не означает, что они не могут их использовать).


    Но в целом замечание очень справедливое, и мы предусмотрели несколько контрмер:

    1) Для того чтобы полностью исключить опасность (как в этом, так и во всех остальных случаях), лучше всего удалять ANSI-последовательности из вывода:

    curl -s https://cht.sh | sed -r 's/\x1b\[[0-9;]*m?//g'

    или с помощью ansi2txt из пакета kbtin:

    curl -s https://cht.sh | ansi2txt

    2) Использовать https вместо http для того чтобы исключить возможность MITM-атак и внедрения ANSI-последовательностей в вывод.

    3) Проинсталлировать cheat.sh у себя (cheat.sh это программа с открытым исходным кодом)
    и или использовать https://cheat.sh в качестве аплинка (но рендеринг уже будет проводиться на вашей стороне, и вы в безопасности) или напрямую брать данные из источников (будет работать медленнее, но вы будете полностью независимы от центрального сервера cheat.sh).

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

     

  • 1.15, aaaaaaaaaaaaaaaaaaaaaaaaaaaa (?), 13:58, 08/07/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Дополните пожалуйста ответом
    http://cheat.sh/bash/офлайн+версия+cheat.sh+с+помощю+wget
    если это реально...
     
     
  • 2.17, igor_chubin (ok), 14:20, 08/07/2018 [^] [^^] [^^^] [ответить]  
  • +/
    Не совсем понятно зачем тогда использовать wget, если это офлайн версия.
    Или вы имеете в виде локальное зеркало?

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

    https://github.com/chubin/cheat.sh/issues/14

     
     
  • 3.19, aaaaaaaaaaaaaaaaaaaaaaaaaaaa (?), 14:32, 08/07/2018 [^] [^^] [^^^] [ответить]  
  • +/
    >Не совсем понятно...

    Если cheat.sh "Не может работать в оффлайн-режиме", в wget может делать локальные копии сайтов, то делитанство подсказывает, что возможно можно wget-ом создать офлайновую версию cheat.sh...

    >Вообще, мы работаем...

    Понял. Жду с нетерпением. Не всегда интернет под рукой...

     
     
  • 4.20, igor_chubin (ok), 14:43, 08/07/2018 [^] [^^] [^^^] [ответить]  
  • +/
    > Если cheat.sh "Не может работать в оффлайн-режиме", в wget может делать локальные
    > копии сайтов, то делитанство подсказывает, что возможно можно wget-ом создать офлайновую
    > версию cheat.sh...

    Всё, теперь понятно, что имелось тут под "wget".

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

    Дело в том, что тут так не получится сделать, потому что wget он просто идёт по ссылкам и рекурсивно вытаскивает страницы, создавая локальную копию сайта. Здесь гиперссылок в ответах вообще нет, соответственно wget не сможет рекурсивно обойти сайт и забрать контент, но это ещё полбеды,
    теоретически можно было бы сделать так:

    # условный код, потому что ещё нужно нормально обрабатывать страницы
    # в подкаталогах, но идею вы поняли
    curl cht.sh/:list | while read page; do
      curl "cht.sh/$page" > "$page"
    done

    Однако основная проблема тут в том, что так вы получите тут только страницы-шпаргалки,
    а не динамически генерируемые ответы на вопросы (в которых и есть основная сила сервиса).
    Если вам нужны одни только шпаргалки, то можно пока временно просто проинсталлировать tldr и cheat (не путать с cheat.sh) (ссылки в заметке).

    С другой стороны динамически генерируемые ответы не могут быть доступны в офлайне по понятным причинам.

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

     

  • 1.16, Аноним (16), 14:20, 08/07/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Раскраска вывода делает текст плохо читаемым на светлых темах.
     
     
  • 2.18, igor_chubin (ok), 14:31, 08/07/2018 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Раскраска вывода делает текст плохо читаемым на светлых темах.

    Да, это правда.

    Вот здесь подробнее об этом:

    https://github.com/chubin/cheat.sh/issues/5

    Есть три способа временного решения данной проблемы:

    1. Использовать опцию ?T для отключения раскраски:

    curl cht.sh/python/zip+lists?T

    2. Убирать ANSI-последовательности с помощью вышеописанных методов (если вы из соображений безопасности не выводите текст на консоль с помощью cat или curl):

    curl cht.sh/python/zip+lists | sed -r 's/\x1b\[[0-9;]*m?//g'
    curl cht.sh/python/zip+lists | ansi2txt # (из пакета kbtin)

    3. Выбрать подходящую цветовую тему:

    curl cht.sh/:styles-demo | less -R
    curl cht.sh/python/zip+lists?style=autumn


    Во всех случаях, конечно, лучше использовать клиент cht.sh (curl https://cht.sh/:cht.sh),
    для того чтобы не дописывать каждый раз руками опции при запросах.
    Тогда все опции один раз задаются в конфигурационном файле,
    а вы потом просто вызываете:

    cht.sh python zip lists

    Использование клиента cht.sh имеет и множество других приятных возможностей по сравнению с использованием curl.

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

     
     
  • 3.21, Аноним (21), 15:57, 08/07/2018 [^] [^^] [^^^] [ответить]  
  • +/
    Где можно подробнее узнать о конфигурационном файле? Тут - https://github.com/chubin/cheat.sh - не нашёл (может, просмотрел).
     
     
  • 4.28, igor_chubin (ok), 22:22, 08/07/2018 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Где можно подробнее узнать о конфигурационном файле? Тут - https://github.com/chubin/cheat.sh
    > - не нашёл (может, просмотрел).

    Да, там не было этого, я добавил.

    Файл ~/.cht.sh/cht.sh.conf
    Параметр называется QUERY_OPTIONS

    То есть чтобы отключить раскраску:

    ~~~~
    QUERY_OPTIONS="T"
    ~~~~

    (и обновите, пожалуйста, клиент cht.sh, если вы его уже установили;
    для этого выполните команду update режиме шелла или просто переустановите заново)

    ~~~~
    $ cht.sh --shell
    cht.sh> update
    cht.sh is up to date. No update needed
    cht.sh> ^D
    $
    ~~~~

     
     
  • 5.29, Аноним (29), 23:51, 08/07/2018 [^] [^^] [^^^] [ответить]  
  • +/
    Спасибо.
     

  • 1.22, Аноним (22), 18:50, 08/07/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Пожалуйста, рассмотрите возможность использования http://asciinema.org/ вместо гифок для создания текстовых скринкастов.
     
     
  • 2.23, igor_chubin (ok), 19:28, 08/07/2018 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Мы используем asciinema тоже, но гифки обладают тем преимуществом, что

    1) они могут показываться в ленте твиттера и на гитхабе без перехода на сайт asciinema (для asciiname трансляций вам нужно сначала кликнуть по ней, чтобы её посмотреть, что останавливает многих пользователей);

    2) в них можно показывать графические объекты, которые нельзя показывать в asciinema.

    (если вы смотрели гифку про использование Vim-плагина, то вы видели такие графические объекты).

    Я не знаю, обратилили ли вы внимание или нет, но гифки эти были созданы полностью автоматически, без участия человека, с помощью системы визуализации процесса работы в терминале (она будет опубликована в ближайшее время и пока что используется нами, мною и некоторыми другими разработчиками, только в тестовом режиме). То есть, никто на самом деле в терминале ничего не набирал и ничего не записывал. Так вот, эта система поддерживает ряд форматов вывода, GIF только один из которых; кроме того она поддерживает MP4, AVI, FLV, Asciinema и некоторые другие. Так что нам было бы несложно сгенерировать тот же вывод в Asciinema-формате (конечно же, графические элементы при этом пропадут).

     
     
  • 3.24, Аноним (22), 19:46, 08/07/2018 [^] [^^] [^^^] [ответить]  
  • +/
    Понятно, спасибо.

    >эта система поддерживает ряд форматов вывода, GIF только один из которых; кроме того она поддерживает MP4, AVI, FLV, Asciiname и некоторые другие

    Это круто!

    Правда, я не совсем понял, как именно это работает "без участия человека". То есть ей, грубо говоря, подается лог сессии терминала, и она на основании этого генерирует анимации печати и перемещения курсора - я уловил идею?

     
     
  • 4.25, igor_chubin (ok), 20:26, 08/07/2018 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Да, почти, только ей передаётся не лог сессии терминала потому что в том-то и и... текст свёрнут, показать
     
     
  • 5.26, Аноним (22), 20:54, 08/07/2018 [^] [^^] [^^^] [ответить]  
  • +/
    Да, прикольно! Мощная штука у вас получилась.

    >собственно единственно лучший формат это gifst

    ;)

    И спасибо за подробное объяснение, было интересно читать. (Немного расширить, чуть-чуть подредактировать - и можно смело выкладывать в качестве анонса\введения. Короче, ждем релиза!)

     
     
  • 6.27, igor_chubin (ok), 21:32, 08/07/2018 [^] [^^] [^^^] [ответить]  
  • +2 +/
    > И спасибо за подробное объяснение, было интересно читать. (Немного расширить, чуть-чуть
    > подредактировать - и можно смело выкладывать в качестве анонса\введения. Короче, ждем
    > релиза!)

    Немного многовато текста для анонса :)
    Спасибо! Скоро зарелизим

     

  • 1.30, Michael Shigorin (ok), 10:12, 09/07/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Авторство заподозрил с первых строк ;-)
     
     
  • 2.31, igor_chubin (ok), 00:17, 10/07/2018 [^] [^^] [^^^] [ответить]  
  • +2 +/
    И ты не ошибся :)

    Надеюсь, что сервис тебе понравился :)

     

  • 1.32, Алёша (?), 10:08, 10/07/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    весьма полезный сервис.
    хотелось бы еще подсказок из документаций по часто встречающимся серверам (демонам) и их конфигурациям - nginx, php.ini, httpd ну и так далее - все эти вещи есть онлайн.
    а то сейчас nginx/limit_req выдает какой-то малополезный вопрос-ответ (со stackoverflow походу), а по limit_req_zone вообще ничиго не выдает, тогда как мог бы выдавать соответствующий раздел с оф.сайта и примеры...
     
     
  • 2.39, igor_chubin (ok), 05:18, 15/07/2018 [^] [^^] [^^^] [ответить]  
  • +/
    Да, правда. Справедливое замечание. Мы постараемся это сделать

    (кстати nginx/limit_req_zone выдаёт ответ тоже, по-моему даже более-менее в тему, проверьте, пожалуйста, хотя официальная документация с примерами была бы лучше; и ещё, если вам ответ не нравится, то можно попробовать следующий добавив в конце /1, /2 и так далее)

     

  • 1.36, robot228 (?), 07:15, 13/07/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Для Sublme Text есть решение?
     
     
  • 2.40, igor_chubin (ok), 12:27, 16/07/2018 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Мы работаем над ним, но пока оно не готово к релизу.
    Пока что официально мы поддерживаем только Vim, Emacs и Visual Code.
    Плагин для Sublime сейчас разрабатывается, и скоро будет доступен.
    Основной репозиторий плагина:

    https://github.com/gauravk-in/cheat.sh-sublime-plugin

     
     
  • 3.41, mib (?), 19:59, 19/07/2018 [^] [^^] [^^^] [ответить]  
  • +/
    Вы крутые. Спасибо вам :)
     
     
  • 4.42, igor_chubin (ok), 01:31, 20/07/2018 [^] [^^] [^^^] [ответить]  
  • +/
    На здоровье!
     

  • 1.43, Techno1 (?), 16:11, 02/08/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Не увидел примера запроса к stackoverflow при помощи curl cht.sh/...
     
     
  • 2.44, igor_chubin (ok), 22:00, 02/08/2018 [^] [^^] [^^^] [ответить]  
  • +/
    Почти любой запрос по языкам программирования обрабатывается в том числе
    с помощью данных со StackOverflow.
    Если ответ со StackOverflow будет (с точки зрения системы) наилучшим, она вернёт его.
    В тексте ответа вы можете увидеть, откуда он взят
     

  • 1.47, Diomas (?), 16:20, 21/09/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    В MINGW терминале не обрабатываются эскейп-последовательности (или как это назывется):

    $ curl cht.sh/go/reverse+a+list
    /*
     * How do I reverse an array in Go?
     * 
     * Honestly this one is simple enough that I'd just write it out like
     * this:
     */

     
     
  • 2.48, igor_chubin (ok), 17:54, 21/09/2018 [^] [^^] [^^^] [ответить]  
  • +/
    > В MINGW терминале не обрабатываются эскейп-последовательности (или как это назывется):

    Да, это может быть.
    Если вы будете добавлять опцию T в конце запроса, их в ответе не будет

    curl cht.sh/go/reverse+a+list?T

    Конечно, это не очень удобно всё время добавлять опцию.
    Для этого вы можете установить клиент cht.sh (curl https://cht.sh/:cht.sh)
    или сделать шелловскую функцию, как например how_in (пример вот тут: https://twitter.com/igor_chubin )

     

  • 1.49, Michael (??), 14:06, 14/11/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Для git ещё модуль не помешает, хоть и не язык программирования
     
     
  • 2.50, igor_chubin (ok), 23:00, 14/11/2018 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Вообще git работает, но только нужно комментарии лучше шелловские
    и подсветку синтаксиса тоже. Сейчас сишная.

    curl cht.sh/git/отменить+последний+коммит?Q

     

  • 1.51, rvs2016 (ok), 23:01, 27/11/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    > Демонстрация возможностей плагина:
    > https://www.opennet.ru/opennews/pics_base/0_1530859160.gif

    А почему '...' является устаревшим, хотя я нго использую и интерпретатор меня за это не ругает?

     
     
  • 2.52, igor_chubin (ok), 12:44, 28/11/2018 [^] [^^] [^^^] [ответить]  
  • +/
    Есть очень много устаревших и нерекомендованных вещей в интерпретаторе, которые просто работают и никак интерпретатором не комментируются, просто исполняются.
    В первом приближении можно использовать shellcheck для статического анализа кода
    и обнаружения таких мест.

    Конкретно с '' проблема в том, что тут открывающая и закрывающая кавычка одинаковы,
    поэтому нельзя делать вложенные обращения. То есть, если вы сделаете: 'k1 'k2'' это будет восприматься не как $(k1 $(k2)) а как $(k1) k2 $(), что, конечно же, неправильно.

     
     
  • 3.53, rvs2016 (ok), 16:14, 28/11/2018 [^] [^^] [^^^] [ответить]  
  • +/
    > Конкретно с '' проблема в том, что тут открывающая и закрывающая кавычка
    > одинаковы, поэтому нельзя делать вложенные обращения.

    Да... с вложенными обращениями проблему тоже имел. Приходилось вместо вложения делать предварительные вычисления нужных значений, а затем подставлять их внутрь ''. Надо попробовать конструкцию $() - работает ли она в "моём любимом шелле" (zsh). Если работает, то можно и применять. Конструкцию-то такую я видел в разных скриптах, но всегда считал её новомодной или специфичной для отдельных шеллов, поэтому никогда не применял её у себя - ну типа пусть будет более топорно (а не модно), зато надёжнее и совместимее. :-)

     
     
  • 4.54, igor_chubin (ok), 16:44, 28/11/2018 [^] [^^] [^^^] [ответить]  
  • +/
    Конечно же работает

    А вообще я вам очень рекомендую shellcheck (и желательно подключить его к вашем любимому редактору через соответствующий плагин; например, если вы используете Vim — через syntastic).
    Вы будете писать тогда намного более качественный код + существенно расширите свои знания.
    shellcheck'у вы так же можете указать какой конкретно диалект вы сейчас используете,
    и вы будете всегда видеть, в каких шеллах будет работать ваш код, а в каких нет

     


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




    Спонсоры:
    Слёрм
    Inferno Solutions
    Hosting by Ihor
    Хостинг:

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