一行につき 1 ユーザーの情報が出力されますね。 who の出力から行数を求めれば,ログインしている延べユーザー数がわかります。
who > user
cat コマンド等で user の中身を確認してください。![]()
wc -l < user
ユーザー数がわかりましたね。![]()
rm user
|
)」で区切って記述することによって行います。
パイプによって連結された一連のコマンドをパイプライン (pipeline) と言います。
なお,コマンドの標準出力と標準エラー出力の両方を,続くコマンドの標準入力に接続するには,tcsh の場合,|
の代わりに |&
とします。
who | wc -lこの状況を図示したのが次の図です。 wc は,ファイル名の引数が無いときに,標準入力 (stdin) から読み込みをするのでしたね。 パイプと共に wc を実行する場合, wc は標準入力 (stdin) から入力を受け取る必要がありますので,wc の引数にファイル名を指定してはいけないことに注意しましょう。
ls -l /etc | more
more コマンドは,more year
のように引数にファイル名が与えられれば,
そのファイル用の入り口を作って読み込みますが,
ファイル名を与えずにリダイレクトやパイプと共に用いると,標準入力から入力を受け取ります。
次の図では ls の引数 (-l /etc) の記述は省略しています。
動作の概要は以下のとおりです。![]()
ls の標準出力をパイプによって more の標準入力に接続しているので,ls の実行結果は画面には出力されません。
command1により,次の図に示す多段のパイプが可能です。 これにより,command1 の出力が command2 で処理され,さらに command3 で処理されます。|
command2|
command3
なお,これまでと同様に,パイプラインの中の各コマンドには引数を与えることもできます。 また,4つ以上のコマンドをパイプすることもできますし,その出力をリダイレクトでファイルに保存することも可能です。![]()
command2 や command3 のように,標準入力と標準出力を使った入出力が可能なコマンドをフィルタ (filter) といいます。 フィルタはパイプラインの中で利用できるコマンドです。 これまでに紹介したコマンドでは cat と wc はフィルタです。