Automatically end each command in terminal with a different message or sound

The name of the pictureThe name of the pictureThe name of the pictureClash Royale CLAN TAG#URR8PPP











up vote
18
down vote

favorite
1












I installed SVOX pico2wave and created a script.
Now when I enter:



speech "Hello world"


The computer text-to-voice engine says out loud "Hello world". Furthermore, I use in .bashrc the variable PROMPT_COMMAND defined as:



PROMPT_COMMAND="speech 'Command executed.'"


So the nice text-to-voice engine announces me loud that the command is executed, before returning the prompt in the terminal.



However, this gets boring after a while and I thought it would be really cool to end each command in terminal with the computer speaking a different line of text (think of the autopilot of Starship Enterprise).



So I created in .bashrc an array variable, with different messages:



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


What I would like, is that each time I run a command in terminal, the variable PROMPT_COMMAND to be updated an read a different random line in the array.



I presume I need a loop, but I didn't know how to make it.



I would be most grateful for any help. Thank you.










share|improve this question









New contributor




RazTaz is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.



















  • In the script in the linked answer, make sure you change the -l=de-DE to your local language like -l=en-US.
    – Terrance
    2 days ago










  • Thanks, indeed. This needs to be taken care of, but I had done it.
    – RazTaz
    2 days ago










  • Yeah, that is just a comment in general. Pretty cool idea here! +1
    – Terrance
    2 days ago










  • Just curious - how can I install speech executable? Is it alias for espeak?
    – N0rbert
    2 days ago







  • 1




    "speech" is a script. I followed the instructions in the link. I made a script called speech.sh, including the corrections indicated above by Terrance". I saved speech.sh in my ~/scripts folder. I changed file permissions to speech.sh to make it executable. I created a folder as follows: ~/scripts/bin and followed the instructions from here stackoverflow.com/a/20054809, in order to add it to the PATH, so the script can be recognized as executable, no matter where I am.
    – RazTaz
    2 days ago















up vote
18
down vote

favorite
1












I installed SVOX pico2wave and created a script.
Now when I enter:



speech "Hello world"


The computer text-to-voice engine says out loud "Hello world". Furthermore, I use in .bashrc the variable PROMPT_COMMAND defined as:



PROMPT_COMMAND="speech 'Command executed.'"


So the nice text-to-voice engine announces me loud that the command is executed, before returning the prompt in the terminal.



However, this gets boring after a while and I thought it would be really cool to end each command in terminal with the computer speaking a different line of text (think of the autopilot of Starship Enterprise).



So I created in .bashrc an array variable, with different messages:



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


What I would like, is that each time I run a command in terminal, the variable PROMPT_COMMAND to be updated an read a different random line in the array.



I presume I need a loop, but I didn't know how to make it.



I would be most grateful for any help. Thank you.










share|improve this question









New contributor




RazTaz is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.



















  • In the script in the linked answer, make sure you change the -l=de-DE to your local language like -l=en-US.
    – Terrance
    2 days ago










  • Thanks, indeed. This needs to be taken care of, but I had done it.
    – RazTaz
    2 days ago










  • Yeah, that is just a comment in general. Pretty cool idea here! +1
    – Terrance
    2 days ago










  • Just curious - how can I install speech executable? Is it alias for espeak?
    – N0rbert
    2 days ago







  • 1




    "speech" is a script. I followed the instructions in the link. I made a script called speech.sh, including the corrections indicated above by Terrance". I saved speech.sh in my ~/scripts folder. I changed file permissions to speech.sh to make it executable. I created a folder as follows: ~/scripts/bin and followed the instructions from here stackoverflow.com/a/20054809, in order to add it to the PATH, so the script can be recognized as executable, no matter where I am.
    – RazTaz
    2 days ago













up vote
18
down vote

favorite
1









up vote
18
down vote

favorite
1






1





I installed SVOX pico2wave and created a script.
Now when I enter:



speech "Hello world"


The computer text-to-voice engine says out loud "Hello world". Furthermore, I use in .bashrc the variable PROMPT_COMMAND defined as:



PROMPT_COMMAND="speech 'Command executed.'"


So the nice text-to-voice engine announces me loud that the command is executed, before returning the prompt in the terminal.



