read -r의 의미는 무엇입니까?


21

다른 답변을 이해하기 위해 :

find / -type d -print0 | while read -r -d ''; do ls -ltr "$dir" | sed '$!d'

첫 번째 단계는 read 명령의 -r 옵션 사용법을 이해하는 것입니다.

먼저, 단순히 실행하는 것으로 충분하다고 생각했습니다.

man read

-r 옵션의 의미를 찾으려면 man 페이지에 옵션에 대한 설명이 전혀 없다는 것을 알았으므로 read-t, read -p 예제가 있지만 read -r은 없습니다.


읽을 매뉴얼 페이지가 없다고 말하고 있습니까? man read를 입력하면 긴 Bash 명령이 내장되어 있습니다. '/ read'를 사용하여 검색했습니다. 여기에 본 내용을 넣었습니다. pastebin.com/raw.php?i=tZ1uUXrG
user610209

1
내장 쉘 (적어도 bash에서) help readman bash
-try


READ(1P)나를 위해 존재합니다 ...
Jasonwryan

답변:


27

독립형 read명령 은 없습니다 : 대신, 쉘이 내장되어 있으며 다음과 같은 매뉴얼 페이지에 설명되어 있습니다 bash.

read [-ers] [-a aname] [-d delim] [-i text] [-n nchars] [-N nchars] [-p
prompt] [-t timeout] [-u fd] [name ...]
[...]
       -r     Backslash does not act as an escape character.  The back‐
              slash is considered to be part of the line.  In  particu‐
              lar,  a  backslash-newline pair may not be used as a line
              continuation.

요약하면, read일반적으로 후행 백 슬래시 문자를 사용하여 긴 줄을 끊을 수 있으며 일반적으로 이러한 줄을 재구성합니다. 이 약간 놀라운 동작은을 사용하여 비활성화 할 수 있습니다 -r.


10
데모 :str="a\bc"; read x <<< "$str"; read -r y <<< "$str"; echo "$x"; echo "$y"
glenn jackman 12

@glennjackman 훌륭합니다 str="a` and then hit Enter before pasting in the rest of the command starting with . b 를 입력하면 훨씬 더 충격적 입니다.
ErikE

1

-r옵션은 백 슬래시 이스케이프가 해석되는 것을 방지합니다 . 예를 들면 다음과 같습니다.

이 내용의 파일이 있다고 가정하십시오.

ngRTM6hNqgziZcqCcEJN7bHAP9a1GeMs\
Ni3EAX1qvogWpRIPE3oagJL6nwl\QQW9y
bjJHyaVBrUcyZOY5U4h9QHnpEPqg\\\\\\\\\Q9Fk
iNOvAyBTAcN5n1uwR4GvRfAGUbPWiXax\n
cqGPPStH3gaWolrfVAlMtoWiSuLa7GzQ\n\n\n
EnO04N1nEkpWbfXRxrtYNqCZDpF\trQIXS
$ while read line; do echo $line; done < tempfile
ngRTM6hNqgziZcqCcEJN7bHAP9a1GeMsNi3EAX1qvogWpRIPE3oagJL6nwlQQW9y
bjJHyaVBrUcyZOY5U4h9QHnpEPqg\\\\Q9Fk
iNOvAyBTAcN5n1uwR4GvRfAGUbPWiXaxn
cqGPPStH3gaWolrfVAlMtoWiSuLa7GzQnnn
EnO04N1nEkpWbfXRxrtYNqCZDpFtrQIXS
$ while read -r line; do echo $line; done < tempfile
ngRTM6hNqgziZcqCcEJN7bHAP9a1GeMs\
Ni3EAX1qvogWpRIPE3oagJL6nwl\QQW9y
bjJHyaVBrUcyZOY5U4h9QHnpEPqg\\\\\\\\\Q9Fk
iNOvAyBTAcN5n1uwR4GvRfAGUbPWiXax\n
cqGPPStH3gaWolrfVAlMtoWiSuLa7GzQ\n\n\n
EnO04N1nEkpWbfXRxrtYNqCZDpF\trQIXS
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.