用不同的消息或声音自动结束终端中的每个命令

用不同的消息或声音自动结束终端中的每个命令

我安装了SVOX pico2wave并创建了一个脚本。现在当我输入:

speech "Hello world"

计算机文本转语音引擎大声说“Hello world”。此外,我使用.bashrc变量PROMPT_COMMAND定义如下:

PROMPT_COMMAND="speech 'Command executed.'"

因此,优秀的文本转语音引擎会在终端返回提示之前大声宣布命令已执行。

然而,一段时间后,这变得无聊了,我认为在终端中用计算机说一句话来结束每个命令会很酷。不同的一行文字(想想企业号星舰的自动驾驶仪)。

因此我在 .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并读取不同的数组中的随机行。

我认为我需要一个循环,但我不知道如何制作它。

我将非常感激您的帮助。谢谢。

答案1

创建一个脚本并将其保存在某个地方,其中包含您的行和从数组中随机选择一个行并speech在该行上调用命令的逻辑:

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."

line=${array[$RANDOM % ${#array[@]}]}
speech "$line"

然后在您的.bashrc.profile集合中PROMPT_COMMAND

PROMPT_COMMAND="bash $HOME/PATH/TO/myscript.sh"

只需将speech其替换echo为即可获取消息而不是语音。

答案2

稍后编辑教程:

感谢 Ravexina 的上述回答,现在问题已经解决,解决方案非常有效。我将在下面提供分步说明,供其他有兴趣在 Ubuntu 18.04 中使用它的人使用

1.安装 SVOX pico2wave 包:

sudo apt-get install libttspico0 libttspico-utils libttspico-data libsox-fmt-mp3

2. 创建演讲稿

cd ~/scripts
gedit speech

并将此内容放入里面,在路径中插入正确的用户:

#!/bin/bash
pico2wave -l=en-US -w=/home/user/test.wav "$1"
aplay -q ~/test.wav
rm /home/user/test.wav

保存并退出。

3. 按照上面的 Ravexina 所示创建 shell_speech.sh 脚本:

gedit shell_speech
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."

line=${array[$RANDOM % ${#array[@]}]}
speech "$line"

保存并退出。

4. 使脚本可执行并将其目录添加到 PATH,以便可以从任何地方调用它们:

chmod u+x ~/scripts/bin/speech
chmod u+x ~/scripts/bin/shell_speech
export PATH=$PATH:~/scripts

5.修改.bashrc

gedit ~/.bashrc

添加以下行:

PROMPT_COMMAND="bash shell_speech"

保存并关闭

笔记:您可以在数组中添加任意数量的新行~/scripts/bin/shell_speech

相关内容