Гугл, который всегда с тобой


«Мозг, хорошо устроенный, стоит больше, чем мозг, хорошо наполненный»

(с) Мишель де Монтень

Статья о том, почему в Линуксе не нужны словари была для меня одной из самых полезных. Заинтересовавшись, скомплектовал небольшую подборку из текстовых справочников. Через некоторое время выяснилось, что набрать что-то типа grep 'ШУШПАН' dal.txt намного быстрее, чем лезть за результатами в интернет (да и попробуй найди все что можно получить по набору, такого, например, «заклинания» grep ' [^ ]*опа ' dal.txt -o | sort | uniq). Еще интереснее оказалось для меня то, что информации которая есть в (списком): энциклопедическом словаре, словаре Даля, толковых словарях Ушакова и Ожегова, Библии, англо-русском словаре Мюллера, орфографическом словаре и еще нескольких справочниках, хватает с головой — во всяком случае для начального поиска. При этом за счет того, что поиск идет по «чистой информации», за счет того, что искать можно в консоли без необходимости запускать браузер — все летает. При этом все работает даже в отсутствие интернета.

В данном случае качество оказывается важнее количества. Я бы сравнил это с книжной полкой. Городская библиотека намного больше, чем моя домашняя. Однако, чтобы получить что-то из библиотеки — даже, если она находится в двух шагах за углом, нужно выйти из дому. Нужно делать заказ у библиотекаря или искать книгу в каталогах. А дома — все свое, все под рукой, все уже на полках в нужном и знакомом порядке.

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

Аналогию с личной библиотекой можно продолжить. Во-первых, свою систему можно комплектовать теми книгами и справочниками, которые нужны, а не теми, что соизволит проиндексировать Гугл. Тут открывается огромный простор для фантазии, ограниченной только возможностями и знанием консоли — вплоть до ежемесячно закачки полной версии Википедии. Во-вторых, инструменты просты и надежны, как автомат Калашникова. И так же просчитаны теоретически и математически (где-то в сети мне попадался интереснейший экскурс в историю создания grep’а), как советская каска времен Великой отечественной.

Что использую я?

Кроме вышеперечисленных словарей у меня в папке ~/enc лежит Измайловский справочник по кораблям, CIA World Factbook (справочник ЦРУ по странам) и еще россыпь книг.

Чаще всего я использую поиск по англо-русскому словарю и по толковым словарям. Поэтому под них настроены шорткаты — в ~/bin сложены файлы:

mu:

#!/bin/bash
grep --color "$@" ~/enc/muller.txt

tolk:

#!/bin/bash

echo -e '\E[32;40mushak.txt'
tput sgr0
grep --color "$@" ~/enc/ushak.txt 
tput sgr0

echo -e '\E[32;40mojeg.txt'
tput sgr0
grep --color "$@" ~/enc/ojeg.txt

Первый ищет по словарю Мюллера, второй — по словарям Ожегова и Ушакова. Ключ --color указывает что искомый паттерн нужно подсвечивать (он у меня подсвечивается красным). echo со странными символами печатает название словаря зеленым цветом.

Пример:

vik@frakir:~$ mu sleuth