However, this gets boring after a while and I thought it would be really cool to end each command in terminal with the computer speaking a different line of text (think of the autopilot of Starship Enterprise).



So I created in .bashrc an array variable, with different messages:



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


What I would like, is that each time I run a command in terminal, the variable PROMPT_COMMAND to be updated an read a different random line in the array.



I presume I need a loop, but I didn't know how to make it.



I would be most grateful for any help. Thank you.










share|improve this question









New contributor




RazTaz is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.











I installed SVOX pico2wave and created a script.
Now when I enter:



speech "Hello world"


The computer text-to-voice engine says out loud "Hello world". Furthermore, I use in .bashrc the variable PROMPT_COMMAND defined as:



PROMPT_COMMAND="speech 'Command executed.'"


So the nice text-to-voice engine announces me loud that the command is executed, before returning the prompt in the terminal.



However, this gets boring after a while and I thought it would be really cool to end each command in terminal with the computer speaking a different line of text (think of the autopilot of Starship Enterprise).



So I created in .bashrc an array variable, with different messages:



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


What I would like, is that each time I run a command in terminal, the variable PROMPT_COMMAND to be updated an read a different random line in the array.



I presume I need a loop, but I didn't know how to make it.



I would be most grateful for any help. Thank you.







command-line bash sound






share|improve this question









New contributor




RazTaz is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.











share|improve this question









New contributor




RazTaz is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.









share|improve this question




share|improve this question








edited 2 days ago









Ravexina

27.6k146594




27.6k146594






New contributor




RazTaz is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.









asked 2 days ago









RazTaz

14111




14111




New contributor




RazTaz is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.





New contributor





RazTaz is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.






RazTaz is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.











  • In the script in the linked answer, make sure you change the -l=de-DE to your local language like -l=en-US.
    – Terrance
    2 days ago










  • Thanks, indeed. This needs to be taken care of, but I had done it.
    – RazTaz
    2 days ago










  • Yeah, that is just a comment in general. Pretty cool idea here! +1
    – Terrance
    2 days ago










  • Just curious - how can I install speech executable? Is it alias for espeak?
    – N0rbert
    2 days ago







  • 1




    "speech" is a script. I followed the instructions in the link. I made a script called speech.sh, including the corrections indicated above by Terrance". I saved speech.sh in my ~/scripts folder. I changed file permissions to speech.sh to make it executable. I created a folder as follows: ~/scripts/bin and followed the instructions from here stackoverflow.com/a/20054809, in order to add it to the PATH, so the script can be recognized as executable, no matter where I am.
    – RazTaz
    2 days ago

















  • In the script in the linked answer, make sure you change the -l=de-DE to your local language like -l=en-US.
    – Terrance
    2 days ago










  • Thanks, indeed. This needs to be taken care of, but I had done it.
    – RazTaz
    2 days ago










  • Yeah, that is just a comment in general. Pretty cool idea here! +1
    – Terrance
    2 days ago










  • Just curious - how can I install speech executable? Is it alias for espeak?
    – N0rbert
    2 days ago







  • 1




    "speech" is a script. I followed the instructions in the link. I made a script called speech.sh, including the corrections indicated above by Terrance". I saved speech.sh in my ~/scripts folder. I changed file permissions to speech.sh to make it executable. I created a folder as follows: ~/scripts/bin and followed the instructions from here stackoverflow.com/a/20054809, in order to add it to the PATH, so the script can be recognized as executable, no matter where I am.
    – RazTaz
    2 days ago
















In the script in the linked answer, make sure you change the -l=de-DE to your local language like -l=en-US.
– Terrance
2 days ago




In the script in the linked answer, make sure you change the -l=de-DE to your local language like -l=en-US.
– Terrance
2 days ago












Thanks, indeed. This needs to be taken care of, but I had done it.
– RazTaz
2 days ago




Thanks, indeed. This needs to be taken care of, but I had done it.
– RazTaz
2 days ago












Yeah, that is just a comment in general. Pretty cool idea here! +1
– Terrance
2 days ago




Yeah, that is just a comment in general. Pretty cool idea here! +1
– Terrance
2 days ago












Just curious - how can I install speech executable? Is it alias for espeak?
– N0rbert
2 days ago





Just curious - how can I install speech executable? Is it alias for espeak?
– N0rbert
2 days ago





1




1




