Bir terminal aracılığıyla uzun bir süreç başlattım. İşlem tamamlandığında Ubuntu terminalinin ses çıkarması mümkün müdür? Bu şekilde kontrol etmeye devam etmeme gerek yok, bunun yerine ses aracılığıyla bilgilendirileceksiniz.
Bir terminal aracılığıyla uzun bir süreç başlattım. İşlem tamamlandığında Ubuntu terminalinin ses çıkarması mümkün müdür? Bu şekilde kontrol etmeye devam etmeme gerek yok, bunun yerine ses aracılığıyla bilgilendirileceksiniz.
Yanıtlar:
Sulama komutunu betiğinizin sonuna getirerek, uzun işleminiz için çağırabileceğiniz en az üç komut satırı yolu vardır:
Ses çalmanın "klasik" yolu PC hoparlörleri üzerinden bip sesi kullanmaktır . Ancak bu her durumda işe yaramayacaktır (örn. Sistemimdeki PC hoparlörlerim tamamen devre dışıdır) ve pscpkr'yi çekirdek modülünden çıkarmanız
/etc/modprobe/blacklist.confve pcspkrçekirdek modülünü yüklemeniz gerekir .
sudo sed -i 's/blacklist pcspkr/#blacklist pcspkr/g' /etc/modprobe.d/blacklist.conf
sudo modprobe pcspkr
beep [optional parameters]
Ayrıca aplay kullanarak herhangi bir ses dosyasını wav formatında çalabiliriz (varsayılan olarak yüklenir):
aplay /usr/share/sounds/alsa/Side_Right.wav
Başka bir yol da, sisteminizde (in libsndfile) varsayılan ses çıkışında tanıdığı ses dosyalarının oynatılmasını sağlamak için pulseaudio komut satırı arayüzünü kullanmaktır :
paplay /usr/share/sounds/freedesktop/stereo/complete.oga
Varsayılan ses dosyalarını /usr/share/sounds/veya farklı bir konumdaki diğer ses dosyalarını kullanabiliriz .
Sadece bahsetmiş olmak gerekirse , Ubuntu <= 12.04 içine varsayılan olarak yüklenen espeak'i yanlış kullanarak bunu başarmanın başka bir güzel yolu var . Aşağıdaki örneği görün veya duyun:
#! /bin/bash
c=10; while [ $c -ge 0 ]; do espeak $c; let c--; done; sleep 1 ## here lengthy code
espeak "We are done with counting"
Ubuntu'da> = 12.10 Orca speak-dispatcher kullanıyor. Daha sonra espeak'i kurabilir veya alternatif olarak kullanabilirsiniz
spd-say "Text".
spd-say.
spd-sayprogramı varsayılan olarak yüklenir ve sistemimde çalışır.
paplay /usr/share/sounds/freedesktop/stereo/complete.oga
kullanırım
make; spd-say done
Kullandığınız uzun süren komutla "make" ifadesini değiştirin.
spd-say 'get back to work'. Ve önceden yüklenmiş olarak geliyor: releases.ubuntu.com/trusty/… , sanırım kör insanlar için? Ve -wsonsuz döngüler için: while true; do spd-say -w 'get back to work you lazy bum'; done.
Komut bittikten sonra bir ses çalmak için:
long-running-command; sn3
( sn3ses numarası 3 nerede ) şunu içine koy .bashrc:
sound() {
# plays sounds in sequence and waits for them to finish
for s in $@; do
paplay $s
done
}
sn1() {
sound /usr/share/sounds/ubuntu/stereo/dialog-information.ogg
}
sn2() {
sound /usr/share/sounds/freedesktop/stereo/complete.oga
}
sn3() {
sound /usr/share/sounds/freedesktop/stereo/suspend-error.oga
}
Veya daha fazla seçenek için aşağıyı okuyun:
İşte tam olarak ne istediğin için kullandığım şey - tek bir farkla: sadece komut bittiğinde bir ses çalmıyor , başarıda ve hatada farklı bir ses çalıyor . (Ama sevmediysen değiştirebilirsin.)
oksUzun süren komutların sonunda kullandığım denilen Bash işlevim var :
make && make test && make install; oks
Bir ses çalar ve önceki komut tamamlandığında OK veya ERROR (hata koduyla) görüntüler.
İşte iki yardımcı ile bu işlev:
sound() {
# plays sounds in sequence and waits for them to finish
for s in $@; do
paplay $s
done
}
soundbg() {
# plays all sounds at the same time in the background
for s in $@; do
# you may need to change 0 to 1 or something else:
pacmd play-file $s 0 >/dev/null
done
}
oks() {
# like ok but with sounds
s=$?
sound_ok=/usr/share/sounds/ubuntu/stereo/dialog-information.ogg
sound_error=/usr/share/sounds/ubuntu/stereo/dialog-warning.ogg
if [[ $s = 0 ]]; then
echo OK
soundbg $sound_ok
else
echo ERROR: $s
soundbg $sound_error
fi
}
Bunu doğrudan ~ / .bashrc dosyasına koyabilir veya başka bir dosyaya koyabilir ve ardından bu satırı ~ / .bashrc dosyasına koyabilirsiniz:
. ~/path/to/file/with/function
Değiştir sound_okve sound_errordiğer bazı seslere
Sen deneyebilirsiniz soundvs. soundbgve değişim sound_okve sound_erroristediğiniz sonucu almak ister birçok seslerin dizileri kullanmak.
Sisteminizde bazı iyi sesler bulmak için deneyebilirsiniz:
for i in /usr/share/sounds/*/stereo/*; do echo $i; paplay $i; sleep 1; done
Varsayılan olarak Ubuntu'da mevcut olan ve varsayılan olarak bildirimler için uygun olan bazı sesler var - sn1 çok gürültülü ve güzel, sn2 çok yüksek ve hala çok güzel, sn3 çok yüksek ve çok hoş değil:
sn1() {
sound /usr/share/sounds/ubuntu/stereo/dialog-information.ogg
}
sn2() {
sound /usr/share/sounds/freedesktop/stereo/complete.oga
}
sn3() {
sound /usr/share/sounds/freedesktop/stereo/suspend-error.oga
}
Yine, değiştirebilir soundiçin soundbgses (eğer sesler çok oynarken mesela senaryolarınızı yavaşlatmak değil) bitirmek için beklemeden arka planda oynamak istiyorum.
Ve sadece durumda - işte okssesler ile aynı fonksiyonlar :
ok() {
# prints OK or ERROR and exit status of previous command
s=$?
if [[ $s = 0 ]]; then
echo OK
else
echo ERROR: $s
fi
}
İşte nasıl kullandığınız:
Başarı ile Örnek:
ls / && ls /bin && ls /usr; oks
hata ile örnek:
ls / && ls /bim && ls /usr; oks
Elbette pratikte komutlar daha çok benziyor:
make && make test && make install; oks
ama ben lsnasıl kullanılacağını hızlıca görebilmek için kullandım .
Sessiz bir sürüm okyerine kullanabilirsiniz oks.
Veya örneğin kullanabilirsiniz:
ls / && ls /bim && ls /usr; ok; sn1
OK / ERROR yazdırmak ancak her zaman aynı sesi çalmak vb.
Bu işlevleri GitHub'a koydum, bkz:
Kaynak şu adresten indirilebilir:
soundloopYukarıdaki depoya bir fonksiyon ekledim . Bir ses çalar ve yorumlarda shadiwhile true; do paplay file.ogg; done tarafından istendiği gibi Ctrl + C ( çalışmayı beklediğinden daha basit ama aksine) kesilebilir . Olarak uygulanır:
soundloop() {
set +m
a=`date +%s`
{ paplay $1 & } 2>/dev/null
wait
b=`date +%s`
d=$(($b-$a))
[ $d -eq 0 ] && d=1
while :; do
pacmd play-file $1 0 >/dev/null
sleep $d
done
}
Karmaşık olduğunu düşünüyorsanız, lütfen şikayetlerinizi PulseAudio geliştiricilerine iletin.
while true; do paplay ...; done, sesimi vuruncaya kadar tekrar edecek şekilde yerleştirmeye çalıştım Ctrl+C, ancak yaptığımda, bozulmuyor. Bunun man paplaynasıl işe yarayacağını bulmak için özel bir seçenek bulamıyorum . Herhangi bir fikir?
Göre bu\a karakter bilgisayarın bip olan ASCII kodu 7, kaçar.
Bu yüzden echo $'\a'yerel makinemde bir bip sesi çıkarmaya çalışıyor, bilgisayarda çalışan bir bash kabuğunda çalıştırılsa bile, PuTTY gibi bir terminal arayüzü üzerinden bağlanıyorum.
Michael Curries'in cevabını genişleterek, Bash'in aşağıdakileri yoluyla BEL( \a) karakterini basmasını sağlayabilirsiniz PROMPT_COMMAND:
PROMPT_COMMAND='printf \\a'
PROMPT_COMMANDBu şekilde ayarlamak Bash'in printf \\aher komutun sonunda çalışmasını sağlar, bu da terminalin sesini çalmasını sağlar (muru'nun işaret ettiği gibi, sadece istemin yeniden çekilmesini tetiklemek terminalin sesini çalmasını sağlar, yani ses çalınır) her seferinde yeni bir bilgi istemi yapılır, örneğin sadece vurulduğunda bile ENTER).
Bu bir terminal özelliğidir, bu nedenle tüm terminallerde çalışmayabilir; örneğin konsolda çalışmıyor (ama çalıştığından eminim gnome-terminalve xterm).
Komuta
speaker-test
bir ses çıkarır. En basit ama can sıkıcı bir çözüm. :-)
Gürültü sinyalini yapılandırma seçenekleri için kılavuzunaspeaker-test(1) bakın .
command && (say done ; echo done) || (echo error ; say error)
Örnek 1: echo alik && (say done ; echo done) || (echo error ; say error)biten bir kelimeyle sonuçlanacaktır.
Örnek 2: non_existing_command_error && (say done ; echo done) || (echo error ; say error)bir hata kelimesiyle sonuçlanacaktır.
* İhtiyaçlar gnustep-gui-runtime-
sudo apt-get install gnustep-gui-runtime
Şerefe.
Ses çalan ve Ubuntu ( Gist ) için Verilen Mesaj ve Zaman ile bir Bildirim görüntüleyen basit ve neredeyse yerel bir komut dosyası oluşturdum :
#!/bin/sh
# https://gist.github.com/John-Almardeny/04fb95eeb969aa46f031457c7815b07d
# Create a Notification With Sound with a Given Message and Time
# The Downloaded Sound is from Notification Sounds https://notificationsounds.com/
MSSG="$1"
TIME="$2"
# install wget if not found
if ! [ -x "$(command -v wget)" ]; then
echo -e "INSTALLING WGET...\n\n"
sudo apt-get install wget
echo -e "\n\n"
fi
# install at package if not found
if ! [ -x "$(command -v at)" ]; then
echo -e "INSTALLING AT...\n\n"
sudo apt-get install at
echo -e "\n\n"
fi
# install sox if not found
if ! [ -x "$(command -v sox)" ]; then
echo -e "INSTALLING SOX...\n\n"
sudo apt-get install sox
sudo apt-get install sox libsox-fmt-all
echo -e "\n\n"
fi
# download the noti sound if this is first time
# add alias to the bashrc file
if ! [ -f ~/noti/sound.mp3 ]; then
echo -e "DOWNLOADING SOUND...\n\n"
touch ~/noti/sound.mp3 | wget -O ~/noti/sound.mp3 "https://notificationsounds.com/wake-up-tones/rise-and-shine-342/download/mp3"
sudo echo "alias noti=\"sh ~/noti/noti.sh\"" >> ~/.bashrc
source ~/.bashrc
echo -e "\n\n"
fi
# notify with the sound playing and particular given message and time
echo "notify-send \""$MSSG\"" && play ~/noti/sound.mp3" | at $TIME
Evinizde yeni bir Dizin oluşturun ve arayın noti
mkdir ~/noti
Noti.sh dosyasını indirin ve yukarıdaki dizine çıkartın noti.
Terminal'i açın ve Dizini Değiştir noti
cd ~/noti
Noti.sh dosyasını yayınlayarak çalıştırılabilir duruma getirin:
sudo chmod +x noti.sh
Bunun gibi bir Test yapın:
sh ~/noti/noti.sh "Test" "now"
noti "Hello From Noti" "now +1 minute"
noti "Hello From Noti" "now +5 minutes"
noti "Hello From Noti" "now + 1 hour"
noti "Hello From Noti" "now + 2 days"
noti "Hello From Noti" "4 PM + 2 days"
noti "Hello From Noti" "now + 3 weeks"
noti "Hello From Noti" "now + 4 months"
noti "Hello From Noti" "4:00 PM"
noti "Hello From Noti" "2:30 AM tomorrow"
noti "Hello From Noti" "2:30 PM Fri"
noti "Hello From Noti" "2:30 PM 25.07.18"
sudo apt-get update; noti "Done" "now"
ffmpeg sinüs dalgası
Dışarıdaki minimalistler için 5 saniye boyunca 1000 Hz sinüs çalabilirsiniz:
sudo apt-get install ffmpeg
ffplay -f lavfi -i "sine=frequency=1000:duration=5" -autoexit -nodisp
veya Ctrl-C yapana kadar sonsuza dek:
ffplay -f lavfi -i "sine=frequency=1000" -nodisp
Daha fazla bilgi için: https://stackoverflow.com/questions/5109038/linux-sine-wave-audio-generator/57610684#57610684
Ubuntu 18.04'te test edildi, ffmpeg 3.4.6.