Bash를 사용하여 컴퓨터 스피커에서 신호음을 울리게 하려면 어떻게 해야 합니까?
이런 것이 echo 'beepsound' > /dev/pcspkr
좋을 것입니다.
답변1
beep
나는 보통 여러 시스템에 설치되는 작은 유틸리티를 사용합니다. 이 명령은 시스템 사운드를 생성하기 위해 다양한 방법을 시도합니다.
맨페이지에서 사운드를 생성하는 방법에는 3가지가 있습니다 beep
.
쉘 스크립트에서 경고음을 생성하는 전통적인 방법은
ASCII BEL
쉘 명령을 통해 표준 출력에 ( ) 문자를 쓰는 것입니다.\007
echo -ne '\007'
이는 호출 셸의 표준 출력이 현재 일종의 터미널 장치로 전달되는 경우에만 작동합니다. 그렇지 않은 경우 경고음이 울리지 않으며 출력이 전달되는 모든 파일이 불필요하게 손상될 수도 있습니다.
경고음을 발생시키는 다른 방법이 있습니다. 좀 더 안정적인 방법은 BEL 역할을 열고
/dev/tty
그곳으로 보내는 것입니다. 이는 I/O 리디렉션에 강력하지만 경고음을 생성하려는 쉘 스크립트에 제어 터미널이 없는 경우(예: X 창 관리자에서 실행되기 때문에) 여전히 실패합니다.세 번째 방법은 X 디스플레이에 연결하고 링 명령을 보내는 것입니다. 이는 Unix 터미널 장치에 의존하지 않지만 (물론) X 모니터가 필요합니다.
beep
간단히 이 3가지 방법을 시도해 보겠습니다.
답변2
참고: 이 해결 방법은 경고음이 울립니다.스피커,아니요마더보드.
ALSA가 함께 제공됩니다스피커 테스트, 경고음을 생성하는 데 사용할 수 있는 명령줄 스피커 테스트 톤 생성기:
$ speaker-test -t sine -f 1000 -l 1
바라보다이 아치 리눅스 포럼 주제.
그러나 신호음 지속 시간은 임의적이지만 다음과 같이 제어할 수 있습니다.
$ ( 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
. 바라보다이 쉘 스크립트.
답변3
그냥 에코 \a
하거나 \07
나를 위해 일하십시오.
$ echo -e "\a"
pcspkr
커널 모듈을 로드 해야 할 수도 있습니다 . 저는 이것을 RHEL에서만 테스트했으므로 YMMV입니다.
고쳐 쓰다
Warren이 의견에서 지적했듯이 SSH를 통해 원격으로 로그인하면 작동하지 않을 수 있습니다. 빠른 수정은 출력을 TTY 장치(가급적 사용하지 않는 장치)로 리디렉션하는 것입니다. 예를 들어:
$ echo -en "\a" > /dev/tty5
답변4
설치된 경우 사운드 카드를 사용 sox
하고 설치되지 않은 경우 PC 스피커를 사용하십시오.
$ play -q -n synth 0.1 sin 880 || echo -e "\a"
sox
대부분의 배포판에서 작동합니다.