"speech" is a script. I followed the instructions in the link. I made a script called speech.sh, including the corrections indicated above by Terrance". I saved speech.sh in my ~/scripts folder. I changed file permissions to speech.sh to make it executable. I created a folder as follows: ~/scripts/bin and followed the instructions from here stackoverflow.com/a/20054809, in order to add it to the PATH, so the script can be recognized as executable, no matter where I am.
– RazTaz
2 days ago





"speech" is a script. I followed the instructions in the link. I made a script called speech.sh, including the corrections indicated above by Terrance". I saved speech.sh in my ~/scripts folder. I changed file permissions to speech.sh to make it executable. I created a folder as follows: ~/scripts/bin and followed the instructions from here stackoverflow.com/a/20054809, in order to add it to the PATH, so the script can be recognized as executable, no matter where I am.
– RazTaz
2 days ago











2 Answers
2






active

oldest

votes

















up vote
19
down vote



accepted










Create a script and save it somewhere which contains your lines and the logic to choose a random line from your array and calling speech command on that line:



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"


Then in your .bashrc or .profile set PROMPT_COMMAND:



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


Just replace the speech with echo to get a messge instead of the voice.






share|improve this answer






















  • Thanks for the above solution. It seems to work, except that it only renders the first word in the random line (eg. "Shields." or "Deploying..") not the entire line (eg. "Shields at 90%" or "Deploying repair droids on dek 17."
    – RazTaz
    2 days ago










  • It works!!! Thank you so much!!!!
    – RazTaz
    2 days ago










  • @RazTaz You're welcome ;)
    – Ravexina
    2 days ago










  • Shouldn't $array[$RANDOM % $#array[@]] be in double quotes?
    – Mad Physicist
    yesterday










  • @MadPhysicist It's a good practice but not necessary here, run the script using set -x to see what I'm talking about :)
    – Ravexina
    yesterday


















up vote
4
down vote













Later Edit Tutorial:



Thanks to Ravexina's answer above, now the problem is solved and the solution works fantastically. I will give step-by-step instructions below, for the other people interested to make it work in Ubuntu 18.04



1. Install SVOX pico2wave package:



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


2. Create the speech script



cd ~/scripts
gedit speech


and put this content inside, inserting the correct user in the path:



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


save and exit.



3. Create the shell_speech.sh script as indicated by Ravexina above:



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"


save and exit.



4. Make the scripts executable and add their directory to PATH so that they could be called from everywhere:



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


5. Modify .bashrc



gedit ~/.bashrc


add the following line:



PROMPT_COMMAND="bash shell_speech"


save and close



Note: you can add as many new lines as you want in the array in ~/scripts/bin/shell_speech






share|improve this answer










New contributor




RazTaz is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.

















  • Since you've made the script executable and in the PATH, you don't need to include bash in your PROMPT_COMMAND and I would use single quotes in case you add other things later that will need to have deferred execution: PROMPT_COMMAND='shell_speech'
    – Dennis Williamson
    2 days ago







  • 1




    For security reasons it is better to write /bin/bash instead of a simple bash... (good practice just in case someone put another bash in your path before /bin...). I should even suggest you a temp random file in the /tmp directory instead that test.wav in your home... ps> give it a look to fortune.
    – Hastur
    yesterday











Your Answer







StackExchange.ready(function()
var channelOptions =
tags: "".split(" "),
id: "89"
;
initTagRenderer("".split(" "), "".split(" "), channelOptions);

StackExchange.using("externalEditor", function()
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled)
StackExchange.using("snippets", function()
createEditor();
);

else
createEditor();

);

function createEditor()
StackExchange.prepareEditor(
heartbeatType: 'answer',
convertImagesToLinks: true,
noModals: false,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
);



);






RazTaz is a new contributor. Be nice, and check out our Code of Conduct.









 

draft saved


draft discarded


















StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2faskubuntu.com%2fquestions%2f1073976%2fautomatically-end-each-command-in-terminal-with-a-different-message-or-sound%23new-answer', 'question_page');

);

Post as a guest






























2 Answers
2






active

oldest

votes








2 Answers
2






active

oldest

votes









active

oldest

votes






active

oldest

votes








up vote
19
down vote



accepted










Create a script and save it somewhere which contains your lines and the logic to choose a random line from your array and calling speech command on that line:



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"


