ZSH + MacOS에서는 1024자를 초과하여 읽을 수 없습니다.

ZSH + MacOS에서는 1024자를 초과하여 읽을 수 없습니다.

MacOS의 ZSH에서 변수에 대한 긴 입력을 읽으려고 합니다.

    echo "URL: "
    read URL

입력은 항상 1024자로 잘립니다. 다른 문자를 입력하려고 하면 아무 일도 일어나지 않습니다.

  • 입력은 S3 서명 업로드 URL인 PostMan에서 복사/붙여넣기됩니다.

  • (붙여넣은 후) 끝 부분에서 일부 문자를 삭제하려고 하면 삭제할 문자 수만 수동으로 입력할 수 있습니다.

  • 해당 옵션을 사용해 보았지만 -n아무 소용이 없었습니다(아무것도 변수에 읽혀지지 않았습니다).

긴 입력을 읽는 방법은 무엇입니까? ~1,500자

답변1

read자체적으로는 터미널에서 바이트를 읽을 뿐이며 터미널이 해당 바이트를 읽는 방법을 제어할 수 없습니다. 그리고 터미널은 내가 기억하는 한 쉽게(또는 전혀?) 변경할 수 없는 제한된 회선 길이를 가지고 있습니다. 터미널의 줄 편집기도 매우 초보적이며 백스페이스 키만 지원하고 다른 편집 명령은 지원하지 않습니다.

사용vared반대로. 이는 다소 유사 read하지만(옵션이 다름) 터미널에서 읽도록 특별히 설계되었으며 zsh의 라인 편집기를 사용합니다. 이는 보다 사용자 친화적이며 줄 길이 제한이 없습니다.

URL=
vared -p "URL: " URL

vared항상 표준 입력이 아닌 터미널에서 읽으십시오. 파일이나 파이프에서 리디렉션된 입력 읽기를 지원하려면 다음 명령을 사용하여 표준 입력이 터미널인지 확인하세요.-t 상황..

URL=
if [[ -t 0 ]]; then
  vared -p "URL: " URL
else
  read -r URL
fi

관련 정보