gnu 화면에서 실행되는 bash 스크립트 내에서 오디오 벨을 울리는 방법은 무엇입니까?


19

다음과 같이 입력하면 TERM이 konsole-256color로 설정된 bash 쉘을 실행하는 화면 외부의 konsole 터미널 창에서 :

echo -n $ '\ a'또는
echo -n $ '\ eg'또는
./ringbell의 내용이있는 ./ringbell

#! / bin / bash
에코 -n $ '\ eg'; 에코 -n $ '\ a'

모두 구성된 오디오 벨이 꺼집니다. 스크린 세션 (my .screenrc도 용어를 konsole-256color로 설정)에 들어가면 위의 세 명령 중 두 번째 명령 (echo -n $ '\ eg') 만 오디오 벨이 들립니다. 스크립트를 수정해야합니까, 아니면 화면에 문제가 있습니까?

내가 가지고있는 화면 패키지의 우분투 버전은 4.1.0 ~ 20120320gitdb59704-9입니다.


1
나는 실제로 Keith의 대답을 선호하지만 이 질문을 참조하십시오 .
Franklin Yu

답변:


25

메모리에서 Ctrl-G는 벨 문자이므로 두 번째 문자가 작동하는 이유입니다. 그러나 Ctrl-A를 명령 코드로 사용하므로 어떤 문자를 받아 들일지에 대한 화면이 까다로울 수 있습니다.

이 시도

#!/bin/sh
# Ring the terminal bell
# echo "\a" # does not work in some shells
tput bel

나는 이것을 rosettacode 에서 찾았다 .


화면 안팎에서 작동하지 않습니다. infocmp를 사용하면 TERM konsole-256color에 대해 벨 기능이 정의되지 않았으므로 이것이 의미가 있음을 보여줍니다. 화면 terminfo 항목은 다음을 정의하지만 t -t 화면도 작동하지 않습니다.
Bob

1
더 많은 테스트를 한 후에 -t screen bel이 작동합니다. 화면 내에서 화면을 실행 중이고 외부 화면에 vbell이 해제되어있어 초기 테스트에 실패했습니다. 팁 주셔서 감사합니다.
Bob

0

최고의 솔루션 : printf '\a'

printf내장 쉘 대부분이 잘 작동 printf하고 Linux / Mac 시스템과 동등한 버전의 실행 파일이 설치되어 있기 때문 입니다.

다른 옵션 : curses를 설치 한 경우 다음을 사용할 수도 있습니다. tput bel 최신 버전의 bash를 사용하는 경우 다음을 사용할 수 있습니다.echo -n '\a'

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.