hunt out - hunt up Syn: comb, explore, ransack, scour, search,  seek,  sleuth,
sleuth 1. noun 1) собака-ищейка 2) coll. сыщик 2. v. 1) идти по следу  (тж.
sleuth-hound = sleuth 1.

Еще одна полезная хитрость — алиас:

alias gr='grep --color'

Он позволяет сократить набор в строке (два символа вместо двенадцати) и получать результаты сразу в раскрашенном виде.

Если контекст неясен — или поиск обрубился на самом инетересном месте — можно задать дополнительные параметры поиска для grep‘а, которые легко запоминаются: A — after, B — before, C — context.

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

  • -i позволяет искать без учета регистра,
  • -v «инвертирует» поиск — выбрасывая из него те результаты, которые соответствуют шаблону.
  • -oonly match — выводит сам результат поиска, а не всю строку. И так далее.
  • -R — искать рекурсивно — среди файлов и подпапок текущей папки. О рекурсивном поиске я уже писал, когда описывал свой каталогер.

Поиск можно задавать сразу в нескольких файлах или с использованием маски:

grep 'blabla' *.txt -R

(конечно, ключ -R можно было указывать впереди, но обычно я набираю все по ходу — и убедился, что так тоже можно)

На этот поиск хорошо накладываются остальные инструменты консоли. Плюс — навык поиска и пользования grep’ом который оттачивается на подобных штуках очень полезен и вне словарей. Искать можно и по БТФ (в частности по тегам), и по библиотеке, и по файлам каталогов дисков, и даже в архивах.

Я, кстати, до сих пор не решил — стоит ли выкачивать текстовую базу Википедии или нет? И, еще, когда-нибудь нужно будет собраться и посмотреть — есть ли «индексирующий греп» — что-то вроде гибрида grep и locate — желательно такое же простое и эффективное.

Реклама

11 Responses to Гугл, который всегда с тобой

  1. vjoiller:

    Like this :)

  2. Хм, имхо GoldenDict в связке с продукцией лингвы не менее удобен…

  3. GoldenDict объективно круче по интерфейсу (особенно с переводом на лету) и по количеству словарей. Сам им долго пользовался и очень доволен.

    С другой стороны grep гибче — возможности настройки ресурсов и поиска там безграничны (вот я не помню — можно ли в GD искать по регэкспам?), он нетребователен к ресурсам (можно работать хоть в консоли — все равно будет летать), сам grep как правило идет с системой, а поисковые словари и справочники легко тиражировать через какой-нибудь облачный сервис или систему контроля версий на другие машины. А GD на моем железе часто подтормаживал. В итоге мне стало лениво ставить GD и я перешел на grep.

  4. Из всего перечисленного — разве что кросс-платформенность. И котэ как маскот :) Во всем остальном пока не увидел особых преимуществ.

    Blazing fast и Better search — так и у меня grep не лазит по субдиректориям. Designed for code search — опять-таки я не только и не столько по сырцам ищу.

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

    Но спасибо за. Там есть несколько любопытных ссылок — так что вполне полезно.

  5. По теме поста: я использую для таких целей swish++, конкретно для поиска по текстам статей на английском. Минус решения: только английский оно и переваривает, зато это полноценный поисковик.

    Теперь не по теме: tengu911, я по поводу комментария на «Записках дебианщика». Собственно, я хотел написать пост про Pandoc, но материала у меня пока маловато, а тут такой знатный коммент.

    В общем, есть предложение написать пост про то, как вы перегоняете «markdown -> .odt -> .doc». Есть два пути: 1) вы пишете у меня гостевой пост и публикуете от своего имени. 2) вы пишете пост у себя, а я утащу части в свой пост, поставив на ваш пост ссылки. Второй вариант наименее энергозатратен.

    Был бы очень рад, если бы такой пост появился (неважно где), так как у меня бывают такие задачи и обычно это вынуждает пользоваться уродливым костылём по имени latex2rtf.
    Если интересно, пишите на
    mydebianblog@gmail.com

    С уважением, virens.

  6. Я вот пришел к использованию recoll — который грамотно организован, всеяден (как раз использует antiword сотоварищи) и вроде бы не имеет проблем с киррилицей.

    Но в посте описан немного другой коленкор. Здесь идет речь о намеренно суженном круге поиска. Чтобы можно было быстро и оперативно дотянуться до результата вместо копания в нескольких страницах ответов. Если мне нужно посмотреть толкование слова «шушпан», перевод «the day of reckoning» или проверить цитату из Библии — я уже знаю где искать. Меня скорее удивило, что корпус для подобных поисков получился не очень большой.

    Да в общем-то как мне кажется для большого поста материала не так уж и много — и основу я уже изложил в комментах. Сам файлик — примитивная автоматизация в баше http://pastebin.com/AqdSW3kE

    Главное — заранее сгенерить файл со стилями и подобрать хороший csl из закромов zotero.

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

    p.s. Вот хотел спросить — используете ли вы в Jabref фичу автонахождения файлов, которые называются так же как ключ в BibTex? Жутко удобно.

  7. p.p.s. Отдельное спасибо за блог. Начал читать то ли в 2007-ом то ли в 2008-ом и всегда вдохновлялся именно им :)

  8. @tengu911

    Да в общем-то как мне кажется для большого поста материала не так уж и много – и основу я уже изложил в комментах.

    Посту не обязательно быть длинным, главное — чтоб полезным был. Для себя, и, желательно, окружающих.

    Сам файлик – примитивная автоматизация в баше http://pastebin.com/AqdSW3kE
    Спасибо, уже утащил себе :-)

    Главное – заранее сгенерить файл со стилями и подобрать хороший csl из закромов zotero.
    Собственно, поэтому пост написать и стоит — вылезает много подводных камней, о которые биться каждый раз головой не хочется.

    У меня еще неделю или две будет очень горячий период – а после вполне могу написать пост – и закинуть вам ссылку :)
    Будет здорово. Да, комментарии к посту про Маркдаун открыты (как и на все другие) — можно отписываться, если что вспомнится.

    используете ли вы в Jabref фичу автонахождения файлов, которые называются так же как ключ в BibTex
    У меня файлы статей называется иначе, чем ключи в бибтехе.

    Да, забыл поблагодарить за recoll — я про него не знал. Нашёл давно решение со swish++ и пользуюсь. А тут, оказывается, оно ещё и кириллицу жуёт.

    Отдельное спасибо за блог.
    Пожалуйста. Мне всегда нравилось писать тексты и ковыряться в линуксе. Блог — возможность это совместить :-)

  9. […] держать txt-файлы, поскольку являюсь сторонником широкого использования grep и find. Книги в fb2 и epub, во-первых, не погрепаешь, во-вторых […]

Добавить комментарий

Заполните поля или щелкните по значку, чтобы оставить свой комментарий:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход / Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход / Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход / Изменить )

Google+ photo

Для комментария используется ваша учётная запись Google+. Выход / Изменить )

Connecting to %s

%d такие блоггеры, как: