busybox의 sh에서 지원하는 특별 프롬프트는 무엇입니까?

busybox의 sh에서 지원하는 특별 프롬프트는 무엇입니까?

PS1에서 시간 알림을 설정하고 싶습니다. 그러나 busybox가 어떤 기호를 지원하는지에 대한 문서는 없습니다.

아는 사람 있나요? 그게 내가 아는 전부 야.

PS1='\u@\h: \w \$'

답변1

BusyBox에는 ash와 hush라는 두 개의 쉘이 있습니다. 어떤 것이 있는지 확인하려면 다음을 실행하세요 type chdir. ash에는 내장 함수(동의어 포함 cd)가 있지만 hush에는 없습니다. 둘 다 선택적 프롬프트 확장 기능을 가지고 있습니다. Ash는 ASH_EXPAND_PRMT컴파일 타임에 기능을 활성화하여 활성화되지만 Hush에는 FEATURE_EDITING_FANCY_PROMPT.

이 기능이 있으면 ash에서 값이 큰 PS1따옴표로 묶인 문자열처럼 확장되고 구조도 확장됩니다 .$foo$(command)`command`

일부 백슬래시 이스케이프가 처리됩니다(대체 후 재로). 그들은 bash의 하위 집합입니다.

  • \!: 행 기록 개수
  • \a: 벨
  • \b: 백스페이스 키
  • \e, \E: 탈출하다
  • \f: 페이지 변경
  • \h: CPU 이름
  • \n: 새로운 팀
  • \r: 입력하다
  • \t: 라벨
  • \u:사용자 이름(만 포함 FEATURE_GETUSERNAME_AND_HOMEDIR)
  • \v:세로 탭 문자
  • \w:현재 디렉토리, 홈 디렉토리를 나타내는 밴드 포함 ~(밴드만 포함 FEATURE_GETUSERNAME_AND_HOMEDIR)
  • \W:현재 디렉토리(축약되지 않음)
  • \xHH또는 \XHHHH가 두 개의 16진수 숫자인 경우: 16진수 코드로 지정된 문자
  • \[…\]: 포함된 텍스트는 너비 계산 목적으로 계산되지 않습니다.

(소스코드를 보면 에서 이런 일이 발생합니다 parse_and_put_prompt. libbb/lineedit.c)

관련 정보