Then in your .bashrc or .profile set PROMPT_COMMAND:



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


Just replace the speech with echo to get a messge instead of the voice.






share|improve this answer






















  • Thanks for the above solution. It seems to work, except that it only renders the first word in the random line (eg. "Shields." or "Deploying..") not the entire line (eg. "Shields at 90%" or "Deploying repair droids on dek 17."
    – RazTaz
    2 days ago










  • It works!!! Thank you so much!!!!
    – RazTaz
    2 days ago










  • @RazTaz You're welcome ;)
    – Ravexina
    2 days ago










  • Shouldn't $array[$RANDOM % $#array[@]] be in double quotes?
    – Mad Physicist
    yesterday










  • @MadPhysicist It's a good practice but not necessary here, run the script using set -x to see what I'm talking about :)
    – Ravexina
    yesterday















up vote
19
down vote



accepted










Create a script and save it somewhere which contains your lines and the logic to choose a random line from your array and calling speech command on that line:



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"


Then in your .bashrc or .profile set PROMPT_COMMAND:



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


Just replace the speech with echo to get a messge instead of the voice.






share|improve this answer






















  • Thanks for the above solution. It seems to work, except that it only renders the first word in the random line (eg. "Shields." or "Deploying..") not the entire line (eg. "Shields at 90%" or "Deploying repair droids on dek 17."
    – RazTaz
    2 days ago










  • It works!!! Thank you so much!!!!
    – RazTaz
    2 days ago










  • @RazTaz You're welcome ;)
    – Ravexina
    2 days ago










  • Shouldn't $array[$RANDOM % $#array[@]] be in double quotes?
    – Mad Physicist
    yesterday










  • @MadPhysicist It's a good practice but not necessary here, run the script using set -x to see what I'm talking about :)
    – Ravexina
    yesterday













up vote
19
down vote



accepted







up vote
19
down vote



accepted






Create a script and save it somewhere which contains your lines and the logic to choose a random line from your array and calling speech command on that line:



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"


Then in your .bashrc or .profile set PROMPT_COMMAND:



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


Just replace the speech with echo to get a messge instead of the voice.






share|improve this answer














Create a script and save it somewhere which contains your lines and the logic to choose a random line from your array and calling speech command on that line:



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"


Then in your .bashrc or .profile set PROMPT_COMMAND:



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


Just replace the speech with echo to get a messge instead of the voice.







share|improve this answer














share|improve this answer



share|improve this answer








edited 2 days ago

























answered 2 days ago









Ravexina

27.6k146594




27.6k146594











  • Thanks for the above solution. It seems to work, except that it only renders the first word in the random line (eg. "Shields." or "Deploying..") not the entire line (eg. "Shields at 90%" or "Deploying repair droids on dek 17."
    – RazTaz
    2 days ago










  • It works!!! Thank you so much!!!!
    – RazTaz
    2 days ago










  • @RazTaz You're welcome ;)
    – Ravexina
    2 days ago










  • Shouldn't $array[$RANDOM % $#array[@]] be in double quotes?
    – Mad Physicist
    yesterday










  • @MadPhysicist It's a good practice but not necessary here, run the script using set -x to see what I'm talking about :)
    – Ravexina
    yesterday

















  • Thanks for the above solution. It seems to work, except that it only renders the first word in the random line (eg. "Shields." or "Deploying..") not the entire line (eg. "Shields at 90%" or "Deploying repair droids on dek 17."
    – RazTaz
    2 days ago










  • It works!!! Thank you so much!!!!
    – RazTaz
    2 days ago










  • @RazTaz You're welcome ;)
    – Ravexina
    2 days ago










  • Shouldn't $array[$RANDOM % $#array[@]] be in double quotes?
    – Mad Physicist
    yesterday










  • @MadPhysicist It's a good practice but not necessary here, run the script using set -x to see what I'm talking about :)
    – Ravexina
    yesterday
















