среда, 18 февраля 2009 г.

Как бибикнуть из консоли

Несмотря на все прелести GUI, для меня многие вещи проще сделать из консоли. Например, чтобы установить какую-то программу, намного проще написать "apt-get install программу", чем запускать Synaptic. Вот только свёрнутая консоль никак не сообщает мне, что запущенная команда уже выполнилась.

Очевидно решение этой проблемы - выполнить после основной команды вторую, производящую какой-либо звук. Например вот так:


$ sudo apt-get install <программу> ; <бибикнуть>


Вот только какую такую команду запустить, чтоб бибикнуть?

Первый способ, который я узнал, был выводом специального неотображаемого символа с кодом 17:


$ echo -e "\a"


Это, пожалуй, самый особенный из неотображаемых символов. Он не просто неотображаемый, а воспроизводимый с помощью короткого звука. Введен он специально для того, чтобы можно было бибикать в консоли. И по сей день его вывод воспроизводит звук. Но только в консоли. Текстовый редактор вряд ли будет бибикать. :) Что нам, в принципе, и не нужно. Да и не любой эмулятор терминала издаст звук. У меня из эмуляторов дудел только konsole.

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

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


$ play "/home/raa/sounds/грозный_клич_тарзана.wav"


Естественно, для этого должен быть установлен play. По крайней мере в репозиториях он есть, а может уже и на вашем компьютере.

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


$ beep


Казалось бы, что может быть проще? И почему я сразу не додумался? Додумался, вот только получил в ответ "команда не найдена" и расстроился. Если Вы тоже расстроились, то спешу Вас обрадовать. Она все-таки есть! :)


$ sudo apt-get install beep


Бип-бип ура!

12 комментариев:

  1. У меня, к сожалению, echo -e "\17" выводит \17 и не бикает =(

    ОтветитьУдалить
  2. А у меня даже полный пост не кажет :(

    Название заметки - огонь!

    ОтветитьУдалить
  3. У меня тоже echo -e "\17" не работает. И echo -e "\017" тоже.

    ОтветитьУдалить
  4. Если 'echo -e "\17"' выводит '\17', попробуйте написать вместо одной обратной косой две. Вероятно, косую съедает шелл еще до отправки в echo.

    Dr.AKULAvich, на счет названия заметки - спасибо, старался :) А вот остальное не понял :(

    ОтветитьУдалить
  5. Дело в том, что несколько раз получал страницу без текста заметки. Смотрел и в опере, и в огнелисе. Примерно на 6 итерации удалось таки увидеть весь текст. Не знаю, чем это обусловлено.

    echo все равно не звучит.

    ОтветитьУдалить
  6. Вероятно не показывалось, потому что не все стили подгрузило. Спасибо, что сообщили. Нужно будет сделать как-то понадежнее.

    Оказывается, echo не понимает "\17". Это особенность эмулятора терминала konsole (КДЕшный). Универсальным способом будет написать 'echo -e "\a"'. Однако, не любой эмулятор терминала проиграет звук. У меня бибикает только в konsole и в текстовом сеансе.

    ОтветитьУдалить
  7. Кстати, konsole вроде умеет бипать на завершение любой программы, запущенной в ней.

    ОтветитьУдалить
  8. Спасибо!

    Действительно очень интересная возможность. Контекстное меню вкладки имеет пункты "Монитор активности" и "Монитора простоя". А в настройках уведомлений можно определить, как эти события будут сигнализироваться.

    Пожалуй, это даже удобнее, чем beep :-) Ведь не нужно даже приостанавливать выполнение команды, чтобы включить сигнал об окончании.

    ОтветитьУдалить
  9. echo -e "\a" заработало в гномовской консоли. Но нужно в настройках включать "Подавать гудок".

    ОтветитьУдалить
  10. It's very straightforward to find out any topic on net as compared to books, as I found this post at this web site.

    Here is my homepage basketball wives earrings 2012

    ОтветитьУдалить
  11. Дополняю, для аналогового звука:
    paplay
    pacat

    А ещё кто подскажет консольные пищалки?
    Мне мало, честно ;)

    ОтветитьУдалить
  12. beep- первое о чем я додумался
    но не знаю почему ни он ни echo не пищат

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