read -rの意味は何ですか?


21

別の答えを理解するために:

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

最初のステップは、readコマンドのオプション-rの使用法を理解することです。

まず、単純に実行するだけで十分だと思った

man read

-rオプションの意味を調べるために、マニュアルページにはオプションの説明がまったく含まれていないことに気付いたので、いくつかのread -t、read -pの例があり、read -rがありませんでした。


読むべきマニュアルページがないと言っていますか?man readと入力すると、組み込みコマンドの長いリストが表示されます。私は私がここで見たものを入れている「読み取り/」を使用して検索さpastebin.com/raw.php?i=tZ1uUXrG
user610209

1
(少なくともbashに)組み込まれたシェルです-試すhelp readman bash
steeldriver

あなたのタイトルの質問については、読んでunix.stackexchange.com/questions/18886/...
ジル「SO-停止されて悪」

READ(1P)私のために存在します
...-ジェイソンウィル

回答:


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
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.