Скрипт быстрого поиска в интернете для Ubuntu

Данную статью прислал один из читателей моего блога - Александр с ником ALPom.
За что ему огромное спасибо.

Интернет обладает огромным запасом информации.
В нем можно найти практически все что угодно.

Как люди ищут нужную им информацию? 

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


Для начала устанавливаем нужные для работы скрипта программы, открываем терминал и вводим следующую команду: sudo apt-get install zenity xclip
Потом создаем (для примера - в домашней папке, но местоположение может быть любым) файл скрипта, написав в терминале: gedit ~/searche
Файл создаться и откроется в редакторе Gedit. Вставляем в файл следующий текст:
#!/bin/bash
# Ищет введенный или выделенный текст в интернете
# Должны быть установлены zenity и xclip!!!!!!

out="/tmp/searche.$$"

zenity --width=350 --title  "Введите текст" --text "Введите текст для поиска в интернете" --entry --entry-text="$(xclip -o)" > "$out"

if [ $? -eq 0 -a "`cat "$out"`" != "" ]
then #echo "Искать: `cat "$out"`"

# В следующей строке идет перечисление названий поисковиков. Если оно состоит из двух и более слов, то должно быть заключено в кавычки:
site=$(zenity --title Поисковик --list --text "Выберите поисковик" --hide-header --column="" Яндекс Google "Wikipedia Ru" КиноПоиск Vidal)
# Чтобы удалить ненужный поисковик, удаляем его название в предыдущей строке.
# А чтобы добавить, добавляем название и соответствующую команду ниже под оператором case.

if [ $? -eq 0 -a "`echo $site`" != "" ]
then
case "$site" in
# А в следующей строке перечисляются названия поисковиков и команды поиска в формате
#   <название поисковика> ) <команда поиска>;;   
    "Wikipedia Ru" )    url="http://ru.wikipedia.org/wiki/`cat "$out"`";;
    Яндекс)    url="http://www.yandex.ru/yandsearch?text=`cat "$out"`";;
    Google)    url="http://www.google.com/search?q=`cat "$out"`";;
    Vidal)     url="http://www.vidal.ru/poisk_preparatov/result.htm?search=`cat "$out" | sed 's/а/%E0/g;s/б/%E1/g;s/в/%E2/g;s/г/%E3/g;s/д/%E4/g;s/е/%E5/g;s/ё/%B8/g;s/ж/%E6/g;s/з/%E7/g;s/и/%E8/g;s/й/%E9/g;s/к/%EA/g;s/л/%EB/g;s/м/%EC/g;s/н/%ED/g;s/о/%EE/g;s/п/%EF/g;s/р/%F0/g;s/с/%F1/g;s/т/%F2/g;s/у/%F3/g;s/ф/%F4/g;s/х/%F5/g;s/ц/%F6/g;s/ч/%F7/g;s/ш/%F8/g;s/щ/%F9/g;s/ъ/%FA/g;s/ы/%FB/g;s/ь/%FC/g;s/э/%FD/g;s/ю/%FE/g;s/я/%FF/g;s/А/%E0/g;s/Б/%E1/g;s/В/%E2/g;s/Г/%E3/g;s/Д/%E4/g;s/Е/%E5/g;s/Ё/%B8/g;s/Ж/%E6/g;s/З/%E7/g;s/И/%E8/g;s/Й/%E9/g;s/К/%EA/g;s/Л/%EB/g;s/М/%EC/g;s/Н/%ED/g;s/О/%EE/g;s/П/%EF/g;s/Р/%F0/g;s/С/%F1/g;s/Т/%F2/g;s/У/%F3/g;s/Ф/%F4/g;s/Х/%F5/g;s/Ц/%F6/g;s/Ч/%F7/g;s/Ш/%F8/g;s/Щ/%F9/g;s/Ъ/%FA/g;s/Ы/%FB/g;s/Ь/%FC/g;s/Э/%FD/g;s/Ю/%FE/g;s/Я/%FF/g'`&start=any&searchtype=tnmn";;
    КиноПоиск)  url="http://www.kinopoisk.ru/index.php?first=no&what=&kp_query=`cat "$out" | sed 's/а/%E0/g;s/б/%E1/g;s/в/%E2/g;s/г/%E3/g;s/д/%E4/g;s/е/%E5/g;s/ё/%B8/g;s/ж/%E6/g;s/з/%E7/g;s/и/%E8/g;s/й/%E9/g;s/к/%EA/g;s/л/%EB/g;s/м/%EC/g;s/н/%ED/g;s/о/%EE/g;s/п/%EF/g;s/р/%F0/g;s/с/%F1/g;s/т/%F2/g;s/у/%F3/g;s/ф/%F4/g;s/х/%F5/g;s/ц/%F6/g;s/ч/%F7/g;s/ш/%F8/g;s/щ/%F9/g;s/ъ/%FA/g;s/ы/%FB/g;s/ь/%FC/g;s/э/%FD/g;s/ю/%FE/g;s/я/%FF/g;s/А/%E0/g;s/Б/%E1/g;s/В/%E2/g;s/Г/%E3/g;s/Д/%E4/g;s/Е/%E5/g;s/Ё/%B8/g;s/Ж/%E6/g;s/З/%E7/g;s/И/%E8/g;s/Й/%E9/g;s/К/%EA/g;s/Л/%EB/g;s/М/%EC/g;s/Н/%ED/g;s/О/%EE/g;s/П/%EF/g;s/Р/%F0/g;s/С/%F1/g;s/Т/%F2/g;s/У/%F3/g;s/Ф/%F4/g;s/Х/%F5/g;s/Ц/%F6/g;s/Ч/%F7/g;s/Ш/%F8/g;s/Щ/%F9/g;s/Ъ/%FA/g;s/Ы/%FB/g;s/Ь/%FC/g;s/Э/%FD/g;s/Ю/%FE/g;s/Я/%FF/g'`";;
    *)        url="http://www.yandex.ru/yandsearch?text=`cat "$out"`";;
