-e를 읽는 대신 POSIX 쉘이 있습니까? [복사]

-e를 읽는 대신 POSIX 쉘이 있습니까? [복사]

범용(POSIX) 셸에서 효과를 얻는 방법 read -e(줄 편집을 활성화 readline하고 사용 가능하게 하여) ? bash나는 이 명령 때문에 POSIX 호환성을 잃고 싶지 않습니다.

답변1

readlineGNU 프로젝트입니다( 로 개발됨 bash). BSD libedit와 같은 다른 대안이 있으며 모든 POSIX 셸에는 셸별 또는 vi적어도 하나의 편집 모드(POSIX에서 지정한 유일한 편집 모드, 대부분 emacs모드도 지원하지만)를 구현하는 라이브러리 기반의 자체 라인 편집기가 있습니다. POSIX는 RMS 개체를 지정하지 않습니다)).

그러나 POSIX는 셸 명령줄에 대한 줄 편집 모드만 지정하고 read.

ksh93그러나 이를 지원합니다 read(단, stdin 및 stderr이 터미널 장치에 있는 경우). 여기에서 다음을 수행할 수 있습니다.

set -o emacs
IFS= read -r 'line?prompt: '

이에 상응하는 것은 (변수 편집기) 내장입니다 zsh:vared

line=; vared -p 'prompt: ' line

이는 기록 처리와 키 바인딩 및 마감의 전체 사용자 정의 기능을 갖춘 가장 풍부한 기능을 제공합니다.

read -e구체적 으로 말하세요 bash.

IFS= read -rep 'prompt: ' variable

POSIX에 해당하는 것은 없습니다. POSIXly에서는 (POSIX에서 지정한 대로) 임시 파일 편집을 시작 vi하고 해당 파일의 내용을 변수로 읽을 수 있습니다.

zsh또는 // bash또는 libreadline 또는 (support로 구축되었다고 가정 ) 주변의 다른 래퍼 중 하나의 가용성을 찾아 사용할 수 있는 경우 해당 래퍼 중 하나를 사용하여 줄을 읽거나 사용할 수 없는 경우 ksh93으로 되돌릴 수 있습니다.rlwrapsocatreadlinereadvi

아니면 그걸 이용하세요LE이 유사한 Q&A에서 라인 편집기 기능을 확인하세요.비슷한 제한된 줄 편집기를 구현합니다 emacs.

답변2

POSIX는 (백슬래시 읽기 가능) read만 지원합니다 . -r나중에 구문 분석되는 파일에 대한 편집기를 시작하지 않는 한 사용자 입력을 요청하고 명령줄과 같은 편집을 제공할 수 있는 방법이 없습니다.

관련 정보