ฉันต้องการใช้เสียงบี๊บในเชลล์สคริปต์ น่าเสียดายที่ไม่มีวิธีการที่ฉันพบผ่านทาง Google ที่ทำงานให้ฉัน
ฉันเหนื่อย
echo -e '\a'
echo -ne '\007'
และคำสั่งbeep
หลังจากที่ฉันติดตั้งผ่าน apt
อะไรคือเหตุผล?
ฉันต้องการใช้เสียงบี๊บในเชลล์สคริปต์ น่าเสียดายที่ไม่มีวิธีการที่ฉันพบผ่านทาง Google ที่ทำงานให้ฉัน
ฉันเหนื่อย
echo -e '\a'
echo -ne '\007'
และคำสั่งbeep
หลังจากที่ฉันติดตั้งผ่าน apt
อะไรคือเหตุผล?
คำตอบ:
เรียกใช้ครั้งแรกsudo modprobe pcspkr
แล้วbeep
ควรทำงาน
เหตุผลนี้ไม่ใช่เพราะโดยปกติแล้ว Ubuntu จะไม่โหลดไดรเวอร์ฮาร์ดแวร์ที่ส่งเสียงบี๊บอีกต่อไป
หากวิธีนี้ใช้ได้ผลสำหรับคุณแล้วให้เปิดใช้งานการโหลด pcspkr อย่างถาวรแก้ไข/etc/modprobe.d/blacklist.conf
ไฟล์ ( gksudo gedit
อาจจะใช้) และแสดงความคิดเห็นบรรทัดที่ระบุว่าblacklist pcspkr
ดังนั้นมันมีลักษณะเช่นนี้:
# เสียงที่น่าเกลียดและเสียงดังรบกวนจิตใจของทุกคน สิ่งนี้ควรทำโดย # nice pulseaudio bing (Ubuntu: # 77010) # บัญชีดำ pcspkr
blacklist pcspkr
ฉันต้องทำmodprobe -r pcspkr && modprobe pcspkr
เพื่อให้มันใช้งานได้ การส่งเสียงบี๊บเพื่อทำงานก็ไม่เหมือนกันกับการส่งเสียงเตือนให้ทำงานดังนั้นaskubuntu.com/questions/22168/how-do-i-enable-the-terminal-bellควรเปิดใช้งานอยู่
ไม่ใช่การเป็นแฟนของบี๊ป pcspkr ฉันใช้บี๊ปจากหนึ่งในระบบเสียงด้วยคำสั่ง paplay ของเซิร์ฟเวอร์ pulseaudio ที่ติดตั้ง
ก่อนอื่นให้ค้นหาเสียงที่คุณชอบ (คุณสามารถเรียกดู / usr / share / sound สำหรับเสียงที่มีให้เช่น) และสร้างการอ้างอิง
export BEEP=/usr/share/sounds/ubuntu/ringtones/Harmonics.ogg
จากนั้นให้มันพร้อมใช้งานเป็นคำสั่ง
alias beep='paplay $BEEP'
ตอนนี้ทำงานbeep
เมื่อใดก็ตามที่คุณต้องการ ตัวอย่างเช่นเพื่อเตือนคุณเมื่อคำสั่งเสร็จสิ้น:
find . | grep treasure ; beep
echo -e '\a'
run-my-long-test-suite.sh; beep
และอ่าน stackoverflow จนกว่าระบบจะพร้อม
export BEEP=/usr/share/sounds/ubuntu/stereo/dialog-information.ogg
และalias beep='paplay $BEEP --volume=32768'
ตอนนี้มันใช้งานได้ดีสำหรับฉัน (โปรดทราบว่าคุณสามารถแทนที่โวลุ่มด้วยbeep
นามแฝงเช่นbeep --volume=15000
เล่นที่ระดับ -12dB)
เมื่อต้องการแก้ไขปัญหานี้อย่างต่อเนื่อง:
gconf-editor
และหากมีdesktop | gnome | peripherals | keyboard | bell_mode
การตั้งค่าอยู่ให้เปลี่ยนจากoff
เป็นon
dconf-editor
และหากมีorg | gnome | settings-daemon | peripherals | keyboard | bell-mode
การตั้งค่าอยู่ให้เปลี่ยนจากoff
เป็นon
pactl upload-sample /usr/share/sounds/gnome/default/alerts/glass.ogg bell.ogg
ไปยังแฟ้ม~/.xprofile
(คุณต้องgnome-control-center-data
สำหรับglass.ogg
)[ "$DISPLAY" ] && xset b 100
ไปยังไฟล์~/.bashrc
วิธีที่ง่ายที่สุดในการเปิดใช้งานโซลูชันนี้คือการรีบูต
เพิ่มเติมเพื่อดำเนินการแก้ไขปัญหานี้ทันทีสำหรับหน้าต่างเทอร์มินัลที่เปิดอยู่แล้วให้รันpactl
คำสั่งและรันxset
คำสั่งในหน้าต่างเทอร์มินัลที่มีปัญหา
pactl upload-sample
คำสั่งในเชลล์สคริปต์ แต่วิธีการของคุณมีการจัดระเบียบมากขึ้น ขอบคุณ!
pactl
สั่งให้คำสั่ง~/.xprofile
นั้นถูกเรียกใช้งานเมื่อเริ่มต้นเซสชัน GUI
dconf-editor
รุ่นของการตั้งค่าน่าจะเป็นbell-mode
org.gnome.settings-daemon.peripherals.keyboard
glass.ogg
ติดตั้งไว้แล้ว
เนื่องจากนี่เป็นคำถามที่ได้รับคะแนนสูงมากใน Google ฉันจะเพิ่มขั้นตอนที่ฉันทำเพื่อเปิดใช้งานเสียงเตือนอีกครั้งในคอนโซลและ X11:
ในฐานะที่เป็นคำตอบอยู่แล้วที่pcspkr
เคอร์เนลไดรเวอร์สำหรับลำโพงเครื่องคอมพิวเตอร์ถูกขึ้นบัญชีดำในอูบุนตู
เปิดใช้งานชั่วคราวจนกว่าจะรีบูต:
sudo modprobe pcspkr
เปิดใช้งานโดยอัตโนมัติเมื่อบูต:
sudo nano /etc/modprobe.d/blacklist.conf
(ลบหรือแสดงความคิดเห็นpcspkr
บรรทัดโดยเติมมันด้วย#
)
gnome-terminal
)ภายใต้ X เช่นเมื่อใช้ความสามัคคีของ KDE, Gnome Shell, เหตุการณ์เสียงเตือนจะถูกจับโดย PulseAudio ต้องขอบคุณซึ่งเป็นโหลดโดยเริ่มต้นที่module-x11-bell
/usr/bin/start-pulseaudio-x11
และตัวอย่างเสียง PulseAudio จะเล่นเสียงบี๊บbell.ogg
โดยค่าเริ่มต้นจะว่างเปล่า นอกจากนี้ระดับเสียงกระดิ่งอาจถูกปิดเสียง
หากต้องการเปิดใช้งานชั่วคราวสำหรับเซสชันปัจจุบัน
xset b 100 # perhaps not needed, on my system it was 40 by default
pactl upload-sample /usr/share/sounds/ubuntu/stereo/bell.ogg bell.ogg
มีตัวอย่างที่เหมาะสมอื่น ๆ ที่คุณสามารถลองได้/usr/share/sounds
เช่นตรวจสอบตัวอย่างที่/usr/share/sounds/gnome/default/alerts/
โปรดทราบว่าbeep
โปรแกรมไม่จำเป็นจริงๆ แต่ถ้าติดตั้งแล้วจะใช้ PC Speaker มันเป็นวิธีเดียวที่ฉันสามารถค้นหาเพื่อเปิดใช้งาน buzzer ภายใต้ X:
sudo apt-get install beep
หากต้องการเปิดใช้งานโดยอัตโนมัติเมื่อบูตเพียงเพิ่มบรรทัดข้างต้นในของคุณ~/.profile
หรือทั้งระบบที่/etc/profile
เพื่อทดสอบ:
printf '\a'
เสียงเตือน!
beep
ฉวัดเฉวียน!
pcspkr
และbell.ogg
เป็นแนวทางที่เป็นอิสระ beep
พยายามส่งเสียงบี๊บโดยใช้วิธีการต่าง ๆ เช่นioctl(console_fd, KIOCSOUND, period)
ใช้pcspkr
(เสียงมาจากลำโพง PC บนเมนบอร์ด) ในขณะที่printf '\a'
วิธีการที่ใช้อาจทำงานได้โดยไม่ต้องใช้เท่านั้นbell.ogg
(เสียงมาจากลำโพงธรรมดา) วิธีที่สองอาจไม่ทำงานจนกว่าจะเริ่มให้บริการ pulseaudio และ / หรือxset b on
ทำงาน
pactl upload-sample ...
เป็นทองคำสำหรับฉัน วิธีกำหนดค่าการโหลดตัวอย่างเป็นการถาวรอีกครั้งคืออะไร
~/.profile
หรือทั้งระบบที่/etc/profile
load-sample bell.ogg /usr/share/sounds/ubuntu/stereo/bell.ogg
ใน/etc/pulseaudio/default.pa
.
ฉันพบปัญหานี้มาก่อน จากสิ่งที่ฉันจำได้ปัญหาก็คือเทอร์มินัลเบลล์พยายามส่งเสียงลำโพงคอมพิวเตอร์ภายใน (เหมือนในเดสก์ท็อปโรงเรียนเก่า) แต่แล็ปท็อปและคอมพิวเตอร์รุ่นใหม่บางรุ่นขาดสิ่งนี้ไป
ทางออกเดียวที่ฉันพบในขณะนั้นคือsudo apt-get install sox
และ
play -n synth <duration in seconds> sine <freq in Hz> vol <volume (0-1)>
เช่น
play -n synth 0.1 sine 880 vol 0.5
play -q -n synth 2 pluck C5
นอกจากนี้คุณยังสามารถมีโทนกีตาร์กล้าหาญมีความสุข: C5 เป็นบันทึก
ในที่สุดฉันก็พบวิธีแก้ปัญหาซึ่งไม่จำเป็นต้องalsamixer
มีตัวเลือก PC Beep ฉันคิดว่าฉันจำการเปลี่ยนแปลงทั้งหมดของฉันได้:
ไม่ใส่ข้อคิดเห็นต่อไปนี้ใน/etc/pulse/default.pa
:
load-sample-lazy x11-bell /usr/share/sounds/ubuntu/stereo/bell.ogg
load-module module-x11-bell sample=bell-windowing-system
ตามข้อผิดพลาดนี้ให้เรียกใช้pactl upload-sample /usr/share/sounds/ubuntu/stereo/bell.ogg bell.ogg
Connection failure: Connection refused pa_context_connect() failed: Connection refused
ให้ฉัน
Failed to open module "module-esound-protocol-unix": file not found
พ่น อาจจะไม่คุ้มค่าที่จะพูดคุยที่นี่ตั้งแต่ฉันใช้ 13.04 แม้ว่าฉันจะชอบที่จะสามารถตรวจสอบการแก้ปัญหาของคุณ
หากคุณมีลำโพงจริงเชื่อมต่อกับคอมพิวเตอร์และคุณไม่ได้ยินเสียงบี๊บอาจเป็นเพราะคุณกำลังใช้คอมพิว Compiz ใช้ pulseaudio ในการจับเสียงบี๊บและเล่นมันในขณะที่ metacity ข้ามการตั้งค่าปกติและใช้ libcanberra เพื่อเล่นเสียงบี๊บ ถ้ามันทำงานได้ดีกับ metacity และไม่ใช่ compiz ที่เป็นปัญหาของคุณมิฉะนั้นคำตอบที่ได้ก็คือ
เท่าที่ผมสามารถบอกได้ว่านี้เป็นข้อผิดพลาด: เสียงเตือนระบบหักใน Karmic แม้จะมีความพยายามที่กล้าหาญที่จะแก้ไขได้
modprobe pcsprk
(ในคอนโซล) หรือpactl upload-sample ...
ใน X11 และเสียงบี๊บที่น่ารำคาญก็กลับมาแล้ว :)
" ส่งเสียงเตือนจะทำงานเฉพาะในกรณีที่พีซีของคุณมี 'ลำโพง'แล็ปท็อป / อุปกรณ์ขนาดเล็กที่ทันสมัยหลายเครื่องไม่มี"
ลองเล่นเสียงแบบนี้: play xxxxx.wav
ฉันพบไฟล์ wav ที่ดีที่ดูเหมือนว่าจะสั้นและหวาน แต่คุณสามารถเลือกเองได้เช่นกัน ใช้งานได้สำหรับฉันเมื่อทุกอย่างล้มเหลว
อีกทางเลือกหนึ่ง - ตั้งค่า xterm / console เป็น "Visual Bell" เพื่อที่ว่าเมื่อมันจะส่งเสียงบี๊บหน้าต่างจะเปลี่ยนสีในช่วงเวลาสั้น ๆ
ฉันมีฟังก์ชั่นทุบตีที่เรียกว่าบี๊บเพื่อรับความสนใจของฉันเมื่อคำสั่งเสร็จสิ้น
beep () { while true; do echo -en '\a'; sleep 1; done }
และจะใช้วิธีนี้
longrun-command ; beep
อาจเป็นไปได้ว่าจะช้าไป แต่สำหรับผู้ชายในอนาคตที่ต้องการสิ่งนี้
printf '\x07'