esac

# Чтобы изменить браузер, в котором будет открываться результаты поиска, измените команду в строке ниже.
firefox -new-tab "$url" &

fi
fi

rm "$out"
У вас должно получиться так (для увеличения щелкните по картинке):


Сохраняем файл и закрываем редактор.

Сейчас нам надо сделать скрипт исполняемым, чтобы Ubuntu могла запустить его как программу. Для этого выполняем в терминале: chmod +x ~/searche

Проверяем, как работает наш скрипт.
Выполняем в терминале: ~/searche
Должно открыться такое окно:


Можно ввести нужный текст и нажать Enter или на кнопку ОК.

Чтобы закрыть окошко, можно нажать Esc или на кнопку Отмена.

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

Допустим, мы ввели текст для поиска и нажали ОК. Откроется следующее окно:


Здесь мы кнопками вверх-вниз или мышкой выбираем, где будем искать. Потом нажимаем кнопку ОК или Enter на клавиатуре.

Результаты поиска открываются в браузере. У меня это Firefox, но можно поставить любой, Chromium, например.

Теперь поговорим о том, как изменить этот скрипт. 

Ведь тем и хорош linux, что можно переделать почти все так, как нравиться вам.
Поисковик описывается в этом скрипте двумя параметрами, назовем их условновно "Название поисковика" и "Команда поиска".

Где они написаны, обозначено в самом скрипте в комментариях.

Допустим вам не нравиться перечень поисковиков.
Вам не нужен, например, поиск по фармакологическому справочнику Vidal.
Открываем скрипт gedit'ом.
Находим строку (это список названий всех поисковиков):
site=$(zenity --title Поисковик --list --text "Выберите поисковик" --hide-header --column="" Яндекс Google "Wikipedia Ru" КиноПоиск Vidal)
Удаляем Vidal.

Затем находим строку (это команда поиска):

