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