쉘 프로그래밍에 대한 책을 읽고 다음 명령이 동일하다는 것을 알고 있습니다. Mac에서는 경고음이 울리지 만 Ubuntu에서는 소리가 나지 않습니다.
$ echo $"\a" $ echo -e "\a" $
두 경우 모두 터미널에서 빈 줄을 표시합니다. 내 질문은 다음과 같습니다.
- 여기에
$"\a"
란 무엇입니까? 매개 변수 확장, 명령 대체 또는 기타 무엇입니까? - 왜
echo
는 매개 변수가 정의되지 않은 것처럼 빈 줄을 인쇄합니다 (예 :
$ echo $NONSENSE
어떤 줄에 빈 줄이 표시 되나요? 감사합니다.
답변
하지 마세요. Ubuntu에서 소리 내기 :
특정 터미널 에뮬레이터 가 소리를 피하거나 pcspkr
커널 모듈이 언로드 되었기 때문에 … 다른 터미널 에뮬레이터를 사용할 수 있습니다 (예 : 이전 xterm
). 삐 소리가납니다.
여기서
$"\a"
는 무엇입니까?
Bash 매뉴얼의 셸 확장 장 을 읽어보십시오. ANSI-C 인용 ( South Parker 에 의해 설명 됨).
echo가 빈 줄을 인쇄하는 이유
echo
명령 (자세히보기 echo (1) …)는 종종 bash 쉘 내장 이므로 (-n
) 확장 된 인수 (여기서는 벨 문자)와 줄 바꿈을 인쇄합니다. 하지만 터미널 에뮬레이터는 벨을 울리지 않습니다 (벨 문자는 제어 문자 이기 때문에 표시되지 않음 ).
BTW, Apple은 GPLv3 + 라이선스를 싫어한다는 소문이 있으므로 bash
a를 업그레이드 할 수 있습니다. >을 Apple 컴퓨터의 최신 버전 (예 : 2017 년 8 월 4.4)으로 변경합니다.
역사적인 접근 방식에 대해 tty에 대한 설명 을 읽을 수 있습니다. Unix의 터미널 에뮬레이터에 연결합니다. pty (7) 도 참조하세요.
$'...'
는 ' " 견적 제거 "라고 부르지 않았지만bash
설명서 ' 이름을 지정하지 않습니다.이 형식의 인용은 최소한ksh93
쉘이지만pdksh
가 아닙니다. 저는 그것이 ' POSIX 구문의 확장이라고 생각합니다.