Thanks for the above solution. It seems to work, except that it only renders the first word in the random line (eg. "Shields." or "Deploying..") not the entire line (eg. "Shields at 90%" or "Deploying repair droids on dek 17."
– RazTaz
2 days ago




Thanks for the above solution. It seems to work, except that it only renders the first word in the random line (eg. "Shields." or "Deploying..") not the entire line (eg. "Shields at 90%" or "Deploying repair droids on dek 17."
– RazTaz
2 days ago












It works!!! Thank you so much!!!!
– RazTaz
2 days ago




It works!!! Thank you so much!!!!
– RazTaz
2 days ago












@RazTaz You're welcome ;)
– Ravexina
2 days ago




@RazTaz You're welcome ;)
– Ravexina
2 days ago












Shouldn't $array[$RANDOM % $#array[@]] be in double quotes?
– Mad Physicist
yesterday




Shouldn't $array[$RANDOM % $#array[@]] be in double quotes?
– Mad Physicist
yesterday












@MadPhysicist It's a good practice but not necessary here, run the script using set -x to see what I'm talking about :)
– Ravexina
yesterday





@MadPhysicist It's a good practice but not necessary here, run the script using set -x to see what I'm talking about :)
– Ravexina
yesterday













up vote
4
down vote













Later Edit Tutorial:



Thanks to Ravexina's answer above, now the problem is solved and the solution works fantastically. I will give step-by-step instructions below, for the other people interested to make it work in Ubuntu 18.04



1. Install SVOX pico2wave package:



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


2. Create the speech script



cd ~/scripts
gedit speech


and put this content inside, inserting the correct user in the path:



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


save and exit.



3. Create the shell_speech.sh script as indicated by Ravexina above:



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"


save and exit.



4. Make the scripts executable and add their directory to PATH so that they could be called from everywhere:



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


5. Modify .bashrc



gedit ~/.bashrc


add the following line:



PROMPT_COMMAND="bash shell_speech"


save and close



Note: you can add as many new lines as you want in the array in ~/scripts/bin/shell_speech






share|improve this answer










New contributor




RazTaz is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.

















  • Since you've made the script executable and in the PATH, you don't need to include bash in your PROMPT_COMMAND and I would use single quotes in case you add other things later that will need to have deferred execution: PROMPT_COMMAND='shell_speech'
    – Dennis Williamson
    2 days ago







  • 1




    For security reasons it is better to write /bin/bash instead of a simple bash... (good practice just in case someone put another bash in your path before /bin...). I should even suggest you a temp random file in the /tmp directory instead that test.wav in your home... ps> give it a look to fortune.
    – Hastur
    yesterday















up vote
4
down vote













Later Edit Tutorial:



Thanks to Ravexina's answer above, now the problem is solved and the solution works fantastically. I will give step-by-step instructions below, for the other people interested to make it work in Ubuntu 18.04



1. Install SVOX pico2wave package:



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


2. Create the speech script



cd ~/scripts
gedit speech


and put this content inside, inserting the correct user in the path:



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


save and exit.



3. Create the shell_speech.sh script as indicated by Ravexina above:



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"


save and exit.



4. Make the scripts executable and add their directory to PATH so that they could be called from everywhere:



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


5. Modify .bashrc



gedit ~/.bashrc


add the following line:



PROMPT_COMMAND="bash shell_speech"


save and close



Note: you can add as many new lines as you want in the array in ~/scripts/bin/shell_speech






share|improve this answer










New contributor




RazTaz is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.

















  • Since you've made the script executable and in the PATH, you don't need to include bash in your PROMPT_COMMAND and I would use single quotes in case you add other things later that will need to have deferred execution: PROMPT_COMMAND='shell_speech'
    – Dennis Williamson
    2 days ago







  • 1




    For security reasons it is better to write /bin/bash instead of a simple bash... (good practice just in case someone put another bash in your path before /bin...). I should even suggest you a temp random file in the /tmp directory instead that test.wav in your home... ps> give it a look to fortune.
    – Hastur
    yesterday













up vote
4
down vote










up vote
4
down vote









Later Edit Tutorial:



Thanks to Ravexina's answer above, now the problem is solved and the solution works fantastically. I will give step-by-step instructions below, for the other people interested to make it work in Ubuntu 18.04



1. Install SVOX pico2wave package:



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


2. Create the speech script



cd ~/scripts
gedit speech


and put this content inside, inserting the correct user in the path:



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


save and exit.



3. Create the shell_speech.sh script as indicated by Ravexina above:



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"


save and exit.



4. Make the scripts executable and add their directory to PATH so that they could be called from everywhere:



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


