Zainstalowałem SVOX pico2wave i stworzyłem skrypt. Teraz kiedy wejdę:
speech "Hello world"
Komputerowy mechanizm zamiany tekstu na głos mówi głośno „Witaj świecie”. Ponadto używam w .bashrc
zmiennej PROMPT_COMMAND
zdefiniowanej jako:
PROMPT_COMMAND="speech 'Command executed.'"
Tak więc ładny mechanizm zamiany tekstu na głos obwieszcza mi głośno, że polecenie zostało wykonane, zanim zwróci monit w terminalu.
Jednak po pewnym czasie staje się to nudne i pomyślałem, że fajnie byłoby zakończyć każde polecenie w terminalu, gdy komputer wypowiadał inną linię tekstu (pomyśl o autopilocie Starship Enterprise).
Więc stworzyłem w .bashrc zmienną tablicową z różnymi komunikatami:
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."
Chciałbym, aby za każdym razem, gdy uruchamiam polecenie w terminalu, zmienna, PROMPT_COMMAND
która ma być aktualizowana i odczytuje inną losową linię w tablicy.
Przypuszczam, że potrzebuję pętli, ale nie wiedziałem, jak to zrobić.
Byłbym bardzo wdzięczny za wszelką pomoc. Dziękuję Ci.
źródło
-l=de-DE
język lokalny, np-l=en-US
.speech
plik wykonywalny? Czy to jest aliasespeak
?Odpowiedzi:
Utwórz skrypt i zapisz go gdzieś, w którym znajdują się twoje linie i logika, aby wybrać losową linię z tablicy i wywołać
speech
polecenie w tym wierszu:Następnie w swoim
.bashrc
lub.profile
ustawPROMPT_COMMAND
:Wystarczy wymienić
speech
sięecho
dostać messge zamiast głosu.źródło
${array[$RANDOM % ${#array[@]}]}
być w podwójnych cudzysłowach?set -x
aby zobaczyć, o czym mówię :)Później samouczek edycji:
Dzięki powyższej odpowiedzi Ravexiny teraz problem został rozwiązany, a rozwiązanie działa fantastycznie. Podam poniżej instrukcje krok po kroku, aby inne osoby zainteresowane sprawiły, że będzie działać w Ubuntu 18.04
1. Zainstaluj pakiet pico2wave SVOX:
2. Utwórz skrypt mowy
i umieść tę zawartość w środku, wstawiając właściwego użytkownika na ścieżkę:
Zapisz i wyjdź.
3. Utwórz skrypt shell_speech.sh, jak wskazano powyżej Ravexina:
Zapisz i wyjdź.
4. Ustaw skrypty w postaci wykonywalnej i dodaj ich katalog do PATH, aby można je było wywoływać z dowolnego miejsca:
5. Zmodyfikuj .bashrc
dodaj następujący wiersz:
Zapisz i zamknij
Uwaga: możesz dodać tyle nowych wierszy, ile chcesz w tablicy w
~/scripts/bin/shell_speech
źródło
PATH
, nie muszą zawieraćbash
w twojejPROMPT_COMMAND
i chciałbym używać apostrofów w przypadku dodawania innych rzeczy, które później będą musiały mieć wykonanie odroczony:PROMPT_COMMAND='shell_speech'
/bin/bash
zamiast prostegobash
... (dobra praktyka na wypadek, gdyby ktoś wrzucił ci kolejną wstrząs przed/bin
...). Powinienem nawet zasugerować ci tymczasowy plik tymczasowy w/tmp
katalogu zamiasttest.wav
w twoim domu ... ps> daj mu szczęście .bash
jest sposobem na uzyskanie więcej. Linki, skrypty, uprawnienia do zapisu w otwartych katalogach, udostępnionych ... Co więcej - możesz tego przegapić - skrypty mogą przetrwać do pierwszego celu lub właściciela ... a Ty (lub ktoś inny) możesz z nich skorzystać po upływie wystarczająco długiego czasu nie pamiętasz wszystkich poleceń zapisanych w środku (robimy to w tym celu), w różnych warunkach. Umieszczenie\bin\bash
z wyraźną ścieżką jest dobrą praktyką. Aby tego uniknąć ... ryzyko.