BELL 캐릭터의 메커니즘 ' \ a '?

쉘 프로그래밍에 대한 책을 읽고 다음 명령이 동일하다는 것을 알고 있습니다. Mac에서는 경고음이 울리지 만 Ubuntu에서는 소리가 나지 않습니다.

$ echo $"\a" $ echo -e "\a" $ 

두 경우 모두 터미널에서 빈 줄을 표시합니다. 내 질문은 다음과 같습니다.

  1. 여기에 $"\a" 란 무엇입니까? 매개 변수 확장, 명령 대체 또는 기타 무엇입니까?
  2. echo는 매개 변수가 정의되지 않은 것처럼 빈 줄을 인쇄합니다 (예 :

$ echo $NONSENSE 어떤 줄에 빈 줄이 표시 되나요? 감사합니다.

답변

하지 마세요. Ubuntu에서 소리 내기 :

특정 터미널 에뮬레이터 가 소리를 피하거나 pcspkr 커널 모듈이 언로드 되었기 때문에 … 다른 터미널 에뮬레이터를 사용할 수 있습니다 (예 : 이전 xterm). 삐 소리가납니다.

여기서 $"\a"는 무엇입니까?

Bash 매뉴얼의 셸 확장 장 을 읽어보십시오. ANSI-C 인용 ( South Parker 에 의해 설명 됨).

echo가 빈 줄을 인쇄하는 이유

echo 명령 (자세히보기 echo (1) …)는 종종 bash 쉘 내장 이므로 (-n) 확장 된 인수 (여기서는 벨 문자)와 줄 바꿈을 인쇄합니다. 하지만 터미널 에뮬레이터는 벨을 울리지 않습니다 (벨 문자는 제어 문자 이기 때문에 표시되지 않음 ).

BTW, Apple은 GPLv3 + 라이선스를 싫어한다는 소문이 있으므로 bash 을 Apple 컴퓨터의 최신 버전 (예 : 2017 년 8 월 4.4)으로 변경합니다.

역사적인 접근 방식에 대해 tty에 대한 설명 을 읽을 수 있습니다. Unix의 터미널 에뮬레이터에 연결합니다. pty (7) 도 참조하세요.

댓글

  • ' 집중적으로 정보를 제공합니다. 감사합니다! 🙂
  • $'...'는 ' " 견적 제거 "라고 부르지 않았지만 bash 설명서 ' 이름을 지정하지 않습니다.이 형식의 인용은 최소한 ksh93 쉘이지만 pdksh가 아닙니다. 저는 그것이 ' POSIX 구문의 확장이라고 생각합니다.
  • Kusalananda 제 생각에 당신이 옳다고 생각합니다. 구문은 ASCI-C 인용이라고합니다. gnu.org/software/bash/manual/html_node/ANSI_002dC-Quoting.html
  • @SouthParker 아, 그거 '의 이름입니다. 기억하도록 도와 주셔서 감사합니다!

답글 남기기

이메일 주소를 발행하지 않을 것입니다. 필수 항목은 *(으)로 표시합니다