Vidal)     url="http://www.vidal.ru/poisk_preparatov/result.htm?search=`cat "$out" | sed 's/а/%E0/g;s/б/%E1/g;s/в/%E2/g;s/г/%E3/g;s/д/%E4/g;s/е/%E5/g;s/ё/%B8/g;s/ж/%E6/g;s/з/%E7/g;s/и/%E8/g;s/й/%E9/g;s/к/%EA/g;s/л/%EB/g;s/м/%EC/g;s/н/%ED/g;s/о/%EE/g;s/п/%EF/g;s/р/%F0/g;s/с/%F1/g;s/т/%F2/g;s/у/%F3/g;s/ф/%F4/g;s/х/%F5/g;s/ц/%F6/g;s/ч/%F7/g;s/ш/%F8/g;s/щ/%F9/g;s/ъ/%FA/g;s/ы/%FB/g;s/ь/%FC/g;s/э/%FD/g;s/ю/%FE/g;s/я/%FF/g;s/А/%E0/g;s/Б/%E1/g;s/В/%E2/g;s/Г/%E3/g;s/Д/%E4/g;s/Е/%E5/g;s/Ё/%B8/g;s/Ж/%E6/g;s/З/%E7/g;s/И/%E8/g;s/Й/%E9/g;s/К/%EA/g;s/Л/%EB/g;s/М/%EC/g;s/Н/%ED/g;s/О/%EE/g;s/П/%EF/g;s/Р/%F0/g;s/С/%F1/g;s/Т/%F2/g;s/У/%F3/g;s/Ф/%F4/g;s/Х/%F5/g;s/Ц/%F6/g;s/Ч/%F7/g;s/Ш/%F8/g;s/Щ/%F9/g;s/Ъ/%FA/g;s/Ы/%FB/g;s/Ь/%FC/g;s/Э/%FD/g;s/Ю/%FE/g;s/Я/%FF/g'`&start=any&searchtype=tnmn";;
Удаляем ее. Сохраняем файл.
Все, больше этого поисковика не будет в списке.

Как добавить свой поисковик?

Допустим, вам нужен поиск по Яндекс.Картинкам.
Заходим на сайт Яндекс.Картинок и вводим произвольный текст для поиска, например, linuxrussia. Затем смотрим на адресную строку:


Параметр text=linuxrussia передает на сервер искомый текст. Другие параметры (&uinfo=sw-1352-sh-684-fw-1127-fh-478-pd-1) попробуем пока просто отбросить.
Название поисковика может быть любым, его выбираем мы. Возьмем "Яндекс Картинки". В кавычках, потому что два слова. Одно слово можно без кавычек.
Команда поиска будет:
"Яндекс Картинки" )    url="http://images.yandex.ru/yandsearch?text=`cat "$out"`";;
То есть в начале название поисковика, а в кавычках после url - написанное в адресной строке, где мы заменили текст для поиска на команду `cat "$out"` , которая вставляет наш текст.  
Закрывающаяся скобка после названия поисковика и двойная точка с запятой в конце обязательны.

Открываем скрипт gedit'ом и добавляем название поисковика в список и команду поиска в нужные места.
В итоге получается так:
#!/bin/bash
# Ищет введенный или выделенный текст в интернете
# Должны быть установлены zenity и xclip!!!!!!

out="/tmp/searche.$$"

zenity --width=350 --title  "Введите текст" --text "Введите текст для поиска в интернете" --entry --entry-text="$(xclip -o)" > "$out"

if [ $? -eq 0 -a "`cat "$out"`" != "" ]
then #echo "Искать: `cat "$out"`"

# В следующей строке идет перечисление названий поисковиков. Если оно состоит из двух и более слов, то должно быть заключено в кавычки:
site=$(zenity --title Поисковик --list --text "Выберите поисковик" --hide-header --column="" Яндекс Google "Wikipedia Ru" КиноПоиск Vidal "Яндекс Картинки")
# Чтобы удалить ненужный поисковик, удаляем его название в предыдущей строке.
# А чтобы добавить, добавляем название и соответствующую команду ниже под оператором case.

