シェルは標準入力、標準出力および標準エラー出力の3つのストリームを制御することができます。
デフォルトで標準入力の入力元はキーボード、標準出力と標準エラー出力(エラーメッセージ)の出力先はディスプレイ。
●リダイレクト
入力元や出力先を変更できます。リダイレクトを使うには「>」や「<」などのリダイレクト演算子と、ファイルディスクリプタを組合せた記号を用います。0と1のファイルディスクリプタは省略可能です。
記号
・< 標準入力の入力元を指定(0<と同義)
・<< 標準入力の入力元を指定し、終了文字まで入力(0<<と同義)
・> 標準出力の出力先を指定(1>と同義)
・>> 標準出力の出力先を指定し、出力先に追記(1>>と同義)
・2> 標準エラー出力の出力先を指定
・2>>標準エラー出力の出力先を指定し、出力先に追記
・>&2 標準出力の出力先を標準エラー出力の出力先と同じにする(1>&2と同義)
・2>&1 標準エラー出力の出力先を標準出力の出力先と同じにする
※「>(1>)」
指定したファイルが存在しない場合はファイルが新規作成されますが、指定したファイルが既に存在する場合は「>」「1>」はファイルを上書きします。
※「>」「>>」「2>」「2>>」
指定したファイルが存在しない場合はどちらもファイルが新規作成されますが、指定したファイルが既に存在する場合は「>」、「2>」はファイルを上書きし、「>>」、「2>>」はファイルの最後尾に追記
●標準出力に出力されたコマンドの実行結果を、別のコマンドの標準入力に渡すにはパイプ(|)を利用
●trコマンドは変換対象を標準入力からのみ受け付けます。つまり、変換・削除したい文字列が記載されているファイルをコマンドの引数として指定することが出来ません。そのため、設問のようにリダイレクト(<)を使用してtrの標準入力にファイルの内容を渡す。
●catコマンドの引数にファイルを複数指定すると、ファイルを連結して出力します。ファイル名が指定されない場合、または「-(ハイフン)」が指定された場合は標準入力から受け取ったデータを標準出力に表示。
入力ファイルを引数に指定しない場合は、キーボード(デフォルトの標準入力元)から入力した内容を、エンターキーを押すたびに標準出力に出力。
※catコマンドはファイルを引数に指定しない場合は、標準入力(デフォルトはキーボード)からの入力をエンターキーを押すたびに標準出力に出力します。catコマンドを終了するにはCtrl+cキーなどを使用
●teeコマンド
標準入力の内容を、まさにTの字のように、標準出力先(デフォルトはディスプレイ)とファイルの双方に出力するコマンド。
コマンド | tee [-a] ファイル
ファイルに追記する場合は「-a」オプションを使用します。
teeコマンドは通常、パイプ(|)と共に使用。パイプを使用して、コマンドの標準出力をteeコマンドの標準入力に渡します。
●dmesgコマンド
起動時に出力されたメッセージを表示する。出力内容が多いので、そのまま出力すると内容が把握しきれない場合があります。lessコマンドに出力内容を送ればページごとに確認できます。
●コマンドが出力する全てのメッセージを破棄したい(ディスプレイに表示させたくない)
コマンド > /dev/null 2>&1
「/dev/null」は入力された全てのデータを消すという特殊なファイル
●標準入力から渡された文字列を、指定のコマンドの引数として実行するコマンドはxargsです。
xargsコマンドの標準入力に文字列を渡すと、xargsコマンドで指定したコマンドがそれらの文字列を引数として実行されます