it-swarm-vi.com

Làm thế nào để tôi làm cho loa pc của tôi phát ra tiếng bíp

Sử dụng bash, làm thế nào tôi có thể làm cho loa pc phát ra tiếng bíp?

Cái gì đó như echo 'beepsound' > /dev/pcspkr sẽ tốt.

185
Stefan

Tôi thường sử dụng tiện ích nhỏ beep được cài đặt trên nhiều hệ thống. Lệnh này sẽ thử các cách tiếp cận khác nhau để tạo ra âm thanh hệ thống.

Có 3 cách tạo âm thanh từ manpage beep:

  1. Phương pháp truyền thống để tạo ra tiếng bíp trong tập lệnh Shell là viết ASCII BEL (\007) ký tự đến đầu ra tiêu chuẩn, bằng lệnh Shell, chẳng hạn như

    echo -ne '\007'
    

    Điều này chỉ hoạt động nếu đầu ra tiêu chuẩn của Shell hiện đang được chuyển đến một thiết bị đầu cuối nào đó; nếu không, tiếng bíp sẽ không phát ra âm thanh và thậm chí có thể gây ra tham nhũng không mong muốn trong bất kỳ tệp nào mà đầu ra được hướng đến.

  2. Có nhiều cách khác để gây ra tiếng bíp. Một phương pháp đáng tin cậy hơn một chút là mở /dev/tty và gửi nhân vật BEL của bạn ở đó. Điều này rất mạnh đối với chuyển hướng I/O, nhưng vẫn thất bại trong trường hợp tập lệnh Shell muốn tạo tiếng bíp không có thiết bị đầu cuối điều khiển, ví dụ vì nó được chạy từ trình quản lý cửa sổ X.

  3. Cách tiếp cận thứ ba là kết nối với màn hình X của bạn và gửi cho nó lệnh chuông. Điều này không phụ thuộc vào thiết bị đầu cuối Unix, nhưng (tất nhiên) yêu cầu hiển thị X.

beep sẽ chỉ thử 3 phương thức này.

133
echox

Chỉ đơn giản là tiếng vang \a hoặc là \07 làm việc cho tôi.

$ echo -e "\a"

Điều này có thể sẽ yêu cầu mô đun kernel pcspkr được tải. Tôi chỉ thử nghiệm điều này trên RHEL, vì vậy YMMV.

CẬP NHẬT

Như Warren đã chỉ ra trong các bình luận, điều này có thể không hoạt động khi đăng nhập từ xa thông qua SSH. Cách giải quyết nhanh sẽ là chuyển hướng đầu ra sang bất kỳ thiết bị TTY nào (lý tưởng nhất là thiết bị không được sử dụng). Ví dụ.:

$ echo -en "\a" > /dev/tty5
78
Shawn Chin

LƯU Ý: Giải pháp này phát ra tiếng bíp từ loa , không phải bo mạch chủ .

ALSA đi kèm với loa kiểm tra , trình tạo âm kiểm tra loa dòng lệnh, có thể được sử dụng để tạo tiếng bíp:

$ speaker-test -t sine -f 1000 -l 1

Xem chủ đề diễn đàn Arch Linux này .

Tuy nhiên, thời lượng tiếng bíp sẽ tùy ý, nhưng có thể được kiểm soát như sau:

$ ( speaker-test -t sine -f 1000 )& pid=$! ; sleep 0.1s ; kill -9 $pid

Chúng ta có thể tiến thêm một bước và phát ra tiếng bíp với chức năng này:

_alarm() {
  ( \speaker-test --frequency $1 --test sine )&
  pid=$!
  \sleep 0.${2}s
  \kill -9 $pid
}

được gọi với các đối số tần số và thời lượng:

$ _alarm 400 200

Với ý nghĩ này, có thể tạo nhạc đơn giản với speaker-test. Xem tập lệnh Shell này .

76
Ryne Everett
tput bel

bởi vì terminfo định nghĩa bel

           Variable                       Cap-               TCap                  Description
            String                        name               Code

   bell                                   bel                bl                audible signal
                                                                               (bell) (P)
32
Winston Smith

Để sử dụng soundcard nếu sox được cài đặt và loa PC nếu không:

$ play -q -n synth 0.1 sin 880 || echo -e "\a"

sox có sẵn cho hầu hết các bản phát hành.

19
Alexander

Một số distro có các tiện ích dòng lệnh để đạt được điều này. Có lẽ bạn có thể cho chúng tôi biết bạn đang dùng bản phân phối nào hoặc tìm kiếm (ví dụ: emerge -s beep trong gentoo).

Vượt ra ngoài những tiện ích "có sẵn", bạn cũng có thể tạo một tập lệnh Perl phát ra tiếng bíp, tất cả những gì bạn cần làm là bao gồm:

<SomeCodeBefore>
print "\007";
<SomeCodeAfter>  

Nếu bạn cuối cùng nhận được 'tiếng bíp', hãy thử các cách sau:

#! /bin/sh 

beep -f 500 -l 700 
beep -f 480 -l 400 
beep -f 470 -l 250 
beep -f 530 -l 300 -D 100 
beep -f 500 -l 300 -D 100 
beep -f 500 -l 300 
beep -f 400 -l 600 
beep -f 300 -l 500 
beep -f 350 -l 700 
beep -f 250 -l 600
13
wormintrude

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

Thay vào đó, hãy thử phát một âm thanh:

$ play xxxxx.wav

Làm việc cho tôi, khi tất cả những thứ khác thất bại.

Người giới thiệu

4
Elliptical view

Thử

tiếng vang -n Ctrl+VCtrl+G

Nhược điểm là điều này sẽ chỉ hoạt động khi thiết bị đầu ra là một thiết bị đầu cuối, vì vậy nó có thể không hoạt động trong một công việc định kỳ, ví dụ. (Nhưng nếu bạn đã root, bạn có thể chuyển hướng đến /dev/console cho tiếng bíp ngay lập tức.)

2
codehead

Trên Linux, các công cụ như beep có thể sử dụng ioctl trên thiết bị console để phát ra âm thanh nhất định. Để cụ thể hơn, beep sẽ sử dụng KIOCSOUND ioctl, nhưng cũng có một KDMKTONE ioctl có thể được sử dụng để tạo âm thanh.

Theo tôi hiểu, cái trước bắt đầu một âm thanh kéo dài cho đến khi nó bị hủy rõ ràng, trong khi cái sau sẽ tạo ra tiếng bíp của thời lượng được xác định trước. Xem console_ioctl (4) trang man để biết chi tiết.

Vì vậy, nếu bạn không hài lòng với những gì beep, bạn có thể viết một vài dòng mã để truy cập trực tiếp các ioctls này. Giả sử bạn có toàn quyền truy cập vào /dev/console, có thể yêu cầu quyền root.

2
MvG

Trong một thiết bị đầu cuối, nhấn Ctrl+G và sau đó Enter

0
Hitesh Chechani