if [ $? -eq 0 -a "`echo $site`" != "" ]
then
case "$site" in
# А в следующей строке перечисляются названия поисковиков и команды поиска в формате
#   <название поисковика> ) <команда поиска>;;   
    "Яндекс Картинки" )    url="http://images.yandex.ru/yandsearch?text=`cat "$out"`";;
    "Wikipedia Ru" )    url="http://ru.wikipedia.org/wiki/`cat "$out"`";;
    Яндекс)    url="http://www.yandex.ru/yandsearch?text=`cat "$out"`";;
    Google)    url="http://www.google.com/search?q=`cat "$out"`";;
    Vidal)     url="http://www.vidal.ru/poisk_preparatov/result.htm?search=`cat "$out" | sed 's/а/%E0/g;s/б/%E1/g;s/в/%E2/g;s/г/%E3/g;s/д/%E4/g;s/е/%E5/g;s/ё/%B8/g;s/ж/%E6/g;s/з/%E7/g;s/и/%E8/g;s/й/%E9/g;s/к/%EA/g;s/л/%EB/g;s/м/%EC/g;s/н/%ED/g;s/о/%EE/g;s/п/%EF/g;s/р/%F0/g;s/с/%F1/g;s/т/%F2/g;s/у/%F3/g;s/ф/%F4/g;s/х/%F5/g;s/ц/%F6/g;s/ч/%F7/g;s/ш/%F8/g;s/щ/%F9/g;s/ъ/%FA/g;s/ы/%FB/g;s/ь/%FC/g;s/э/%FD/g;s/ю/%FE/g;s/я/%FF/g;s/А/%E0/g;s/Б/%E1/g;s/В/%E2/g;s/Г/%E3/g;s/Д/%E4/g;s/Е/%E5/g;s/Ё/%B8/g;s/Ж/%E6/g;s/З/%E7/g;s/И/%E8/g;s/Й/%E9/g;s/К/%EA/g;s/Л/%EB/g;s/М/%EC/g;s/Н/%ED/g;s/О/%EE/g;s/П/%EF/g;s/Р/%F0/g;s/С/%F1/g;s/Т/%F2/g;s/У/%F3/g;s/Ф/%F4/g;s/Х/%F5/g;s/Ц/%F6/g;s/Ч/%F7/g;s/Ш/%F8/g;s/Щ/%F9/g;s/Ъ/%FA/g;s/Ы/%FB/g;s/Ь/%FC/g;s/Э/%FD/g;s/Ю/%FE/g;s/Я/%FF/g'`&start=any&searchtype=tnmn";;
    КиноПоиск)  url="http://www.kinopoisk.ru/index.php?first=no&what=&kp_query=`cat "$out" | sed 's/а/%E0/g;s/б/%E1/g;s/в/%E2/g;s/г/%E3/g;s/д/%E4/g;s/е/%E5/g;s/ё/%B8/g;s/ж/%E6/g;s/з/%E7/g;s/и/%E8/g;s/й/%E9/g;s/к/%EA/g;s/л/%EB/g;s/м/%EC/g;s/н/%ED/g;s/о/%EE/g;s/п/%EF/g;s/р/%F0/g;s/с/%F1/g;s/т/%F2/g;s/у/%F3/g;s/ф/%F4/g;s/х/%F5/g;s/ц/%F6/g;s/ч/%F7/g;s/ш/%F8/g;s/щ/%F9/g;s/ъ/%FA/g;s/ы/%FB/g;s/ь/%FC/g;s/э/%FD/g;s/ю/%FE/g;s/я/%FF/g;s/А/%E0/g;s/Б/%E1/g;s/В/%E2/g;s/Г/%E3/g;s/Д/%E4/g;s/Е/%E5/g;s/Ё/%B8/g;s/Ж/%E6/g;s/З/%E7/g;s/И/%E8/g;s/Й/%E9/g;s/К/%EA/g;s/Л/%EB/g;s/М/%EC/g;s/Н/%ED/g;s/О/%EE/g;s/П/%EF/g;s/Р/%F0/g;s/С/%F1/g;s/Т/%F2/g;s/У/%F3/g;s/Ф/%F4/g;s/Х/%F5/g;s/Ц/%F6/g;s/Ч/%F7/g;s/Ш/%F8/g;s/Щ/%F9/g;s/Ъ/%FA/g;s/Ы/%FB/g;s/Ь/%FC/g;s/Э/%FD/g;s/Ю/%FE/g;s/Я/%FF/g'`";;
    *)        url="http://www.yandex.ru/yandsearch?text=`cat "$out"`";;
esac

# Чтобы изменить браузер, в котором будет открываться результаты поиска, измените команду в строке ниже.
firefox -new-tab "$url" &

fi
fi

rm "$out"
Сохраняем файл. Запускаем - все работает!

