Linuxテキストストリームと標準入力、標準出力、標準エラーとリダイレクトの説明
ファイルはデータの格納に使用され、データを格納する家に相当します。前述したように,データとは0または1のシーケンスであるが,厳密にはLinuxはバイト(byte)をデータの単位とし,すなわちこのシーケンスは8ビット(bit)ごとに1単位(8ビットバイナリに対応する10進数範囲は0から255)である.ASCII符号化を使用すると、このようなバイトを文字に変換することができます。だから、Linuxでは、私たちが言ったデータは、完全に文字で表現することができます。つまり、テキスト(text)の形式です。
実際、bit単位で文字を処理すると、機械が読みやすく転送しやすくなり、効率が高くなります。しかし、なぜLinuxはバイト単位で処理されているのでしょうか。なぜなら、ビット単位でデータを処理するよりもbyte単位でデータを文字に変換しやすくするからである。退屈な0と1に比べて、文字は読みやすい(human readable)。しかし、すべてのデータが読めるように設計されているわけではありません。例えば、実行可能ファイルに含まれる様々な文字は、人間にとって意味がありません(実行可能ファイルは機械に読めるように設計されているからです)。しかし、Linuxは依然としてすべてのファイルをバイト単位で処理しており、これはすべてのファイルが1セットのインタフェース(virtual file system)を共有できるようにし、Linux設計の複雑さを減らすためである。
(「everything is a file」は通常伝わるUNIX設計の哲学の一つであるが、Linusはこれを修正し、「everything is a stream of bytes」に変更した。
しかし、データは自分の家(file)を見つけてから永遠に定着したわけではない。メモリに読み込まれたり(オフィスに出勤したり)、外部の設備に送られたり(ホテルに休暇を取ったり)、別の家に引っ越したりします。このような移転の過程で、データは列を作って歩く人の流れのように、テキストストリーム(text stream、またはbyte stream)と呼ばれています。しかし、コンピュータの異なるデバイス間の接続方法は大きく異なり、メモリからファイルへの接続は山に登るようで、メモリから外付けまで川を泳いでいるようだ。このためLinuxは、各所を結ぶ道路を建設する基準としてストリーム(stream)を定義した。Streamのメリットは、メモリから外付けに至るまで、メモリからファイルに至るまで、すべての道路が同じであることです(道路の下が石でも土地でも心配しなくてもいいです)。
「everything is a stream of bytes」という言葉をもう一度味わってみましょう。情報はテキストストリームに含まれ,コンピュータの各コンポーネント間を絶えず流れ,コンピュータの加工を絶えず受け入れ,最終的にはユーザが必要とする何らかのサービスとなる.
△余談ですが、ハッカー帝国を見たことがあると、テキストの流れが印象的になります。
標準入力、標準出力、標準エラーと再配向Linuxがプログラムを実行すると、3つのストリーム、標準入力(standard input)、標準出力(standard output)、標準エラー(standard error)が自動的に開きます。たとえば、コマンドラインを開くと、デフォルトではコマンドラインの標準入力がキーボードに接続され、標準出力と標準エラーが画面に接続されます。1つのプログラムでは、この3つのストリームが常に開かれますが、必要に応じて使用され、必ずしも使用されるわけではありません。
コードのコピー