標準入出力とパイプ


Linuxサーバー管理者の技術を2日で学べる「初心者向けリナックスセミナー」
30日掛かって覚えるプロの技術を、たった2日間で学習できます。
リナックスマスター2日間集中セミナー【CentOS7.1版】
 (今すぐ↑をクリックしてください。)

■標準入出力
Linuxは、キーボードからの入力、ディスプレイへの出力もファイルの読み出し、
書き込みと同様に扱います。
このような、データの入出力に伴うデータの流れを「ストリーム」と言います。

Linuxには、データをストリームとして扱うために、次の3つの基本インターフェースがあります。

-----------------------------------------
番号  入出力名     デフォルト
-----------------------------------------
0   標準入力     キーボード
1   標準出力     画面(端末)
2   標準エラー出力  画面(端末)
-----------------------------------------

標準入力はプログラムへの入力ストリームになり、デフォルトはキーボードになります。

標準出力プログラムからの出力ストリームで、デフォルトは画面(端末)になります。

標準エラー出力は、プログラムの正常動作とは関係のないエラーメッセージなどの
出力ストリームでデフォルトは画面(端末)になります。

これら標準入出力は、自在に切り替える事ができるので、
同じプログラムでも様々な動作をさせる事が出来ます。

■パイプ
パイプは、コマンドやプログラムの出力結果を、別のコマンドやプログラムの入力に
渡す事ができます。
パイプを使ってコマンドを組み合わせて実行することで、複雑な処理を行なうことができます。

パイプは記号で「|」で表し、コマンドの標準出力を次のコマンドの標準入力に渡します。

次の例では、lsコマンドの実行結果をtailコマンドの標準入力に渡しています。

--------------------------------
$ ls -lrt /var/log | tail -n 15
--------------------------------

上の例では「ls -lrt」の結果をさらに「tail -n 15」を実行し、
表示数を古いものから15行だけ表示するようにしています。

また、別の例として下記を実行して下さい。

--------------------------------
$ dmesg | less
--------------------------------

dmesgコマンドは、Linux起動時のカーネルメッセージを出力するコマンドです。
上記の例ではdmesgコマンドの出力をlessコマンドへ渡しています。

dmesgコマンドは単体で実行すると出力が多すぎて画面に収まらない為、
lessコマンドを介して1画面ずつ表示させるようにしています。

コマンドの実行結果を画面に表示しつつ、ファイルにも保存したい場合は、
パイプとteeコマンドを使用します。

teeコマンドは、標準入力から読み込み、それをファイルと標準出力へT字型に分岐させます。
つまり、実行結果をファイルに書き込みつつ、次のコマンドへ実行結果を渡す事が出来ます。

---------------------------------------------------
$ ls -lrt /var/log | tee ls_log.txt | tail -n 15
---------------------------------------------------

上記の例では、lsコマンドの結果をls_log.txtに書き込むとともにtailコマンドに渡しています。



■CentOS7.1サーバー構築マニュアルを無料プレゼント
 「CentOS7.1」のサーバー構築手順、「VMware Player」の
 ダウンロードとインストール手順をまとめたマニュアルを
 無料でプレゼントしています。


 詳しくは↓のページで説明していますので、今すぐクリックしてダウンロードしてください。
 無料マニュアルをダウンロードする  無料マニュアルをダウンロードする