Latest web development tutorials

シェルの入力/出力のリダイレクト

ほとんどのUNIXシステムでは、あなたの端末入力からコマンドを受け入れ、出力は端末に返送される生成しました。 典型的には、標準的な入力と呼ばれるローカル入力から読み込みコマンドは、デフォルトでは、これはあなたの端末であることを起こります。 同様に、コマンドは通常、これはあなたの端末であり、デフォルトでは、標準出力に出力を書き込みます。

コマンドリストをリダイレクトし、次のとおりです。

コマンド 説明
コマンド>ファイル 出力をファイルにリダイレクトします。
コマンド<ファイル 入力をファイルにリダイレクトします。
コマンド>>ファイル 出力は、添付ファイルにリダイレクトします。
n>はファイル ファイルにリダイレクトn個のファイルのファイルディスクリプタ。
nは>>ファイル ファイルをリダイレクトするための追加の方法をファイルへのファイルディスクリプタn。
nは>&メートル 出力ファイルmおよびnはマージされます。
N <&M 入力ファイルmおよびnはマージされます。
<<タグ 入力として間の開始タグと終了タグタグタグの内容。

ファイルディスクリプタ0は、通常、標準入力(STDIN)であることに注意してください、1が標準出力(STDOUT)、2は標準エラー出力(STDERR)です。


出力のリダイレクト

達成するために特定の記号を挿入するには、コマンドの間により一般的にリダイレクトします。 具体的には、これらの記号は、次の構文に示されています:

command1 > file1

上記のコマンドは、ファイル1に格納されたコンテンツをCommand1]を実行して出力します。

ファイル1はすでに存在して、任意のコンテンツが新しいコンテンツによって置き換えられることに注意してください。 あなたはファイルの末尾に新しいコンテンツを追加したい場合は、>>演算子を使用します。

それはユーザーファイル(ユーザー)にコマンドの出力をリダイレクトします完了し、次のコマンドを実行します。

$ who > users

実行後、出力は指定したファイルへのデフォルトの標準出力デバイス(端末)からリダイレクトされているので、それは、端子の出力はありません。

あなたはファイルの内容を表示するには、catコマンドを使用することができます。

$ cat users
_mbsetupuser console  Oct 31 17:35 
tianqixin    console  Oct 31 17:35 
tianqixin    ttys000  Dec  1 11:33 

出力リダイレクションは、ファイルの内容を上書きし、次の例を参照してください。

$ echo "本教程:www.w3big.com" > users
$ cat users
本教程:www.w3big.com
$

あなたが上書きされたファイルの内容をたくない場合は、例えば、ファイルに追加>>使用することができます。

$ echo "本教程:www.w3big.com" >> users
$ cat users
本教程:www.w3big.com
本教程:www.w3big.com
$

入力のリダイレクト

そして、出力のリダイレクトとして、Unixのコマンドは、ファイルからの入力を取ることができ、構文は次のとおりです。

command1 < file1

このように、キーボードからの入力を取得するには、元の必要性は、コンテンツを読み取るためにコマンドファイルに転送されます。

注:シンボルよりも出力がリダイレクト大きい(>)、入力のリダイレクトは、(<)未満です。

そして、上記の例では、我々は次のコマンドを実行し、行のユーザーのファイルの数をカウントする必要があります。

$ wc -l users
       2 users

また、ユーザーに入力ファイルをリダイレクトすることができます。

$  wc -l < users
       2 

注:最初の例で、出力ファイル名になります;第二はしません、それだけで標準入力から読み込ま知っているので:上記の2つの例が異なっているの結果。

command1 < infile > outfile

ファイルから読み込むINFILE、Command1]を実行し、入力と出力の両方を交換してから、outfileに出力を書き込みます。

深さの説明をリダイレクト

通常の状況下では、それぞれのUnix / Linuxのコマンドを実行するには、3つのファイルを開きます:

  • 標準入力ファイル(stdin):0に標準入力ファイル記述子は、UNIXのデフォルトのプログラムは、標準入力からデータを読み込みます。
  • 標準出力ファイル(stdout):ファイルディスクリプタ1に標準出力、標準出力の出力データへのUnixのプログラムのデフォルト。
  • 標準エラー(stderrの):2に標準エラー出力ファイルディスクリプタは、Unixのプログラムは、標準エラー出力ストリームにエラーメッセージを書き込みます。

ファイルに標準出力デフォルトでは、コマンド>ファイルにリダイレクトすることで、コマンド<ファイルがファイルにリダイレクトSTDINます。

あなたはstderrをファイルにリダイレクトしたい場合は、書くことができます。

$ command 2 > file

あなたはファイルの標準エラー出力ファイルの末尾に追加したい場合は、書くことができます。

$ command 2 >> file

2標準エラーファイル(stderr)を表します。

あなたはファイルにリダイレクトstdoutとstderr後にマージしたい場合は、書くことができます。

$ command > file 2>&1

或者

$ command >> file 2>&1

あなたは標準入出力をリダイレクトしたい場合は、書くことができます。

$ command < file1 >file2

FILE1にリダイレクトコマンドコマンド標準入力、FILE2に標準出力をリダイレクトします。


ここではドキュメント

ここではドキュメントシェルは、対話型のシェルスクリプトやプログラムへの入力をリダイレクトするために使用される特殊なリダイレクション方式です。

次のようにその基本的な形式は次のとおりです。

command << delimiter
    document
delimiter

入力として、コマンド間の2つの区切り文字に送信されるコンテンツ(文書)の役割です。

注意:

  • 区切り文字を終了すると、トップグリッドの書き込みでなければならないスペースおよびタブインデントを含む任意の文字を持つことはできませんバックの前の文字のいずれかを使用することはできません。
  • 開始デリミタの前後の空白は無視されます。

トイレ-lコマンドによって、コマンド・ライン・コンピューティングここではドキュメント内の行数:

$ wc -l << EOF
    欢迎来到
    本教程
    www.w3big.com
EOF
3          # 输出结果为 3 行
$

また、ここではドキュメントには、例えば、スクリプトで使用することができます。

#!/bin/bash
# author:本教程
# url:www.w3big.com

cat << EOF
欢迎来到
本教程
www.w3big.com
EOF

上記のスクリプトの実装、出力:

欢迎来到
本教程
www.w3big.com

/ dev / nullファイル

コマンドを実行したいのですが、画面に出力を表示したくない場合は、/ dev / nullへ出力をリダイレクトすることができます。

$ command > /dev/null

あなたがファイルから読み取るしようとした場合、次に何を読み取ることができません;は/ dev / nullが、その内容は破棄されるように書かれている、特殊なファイルです。 しかし、を/ dev / nullファイルは、「出力を禁止する」効果として作用し、それにコマンドの出力をリダイレクトすることは非常に有用です。

あなたはstdoutとstderrを保護したい場合は、書くことができます。

$ command > /dev/null 2>&1

注:0は、標準入力(STDIN)、1が標準出力(STDOUT)、2は標準エラー出力(STDERR)です。