Таким образом можно составить необходимый именно вам список ресурсов для поиска информации, а запуск скрипта повесить на сочетание клавиш, например, Alt+V, как у меня. Сам процесс задания таких "горячих клавиш" выходит за рамки данной статьи, можно использовать стандартный для Unity Параметры системы - Клавиатура - Комбинации клавиш:

Если данная команда не сработает, то пропишите полностью путь до скрипта в поле команда: /home/имя_пользователя/searche

И после добавления нажимаем по строчке справа для ввода нужной сочетании клавиш.

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

Сложновато получилось, конечно, но, надеюсь, понятно объяснил.

Возникшие вопросы можете задавать в коментариях, чем смогу - помогу. Приветствуются коментарии по поводу кода скрипта, т.к. я знаю, что он не идеален.

Поделиться:

Если у Вас возникли вопросы.

Приглашаю задавать их на сервисе вопросов и ответов: Ask LinuxRussia.com.
Там Ваши вопросы не потеряются и Вы быстрее получите ответ, в отличие от комментариев.

14 коммент. :

  1. "Открывают браузер, заходят на сайт поисковика, Яндекс, например, вводят ключевые слова и нажимают кнопку Найти."
    Открываю браузер, вбиваю в адресную строку интересующую меня информацию, найти.

    ОтветитьУдалить
    Ответы
    1. Не все пользуются Chrom'ом, это раз, хотя браузер хороший. Да, в хроме для поиска в адресной строке можно задавать свои поисковые системы. Но поиск таким образом на сайтах Vidal и КиноПоиск не работает, т.к. эти сайты используют нестандартную кодировку для отправки искомого текста на сервер. Мой скрипт это обходит, пришлось делать громозкий и длинный ручной перевод русского текста в нужную кодировку с помощью sed, но это работает. А в остальном вы правы.

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

      Удалить
    3. Ну я допустим для серфинга использую исключительно фаерфокс.

      Удалить
    4. расширение Omnibar делает адресную строку в лисе строкой поиска, например

      Удалить
    5. я плюс скрипта увидел в том, что выделил текст где угодно, нажал сочетание клавиш и у тебя уже ищется эта строчка в гугле (например).

      Удалить
  2. классно, большое спасибо... Вот только есть вопрос с которым сам разобраться не могу. Я отредактировал скрипт, чтобы у меня был поиск только на googl. Как сделать так, чтобы после ввода текста, сразу начался поиск, и не вылазило окно с выбором поисковиков (у меня вылазит окно с выбором, хотя там только гугл). Спасибо еще раз.

    ОтветитьУдалить
    Ответы
    1. Надо так:
      #!/bin/bash
      # Ищет введенный или выделенный текст в интернете
      # Должны быть установлены zenity и xclip!!!!!!
      out="/tmp/searche.$$"
      zenity --width=350 --title "Введите текст" --text "Введите текст для поиска в интернете" --entry --entry-text="$(xclip -o)" > "$out"
      if [ $? -eq 0 -a "`cat "$out"`" != "" ]
      then
      url="http://www.google.com/search?q=`cat "$out"`"
      # Чтобы изменить браузер, в котором будет открываться результаты поиска, измените команду в строке ниже.
      firefox -new-tab "$url" &
      fi
      rm "$out"

      Удалить
    2. Т.е. это все содержимое скрипта. Выкинули не нужные в данном случае части.

      Удалить
    3. Вау, работает! Спасибо огромное, друг.

      Удалить
  3. Edward, не могли бы вы написать статью об автоматическом изменении режима работы процессора(ondemand, powersave etc.)?
    И еще один момент, почему то RSS-виджет Яндекса не хочет воспринимать вашу ленту, новости показывает, но не обновляет. Хотя, проблема скорее в виджете, а не в feedburner...

    ОтветитьУдалить
  4. все основанные на хромиум (яндекс браузер, гугл хром, и тд...) + опера + лиса + сафари, у всех поиск из адресной без костылей. но скриптик полезный. забрал себе ;)

    ОтветитьУдалить
  5. Этот комментарий был удален автором.

    ОтветитьУдалить
  6. подобный скрипт только на python если кто может помочь в доработке прошу сюда http://kote.neocities.org/ спасибо за статью автору, сподвигло на учебу)))

    ОтветитьУдалить