Beep trong shell script không hoạt động?


87

Tôi muốn sử dụng âm thanh tiếng bíp trong tập lệnh shell. Thật không may, không có phương pháp nào tôi tìm thấy thông qua Google làm việc cho tôi.

Tôi đã thử

echo -e '\a'

echo -ne '\007'

và lệnh beepsau khi tôi cài đặt nó thông qua apt.

Điều gì có thể là lý do?



Câu trả lời:


93

Đầu tiên chạy sudo modprobe pcspkrvà sau đó beepnên làm việc.

Lý do không phải là vì mặc định Ubuntu không còn tải trình điều khiển phần cứng tạo ra tiếng bíp.

Nếu điều này có hiệu quả với bạn thì để cho phép tải pcpkr chỉnh sửa vĩnh viễn /etc/modprobe.d/blacklist.conftệp (sử dụng gksudo geditcó lẽ) và nhận xét dòng có nội dung blacklist pcspkrnhư vậy:

# tiếng ồn xấu xí và ồn ào, làm mọi người lo lắng; điều này nên được thực hiện bởi một
# bs pulseaudio đẹp (Ubuntu: # 77010)
# danh sách đen

3
Nếu tôi nhận xét blacklist pcspkrtôi phải làm modprobe -r pcspkr && modprobe pcspkrđể làm cho nó hoạt động. Ngoài ra, tiếng bíp để làm việc không giống như tiếng chuông có thể nghe được để hoạt động và do đó, hãy yêu cầu Ubuntu.com/questions/22168/how-do-i-enable-the-terminal-bell vẫn nên mở.
daithib8

3
Điều này không hoạt động với tôi trong Ubuntu 14.
Cerin

90

Không phải là một fan hâm mộ của tiếng bíp máy tính, tôi sử dụng tiếng bíp từ một trong những âm thanh hệ thống với lệnh paplay của máy chủ pulseaudio đã cài đặt.

Trước tiên hãy tìm một âm thanh bạn thích (ví dụ: bạn có thể duyệt / usr / share / âm thanh cho một số âm thanh có sẵn) và tạo một tham chiếu đến nó

export BEEP=/usr/share/sounds/ubuntu/ringtones/Harmonics.ogg

Sau đó, có sẵn như là một lệnh

alias beep='paplay $BEEP'

Bây giờ chỉ cần chạy beepbất cứ khi nào bạn cần nó. Ví dụ: để thông báo cho bạn khi lệnh kết thúc:

find . | grep treasure ; beep

1
Bạn có thể làm cho nó phát âm thanh này khi ai đó chạy khôngecho -e '\a'
Flimm

Bạn có thể cần một số lệnh đọc trong một vòng lặp while hoặc một số thư viện khác có thể tạo ra các tổ hợp phím.
yuvilio

2
Đây là một giải pháp tuyệt vời! Bây giờ tôi có thể làm run-my-long-test-suite.sh; beepvà đọc stackoverflow cho đến khi hệ thống sẵn sàng.
jamesc 30/03/2015

