![「<<」リダイレクトの用途は何ですか? [コピー]](https://linux33.com/image/58807/%E3%80%8C%26lt%3B%26lt%3B%E3%80%8D%E3%83%AA%E3%83%80%E3%82%A4%E3%83%AC%E3%82%AF%E3%83%88%E3%81%AE%E7%94%A8%E9%80%94%E3%81%AF%E4%BD%95%E3%81%A7%E3%81%99%E3%81%8B%EF%BC%9F%20%5B%E3%82%B3%E3%83%94%E3%83%BC%5D.png)
<<
よく理解できないので、リダイレクトの例を探しています。私が知っているのは、<
標準入力として使用する指定されたファイルの内容を送信することです。たとえば、次のようになります。
cat < file.txt
しかし、私はそれが何を意味するのか理解していません<<
。 「次のテキスト行を標準入力として受け入れます」という説明を見ましたが、まだ混乱しています。
答え1
これにより、スクリプトに入力するコマンドテキストを外部ファイルではなくスクリプト自体に含めることができます。したがって、他のファイルからリダイレクトするのではなく、スクリプトと入力データを含む単一のファイルに入力を配置できます。
これは、シェルスクリプトをawk、Perl、または他のスクリプト言語と混在させる場合に特に便利です。
<<
リダイレクトの後の単語がリダイレクトの終わりと見なされることは注目に値します。
簡単な例:
#!/bin/sh
cat << EOF > output.txt
line 1
line 2
line 3
EOF
echo done
output.txt
これにより、次の内容を含むファイルが作成されます。
line 1
line 2
line 3
done
スクリプトは端末に印刷されます。
答え2
ここでは文書と呼ばれます。
これは、コマンドシェルでファイルの一部を定義したい場合に主に使用されます。つまり
cat <<foobarbaz > /tmp/file.txt
hello
world
$$
foobarbaz
/tmp/file.txt
ファイルを埋める
hello
world
1234
1234がプロセスIDであると仮定します。
答え3
この演算子は、次の行のテキストを標準入力として使用するhereドキュメントを実装します。ただし、コマンドラインではこのリダイレクタを使用しません。なぜなら、次の行は標準入力なので、リダイレクトする必要がないからです。代わりに、このコマンドをスクリプトの一部として使用してコマンドにデータを渡すことができます。ほとんどのリダイレクト演算子とは異なり、コードの直後のテキストはファイル<<
名ではなく、末尾を表示するために使用される単語です。入力する。たとえば、入力すると、文字列のみを含む行(文字列の後にスペースも含まれていない)が表示されるまで入力が許可されますsomeprog << EOF
。someprog
EOF
注:コマンドラインから入力を受け取る一部のプログラムでは、を押して入力を終了する必要がありますCtrl+D
。このキーストロークは、ASCII(American Standard Code for Information Interchange)を使用したファイルの終わりの表示に対応します。