5. Modify .bashrc



gedit ~/.bashrc


add the following line:



PROMPT_COMMAND="bash shell_speech"


save and close



Note: you can add as many new lines as you want in the array in ~/scripts/bin/shell_speech






share|improve this answer










New contributor




RazTaz is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.









Later Edit Tutorial:



Thanks to Ravexina's answer above, now the problem is solved and the solution works fantastically. I will give step-by-step instructions below, for the other people interested to make it work in Ubuntu 18.04



1. Install SVOX pico2wave package:



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


2. Create the speech script



cd ~/scripts
gedit speech


and put this content inside, inserting the correct user in the path:



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


save and exit.



3. Create the shell_speech.sh script as indicated by Ravexina above:



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"


save and exit.



4. Make the scripts executable and add their directory to PATH so that they could be called from everywhere:



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


5. Modify .bashrc



gedit ~/.bashrc


add the following line:



PROMPT_COMMAND="bash shell_speech"


save and close



Note: you can add as many new lines as you want in the array in ~/scripts/bin/shell_speech







share|improve this answer










New contributor




RazTaz is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.









share|improve this answer



share|improve this answer








edited 2 days ago









Ravexina

27.6k146594




27.6k146594






New contributor




RazTaz is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.









answered 2 days ago









RazTaz

14111




14111




New contributor




RazTaz is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.





New contributor





RazTaz is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.






RazTaz is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.











  • Since you've made the script executable and in the PATH, you don't need to include bash in your PROMPT_COMMAND and I would use single quotes in case you add other things later that will need to have deferred execution: PROMPT_COMMAND='shell_speech'
    – Dennis Williamson
    2 days ago







  • 1




    For security reasons it is better to write /bin/bash instead of a simple bash... (good practice just in case someone put another bash in your path before /bin...). I should even suggest you a temp random file in the /tmp directory instead that test.wav in your home... ps> give it a look to fortune.
    – Hastur
    yesterday

















  • Since you've made the script executable and in the PATH, you don't need to include bash in your PROMPT_COMMAND and I would use single quotes in case you add other things later that will need to have deferred execution: PROMPT_COMMAND='shell_speech'
    – Dennis Williamson
    2 days ago







  • 1




    For security reasons it is better to write /bin/bash instead of a simple bash... (good practice just in case someone put another bash in your path before /bin...). I should even suggest you a temp random file in the /tmp directory instead that test.wav in your home... ps> give it a look to fortune.
    – Hastur
    yesterday
















Since you've made the script executable and in the PATH, you don't need to include bash in your PROMPT_COMMAND and I would use single quotes in case you add other things later that will need to have deferred execution: PROMPT_COMMAND='shell_speech'
– Dennis Williamson
2 days ago





Since you've made the script executable and in the PATH, you don't need to include bash in your PROMPT_COMMAND and I would use single quotes in case you add other things later that will need to have deferred execution: PROMPT_COMMAND='shell_speech'
– Dennis Williamson
2 days ago





1




1




For security reasons it is better to write /bin/bash instead of a simple bash... (good practice just in case someone put another bash in your path before /bin...). I should even suggest you a temp random file in the /tmp directory instead that test.wav in your home... ps> give it a look to fortune.
– Hastur
yesterday





For security reasons it is better to write /bin/bash instead of a simple bash... (good practice just in case someone put another bash in your path before /bin...). I should even suggest you a temp random file in the /tmp directory instead that test.wav in your home... ps> give it a look to fortune.
– Hastur
yesterday











RazTaz is a new contributor. Be nice, and check out our Code of Conduct.









 

draft saved


draft discarded


















RazTaz is a new contributor. Be nice, and check out our Code of Conduct.












RazTaz is a new contributor. Be nice, and check out our Code of Conduct.











RazTaz is a new contributor. Be nice, and check out our Code of Conduct.













 


draft saved


draft discarded














StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2faskubuntu.com%2fquestions%2f1073976%2fautomatically-end-each-command-in-terminal-with-a-different-message-or-sound%23new-answer', 'question_page');

);

Post as a guest













































































Comments

Popular posts from this blog

Long meetings (6-7 hours a day): Being “babysat” by supervisor

Is the Concept of Multiple Fantasy Races Scientifically Flawed? [closed]

Confectionery