रीड-आर का अर्थ क्या है?


21

एक और जवाब समझने के लिए:

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

पहला चरण रीड कमांड के विकल्प -r के उपयोग को समझना है।

पहले, मैंने सोचा, यह केवल निष्पादित करने के लिए पर्याप्त होगा

man read

-r विकल्प का अर्थ देखने के लिए, लेकिन मैंने महसूस किया कि मैन पेज में ऑप्शन के लिए कोई स्पष्टीकरण नहीं है, इसलिए मैंने इसके लिए गुगली की, इसमें कुछ रीड-इन, रीड -पी उदाहरण मिले लेकिन कोई रीड-आर नहीं मिला।


क्या आप कह रहे हैं कि पढ़ने के लिए कोई मैन पेज नहीं है? अगर मैं टाइप मैन पढ़ता हूं तो मुझे कमांड में निर्मित बैश की एक लंबी सूची मिलती है। मैंने खोजा '/ read' का उपयोग करके मैंने जो कुछ देखा है उसे मैंने यहां pastebin.com/raw.php?i=tZ1uUXrG
user610209

1
यह एक शेल है जिसे कम से कम (बाश में) बनाया गया है - कोशिश करें help readयाman bash
Steeldriver

अपने शीर्षक प्रश्न के बारे में, unix.stackexchange.com/questions/18886/…
गिल्स

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"
ग्लेन जैकमैन

@glennjackman यह बहुत अच्छा है, अगर आप str="a` and then hit Enter before pasting in the rest of the command starting with b` टाइप करते हैं तो यह और भी अधिक आश्चर्यजनक है ।
एरिक

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
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.