Я установил SVOX pico2wave и создал скрипт. Теперь, когда я вхожу:
speech "Hello world"
Компьютерная система преобразования текста в голос произносит вслух «Привет, мир». Кроме того, я использую в .bashrc
переменной, PROMPT_COMMAND
определенной как:
PROMPT_COMMAND="speech 'Command executed.'"
Таким образом, приятный механизм преобразования текста в голос объявляет, что команда выполнена перед возвратом приглашения в терминале.
Однако через некоторое время это становится скучным, и я подумал, что было бы действительно здорово завершить каждую команду в терминале, когда компьютер произносил другую строку текста (подумайте об автопилоте Starship Enterprise).
Поэтому я создал в .bashrc переменную массива с разными сообщениями:
array[0]="Shields at 90%"
array[1]="Engaging proton overdrive"
array[2]="Autopilot disengaged"
array[3]="Targetting solution available"
array[4]="Alert. Incoming missile."
array[5]="Deploying countermeasures."
array[6]="Firing torpedoes."
array[7]="Engaging auto-cannon."
array[8]="Severe damage on deck 17. Sealing off."
array[9]="Deploying repair droids to deck 17."
Я хотел бы, чтобы каждый раз, когда я запускаю команду в терминале, переменная PROMPT_COMMAND
обновлялась и читала другую случайную строку в массиве.
Я предполагаю, что мне нужна петля, но я не знал, как это сделать.
Буду очень признателен за любую помощь. Спасибо.
источник
-l=de-DE
свой местный язык, например-l=en-US
.speech
исполняемый файл? Это псевдоним дляespeak
?Ответы:
Создайте скрипт и сохраните его где-нибудь, который содержит ваши строки и логику для выбора случайной строки из вашего массива и вызова
speech
команды в этой строке:Тогда в вашем
.bashrc
или.profile
набореPROMPT_COMMAND
:Просто замените
speech
с ,echo
чтобы получить messge вместо голоса.источник
${array[$RANDOM % ${#array[@]}]}
быть в двойных кавычках?set -x
чтобы увидеть, о чем я говорю :)Позже Редактировать Учебник:
Благодаря ответу Равексины выше, теперь проблема решена, и решение работает фантастически. Ниже я приведу пошаговые инструкции для других людей, заинтересованных в его работе в Ubuntu 18.04.
1. Установите пакет SVOX pico2wave:
2. Создать речевой скрипт
и поместите этот контент внутрь, вставив правильного пользователя в путь:
Сохранить и выйти.
3. Создайте скрипт shell_speech.sh, как указано выше в Ravexina:
Сохранить и выйти.
4. Сделайте скрипты исполняемыми и добавьте их каталог в PATH, чтобы их можно было вызывать откуда угодно:
5. Изменить .bashrc
добавьте следующую строку:
сохранить и закрыть
Примечание: вы можете добавить столько новых строк в массив, сколько хотите
~/scripts/bin/shell_speech
источник
PATH
, вам не нужно включатьbash
в вашемPROMPT_COMMAND
и я хотел бы использовать одинарные кавычки в случае , если вы добавите другие вещи позже , что нужно будет иметь отложенное выполнение:PROMPT_COMMAND='shell_speech'
/bin/bash
вместо простогоbash
... (хорошая практика на тот случай, если кто-то вставит еще один удар на вашем пути раньше/bin
...). Я должен даже предложить вам временный случайный файл в/tmp
каталоге вместо того, чтобыtest.wav
в вашем доме ... ps> взглянуть на удачу .bash
это способ получить больше. Ссылки, сценарии, разрешение на запись в открытых каталогах, общих папках ... Более того - вы можете пропустить это - сценарии могут дожить до своей первой цели или владельца ... и вы (или кто-то еще) можете использовать их через достаточно времени, чтобы Вы не помните все команды, написанные внутри (мы делаем для этого), при разных условиях. Говоря\bin\bash
с явным путем является хорошей практикой. Чтобы избежать этого ... риск.