3
Đẹp! Tôi sử dụng export BEEP=/usr/share/sounds/ubuntu/stereo/dialog-information.oggalias beep='paplay $BEEP --volume=32768'bây giờ, điều đó làm việc tốt cho tôi. (Lưu ý rằng bạn có thể ghi đè âm lượng bằng beepbí danh, ví dụ: phát beep --volume=15000ở mức âm lượng
-12dB

3
Phát các tệp ogg này có thể dẫn đến các đơn đặt hàng độ trễ lớn hơn so với tiếng bíp của loa PC bên trong. Không chỉ vậy độ trễ có vẻ rất cao. Tôi thừa nhận rằng hầu hết mọi người không quan tâm nhưng khi bạn cần thời gian thực hoặc phản ứng gần thời gian thực, loa PC có lẽ là lựa chọn tốt nhất cho phản hồi âm thanh.
H2ONaCl

21

Để khắc phục vấn đề này liên tục:

  • Chạy gconf-editorvà nếu có desktop | gnome | peripherals | keyboard | bell_modecài đặt thì thay đổi nó từ offthànhon
  • Chạy dconf-editorvà nếu có org | gnome | settings-daemon | peripherals | keyboard | bell-modecài đặt thì thay đổi nó từ offthànhon
  • Thêm pactl upload-sample /usr/share/sounds/gnome/default/alerts/glass.ogg bell.oggvào file ~/.xprofile(bạn cần gnome-control-center-datacho glass.ogg)
  • Thêm [ "$DISPLAY" ] && xset b 100vào tập tin~/.bashrc

Cách đơn giản nhất để kích hoạt giải pháp này là khởi động lại.

Hơn nữa, để thực hiện giải pháp này ngay lập tức cho một cửa sổ đầu cuối đã mở, hãy chạy pactllệnh và chạy xsetlệnh trong cửa sổ đầu cuối đang đề cập.


Tôi đặt pactl upload-samplelệnh trong một kịch bản shell, nhưng phương thức của bạn có tổ chức hơn. Cảm ơn!
JoBu1324

Nếu bạn đặt pactllệnh trong ~/.xprofileđó, nó sẽ được thực thi khi bắt đầu phiên GUI.
jdthood

Các dconf-editorphiên bản của bell-modekhung cảnh có vẻ là org.gnome.settings-daemon.peripherals.keyboard.
lgarzo

@lgarzo: Cảm ơn vì tiền boa. Tôi sẽ cập nhật câu trả lời.
jdthood

1
@ Hibou57: Đảm bảo bạn đã glass.oggcài đặt gói chứa
Janus Troelsen

21

Vì đây là một câu hỏi được đánh giá rất cao trên google, tôi sẽ thêm các bước tôi đã làm để bật lại tiếng bíp trong cả bảng điều khiển và X11:


Đối với Bảng điều khiển Linux ( CTRL+ ALT+ F1... F6):

Tại sao nó không hoạt động theo mặc định

Như đã trả lời , pcspkrtrình điều khiển hạt nhân cho Loa PC được đưa vào danh sách đen trong Ubuntu.

Tạm thời kích hoạt cho đến khi khởi động lại:

sudo modprobe pcspkr

Tự động bật khi khởi động:

sudo nano /etc/modprobe.d/blacklist.conf

(xóa hoặc nhận xét pcspkrdòng bằng cách thêm nó vào #)


Đối với thiết bị đầu cuối X11 (như mặc định gnome-terminal)

Tại sao nó không hoạt động theo mặc định

Trong X, giống như khi sử dụng Unity, KDE, Gnome Shell, các sự kiện tiếng bíp được PulseAudio ghi lại module-x11-bell, được tải theo mặc định tại /usr/bin/start-pulseaudio-x11. Và mẫu âm thanh PulseAudio phát trên tiếng bíp, bell.oggmặc định trống. Ngoài ra, âm lượng chuông có thể bị tắt.

Để tạm thời kích hoạt cho phiên hiện tại,

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

Có những mẫu phù hợp khác mà bạn có thể thử /usr/share/sounds, ví dụ kiểm tra những mẫu tại/usr/share/sounds/gnome/default/alerts/

Lưu ý rằng beepchương trình không thực sự cần thiết. Nhưng nếu được cài đặt, nó sử dụng Loa PC. Đó là cách duy nhất tôi có thể tìm thấy để kích hoạt bộ rung trong X:

sudo apt-get install beep

Để tự động bật khi khởi động, chỉ cần thêm các dòng trên trong ~/.profilehoặc toàn hệ thống tại/etc/profile


Để kiểm tra nó:

printf '\a'

Tiếng kêu bíp!

beep

Buzz!


Để tự động kích hoạt tiếng bíp của máy tính khi khởi động, bạn phải thực sự nhận xét dòng đã nói trong /etc/modprobe.d/blacklist.conf không bỏ qua nó (bạn muốn tắt danh sách đen, không phải cách khác).
z33k

1
cả hai giải pháp đều hoạt động trên Ubuntu 16.04 Lưu ý: pcspkrbell.ogglà các phương pháp độc lập. beepcố gắng phát ra tiếng bíp bằng nhiều cách tiếp cận khác nhau, ví dụ như ioctl(console_fd, KIOCSOUND, period)sử dụng pcspkr(âm thanh phát ra từ loa PC trên bo mạch chủ) trong khi printf '\a'phương pháp dựa trên có thể hoạt động mà không chỉ sử dụng bell.ogg(âm thanh phát ra từ loa thông thường). Phương thức thứ hai có thể không hoạt động cho đến khi dịch vụ pulseaudio được khởi động và / hoặc xset b onđược chạy
jfs

Đó pactl upload-sample ...là vàng cho tôi. Cách để cấu hình vĩnh viễn tải lại mẫu là gì?
ulidtko

@ulidtko: Chỉ cần thêm các dòng đó trong dòng của bạn ~/.profilehoặc toàn hệ thống tại/etc/profile
MestreLion

@MestreLion sai. load-sample bell.ogg /usr/share/sounds/ubuntu/stereo/bell.oggtrong /etc/pulseaudio/default.pa.
ulidtko

15

Tôi đã gặp vấn đề này trước đây. Từ những gì tôi nhớ, vấn đề là chuông thiết bị đầu cuối cố gắng đổ chuông loa máy tính bên trong (như trong máy tính để bàn cũ) nhưng máy tính xách tay và một số máy tính mới hơn lại thiếu một thứ như vậy.

Giải pháp duy nhất tôi tìm thấy lúc đó là sudo apt-get install sox

play -n synth <duration in seconds> sine <freq in Hz> vol <volume (0-1)>

ví dụ

 play -n synth 0.1 sine 880 vol 0.5

Hãy thử giải pháp của tôi - Tôi muốn biết liệu nó có hiệu quả với bạn không!
JoBu1324

bạn cũng có thể sử dụng bài kiểm tra loa cho việc này
Janus Troelsen

1
Bạn cũng có thể có một giai điệu gảy đàn guitar đẹp : play -q -n synth 2 pluck C5. C5 là ghi chú.
Pablo A

3

Cuối cùng tôi đã tìm thấy một giải pháp mà không cần alsamixerphải có tùy chọn Beep PC. Tôi nghĩ rằng tôi nhớ tất cả những thay đổi của tôi:

bỏ ghi chú sau /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

mỗi lỗi này , chạypactl upload-sample /usr/share/sounds/ubuntu/stereo/bell.ogg bell.ogg


Đã thử điều này, pactl đã cho tôi Connection failure: Connection refused pa_context_connect() failed: Connection refused.
YodaDaCoda

Có lẽ chủ đề này sẽ giúp - nếu bạn đã từng chạy pulseaudio với quyền root.
JoBu1324

Tôi đang có một vấn đề khác, thực sự. Pulseaudio ném Failed to open module "module-esound-protocol-unix": file not found. Có lẽ không đáng để thảo luận ở đây vì tôi đang chạy 13.04, mặc dù tôi rất thích có thể xác minh giải pháp của bạn.
YodaDaCoda

Đẹp, chỉ hơi khác dòng cho 15.04.
VRR

2

Nếu bạn có loa thực tế được kết nối với máy tính và bạn không nhận được tiếng bíp thì có thể là do bạn đang sử dụng compiz. Compiz đang dựa vào pulseaudio bắt tiếng bíp và phát chúng trong khi độ sáng bỏ qua thiết lập thông thường và sử dụng libcanStation để phát âm thanh tiếng bíp. Nếu nó hoạt động với độ sáng và không phải là vấn đề của bạn, thì nếu không, câu trả lời htorque đưa ra là không chính xác.



2

" Bíp chỉ hoạt động nếu PC của bạn có 'loa'. Nhiều máy tính xách tay / thiết bị nhỏ hiện đại không có".

Hãy thử phát một âm thanh như thế này: play xxxxx.wav Tôi tìm thấy một tệp wav đẹp có vẻ ngắn và ngọt ngào, nhưng bạn cũng có thể chọn một tệp của riêng mình. Làm việc cho tôi khi tất cả những thứ khác thất bại.


Cảm ơn: tredegar & hk_centos


1

Một cách tiếp cận khác - đặt xterm / console của bạn thành "Visual Bell" để khi nó phát ra tiếng bíp, cửa sổ chỉ cần đảo ngược màu sắc của nó trong một thời gian ngắn.

Tôi có một hàm bash gọi là tiếng bíp để thu hút sự chú ý của tôi sau khi lệnh kết thúc.

beep ()  { while true; do  echo -en '\a'; sleep 1; done }

Và nó được sử dụng theo cách này

longrun-command ; beep

0

Nó có thể là muộn NHƯNG, cho chàng trai trong tương lai tìm kiếm điều này:

printf '\x07'
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.