it-swarm-ko.tech

PC 스피커에서 신호음을 내려면 어떻게합니까

Bash를 사용하여 어떻게 PC 스피커에서 경고음을 낼 수 있습니까?

echo 'beepsound' > /dev/pcspkr와 같은 것이 좋을 것입니다.

185
Stefan

나는 보통 많은 시스템에 설치된 작은 유틸리티 beep를 사용합니다. 이 명령은 시스템 사운드를 만들기 위해 다른 접근 방식을 시도합니다.

beep 맨 페이지에서 소리를 생성하는 방법은 3 가지가 있습니다.

  1. 쉘 스크립트에서 경고음을 생성하는 전통적인 방법은 ASCII BEL (\007) 문자를 표준 출력으로, 다음과 같은 Shell 명령을 사용합니다.

    echo -ne '\007'
    

    이것은 호출 쉘의 표준 출력이 현재 일종의 터미널 장치로 지정된 경우에만 작동합니다. 그렇지 않으면 신호음이 들리지 않으며 출력이 지정된 파일에 원치 않는 손상이 발생할 수도 있습니다.

  2. 경고음을내는 다른 방법이 있습니다. 약간 더 안정적인 방법은 /dev/tty하고 거기에 BEL 캐릭터를 보내십시오. 이는 I/O 리디렉션에 대해 강력하지만 경고음을 생성하려는 Shell 스크립트에 제어 터미널이없는 경우 (예 : X 윈도우 관리자에서 실행되기 때문에) 여전히 실패합니다.

  3. 세 번째 방법은 X 디스플레이에 연결하여 종 명령을 보내는 것입니다. 이것은 유닉스 터미널 장치에 의존하지 않지만 (물론) X 디스플레이가 필요합니다.

beep은이 3 가지 방법을 시도합니다.

133
echox

단순히 에코를 \a 또는 \07는 나를 위해 일합니다.

$ echo -e "\a"

아마도 pcspkr 커널 모듈을로드해야 할 것입니다. 나는 이것을 RHEL에서만 테스트 했으므로 YMMV.

최신 정보

Warren이 의견에서 지적했듯이 SSH를 통해 원격으로 로그인하면 작동하지 않을 수 있습니다. 빠른 해결 방법은 출력을 모든 TTY 장치 (이상적으로 사용되지 않는 장치)로 리디렉션하는 것입니다. 예 :

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

참고 :이 솔루션은 motherboard가 아니라 speakers에서 경고음을냅니다.

ALSA는 명령 줄 스피커 테스트 톤 제너레이터 인 speaker-test 와 함께 제공되며 경고음을 생성하는 데 사용할 수 있습니다.

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

이 Arch Linux 포럼 스레드 를 참조하십시오.

그러나 경고음 지속 시간은 임의적이지만 다음과 같이 제어 할 수 있습니다.

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

한 걸음 더 나아가이 기능으로 경고음을 출력 할 수 있습니다 :

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

빈도 및 기간 인수와 함께 호출됩니다.

$ _alarm 400 200

이를 염두에두고 speaker-test. this Shell script 를 참조하십시오.

76
Ryne Everett
tput bel

terminfobel

           Variable                       Cap-               TCap                  Description
            String                        name               Code

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

sox가 설치된 경우 사운드 카드를 사용하고 그렇지 않은 경우 PC 스피커 :

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

sox은 (는) 대부분의 배포판에서 사용할 수 있습니다.

19
Alexander

일부 배포판에는이를 수행하기위한 명령 줄 유틸리티가 있습니다. 어떤 배포판을 찾고 있는지 또는 검색하고 있는지 알려 주실 수 있습니다 (예 : emerge -s beep 젠투에서).

"사용 가능한"유틸리티를 넘어서, 경고음을내는 Perl 스크립트를 만들 수도 있습니다.

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

'삐'소리가 나면 다음을 시도하십시오.

#! /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

" Beep에는 PC에"스피커 "가있는 경우에만 작동합니다. 많은 최신 랩톱/소형 장치에는 없습니다." - tredegar .

대신 소리를 재생 해보십시오.

$ play xxxxx.wav

다른 모든 것이 실패했을 때 나를 위해 일했습니다.

참고 문헌

4
Elliptical view

시험

에코 -n Ctrl+VCtrl+G

단점은 출력 장치가 터미널 일 때만 작동하므로 크론 작업에서는 작동하지 않을 수 있다는 것입니다. (그러나 루트 사용자라면 /dev/console 즉시 경고음이 울림.)

2
codehead

Linux에서 beep 와 같은 도구는 콘솔 장치에서 ioctl을 사용하여 지정된 소리를 낼 수 있습니다. 보다 구체적으로, beepKIOCSOUND ioctl을 사용하지만 사운드를 생성하는 데 사용할 수있는 KDMKTONE ioctl도 있습니다.

내가 이해하는 바와 같이, 전자는 명시 적으로 취소 될 때까지 지속되는 사운드를 시작하지만 후자는 미리 결정된 지속 시간의 경고음을 생성합니다. 자세한 내용은 console_ioctl (4) 매뉴얼 페이지 를 참조하십시오.

따라서 beep가하는 일에 만족하지 않으면 몇 줄의 코드를 작성하여 이러한 ioctl에 직접 액세스 할 수 있습니다. /dev/console에 대한 전체 액세스 권한이 있다고 가정하면 루트 권한이 필요할 수 있습니다.

2
MvG

터미널에서 Ctrl+G 그리고 Enter

0
Hitesh Chechani