12シェルの基本機能(標準入出力・標準エラー出力)

コマンドは実行してプロセスになった際に3つの入出力チャネルが用意されます。

標準入力      初期状態のコマンドの入力元(キーボード)

標準出力      初期状態のコマンドの出力先(画面)

標準エラー出力  初期状態のエラーメッセージ出力先(画面)








参考url:http://www.cas.cmc.osaka-u.ac.jp/~paoon/Lectures/2005-7Semester-AppliedMath7/04.html


例:catコマンド

引数を指定しないで実行する

標準入力であるキーボードからキーボードから1行ずつ読み込む
(ユーザーがエンターキーを押すまでの間)

エンターキーを押した時点で標準出力にそのまま表示

標準入力からの入力を完了しコマンドを終了するには Ctrl+D




と、いうことは、新規テキストファイルの作成や既存テキストファイルのコピーに使えそうです!

後ほど、実践してみます





例:lsコマンド

引数に存在しないファイル名を指定するとエラーメッセージが表示される

このエラーメッセージは標準エラー出力に対して出力されている





標準入出力を切り替えるリダイレクション

リダイレクション    コマンドの実行結果をファイルに書き出したり
                     コマンドの入力をファイルから読み込んだりできる

                    標準出力をファイルに設定する(ファイルは上書きされる)    記号:大なり

>>                  標準出力をファイルに設定する(ファイルの最後に追加される)

<                    標準入力をファイルに設定する                記号:小なり


上書きでリダイレクション



追加でリダイレクション



以下の例ではファイルの内容を表示するcatコマンドを用いて
標準入力と標準出力の両方をそれぞれ別のファイルにリダイレクトしている

結果としてファイルをコピーしたことと同じになる




標準エラー出力を切り替えるリダイレクション(標準エラー出力のハンドル数値2をリダイレクト)


2>           標準エラー出力をファイルに設定する(ファイルは上書きされる)  

2>>         標準エラー出力をファイルに設定する(ファイルの最後に追加される)


エラーメッセージのリダイレクション(上書き)
さらに追加書き込みでエラーメッセージのリダイレクション




標準出力もエラー出力も同じファイルにリダイレクション


&>           標準出力と標準エラー出力を同じファイルに設定(ファイルは上書きされる)

&>>         標準出力と標準エラー出力を同じファイルに設定(ファイルの最後に追加される)


以下の例は標準出力も標準エラー出力もファイルにリダイレクションされる
よって画面上には何も表示されない





複数のコマンドを組み合わせるパイプ

コマンドの標準出力と別のコマンドの標準入力を接続する機能












Qキーで抜ける



フィルタコマンド

パイプで接続できるコマンドは必要な数だけ組み合わせて使うことができる

その場合の中間のコマンドのことを特にフィルタコマンドとよぶ


例えばテキストファイル /etc/services の21行目から30行目を行番号付きで表示したいとき
以下のようにする