GNU/Linux >> Linux の 問題 >  >> Linux

Linuxコマンドラインでのデータストリームの操作

作成者のメモ: この記事の内容の多くは、私の新しい本、The Linux Philosophy for SysAdminsの第3章:データストリームから、Opensource.comの記事形式に合うようにいくつかの重要な編集を加えて抜粋したものです。

Linuxのすべては、データのストリーム、特にテキストストリームを中心に展開しています。データストリームは、GNUユーティリティ、Linuxコアユーティリティ、およびその他の多くのコマンドラインツールが機能を実行するための原材料です。

その名前が示すように、データストリームは、STDIOを使用して、あるファイル、デバイス、またはプログラムから別のファイル、デバイス、またはプログラムに渡されるデータ(特にテキストデータ)のストリームです。この章では、パイプを使用して、STDIOを使用して1つのユーティリティプログラムから別のユーティリティプログラムにデータのストリームを接続する方法を紹介します。これらのプログラムの機能は、何らかの方法でデータを変換することであることがわかります。また、リダイレクトを使用してデータをファイルにリダイレクトする方法についても学習します。

Linuxターミナル

  • Linux用の上位7つのターミナルエミュレータ
  • Linuxでのデータ分析のための10個のコマンドラインツール
  • 今すぐダウンロード:SSHチートシート
  • 高度なLinuxコマンドのチートシート
  • Linuxコマンドラインチュートリアル

それぞれの主なタスクは、システム管理者が意図した特定の方法でSTDIOからの受信データを変換し、変換されたデータを別のトランスフォーマープログラムで使用できるようにSTDOUTに送信することであるため、これらのプログラムと組み合わせて「変換」という用語を使用します。またはファイルへのリダイレクト。

標準的な用語「フィルター」は、私が同意しないことを意味します。定義上、フィルターとは、エアフィルターなどの何かを除去するデバイスまたはツールであり、自動車の内燃機関がそれらの粒子を粉砕して死に至らしめないように、空気中の汚染物質を除去します。私の高校と大学の化学の授業では、液体から粒子を取り除くためにろ紙が使用されました。自宅のHVACシステムのエアフィルターは、呼吸したくない粒子を取り除きます。

ストリームから不要なデータを除外することもありますが、これらのユーティリティはさらに多くの機能を実行するため、「トランスフォーマー」という用語の方がはるかに好きです。ストリームにデータを追加したり、驚くべき方法でデータを変更したり、並べ替えたり、各行のデータを再配置したり、データストリームの内容に基づいて操作を実行したりすることができます。好きな言葉を自由に使ってください、でも私はトランスフォーマーが好きです。私はこれで一人でいることを期待しています。

データストリームは、パイプを使用してトランスをストリームに挿入することで操作できます。各トランスフォーマープログラムは、システム管理者がストリーム内のデータに対して何らかの操作を実行するために使用し、その結果、その内容を何らかの方法で変更します。次に、パイプラインの最後でリダイレクトを使用して、データストリームをファイルに転送できます。前述のように、そのファイルは、ハードドライブ上の実際のデータファイル、またはドライブパーティション、プリンタ、端末、疑似端末、またはコンピュータに接続されているその他のデバイスなどのデバイスファイルである可能性があります。

これらの小さいながらも強力なトランスフォーマープログラムを使用してこれらのデータストリームを操作する機能は、Linuxコマンドラインインターフェイスのパワーの中心です。コアユーティリティの多くはトランスフォーマープログラムであり、STDIOを使用します。

UnixおよびLinuxの世界では、ストリームは、あるソースから発信されたテキストデータのフローです。ストリームは、何らかの方法で変換する1つ以上のプログラムに流れ、ファイルに保存されるか、ターミナルセッションに表示されます。システム管理者としてのあなたの仕事は、これらのデータストリームの作成とフローの操作に密接に関連しています。この投稿では、データストリームとは何か、データストリームの作成方法、およびデータストリームの使用方法について少し説明します。

テキストストリーム—ユニバーサルインターフェイス

プログラムの入力と出力に標準入出力(STDIO)を使用することは、Linuxのやり方の重要な基盤です。 STDIOは最初にUnix用に開発され、それ以来、DOS、Windows、Linuxなどの他のほとんどのオペレーティングシステムに採用されています。

これはUnixの哲学です。1つのことを実行し、それをうまく実行するプログラムを作成します。一緒に動作するプログラムを作成します。テキストストリームを処理するプログラムを作成します。これはユニバーサルインターフェースだからです。」

— Doug McIlroy、Unix哲学の基礎

STDIO

STDIOは、初期バージョンのUnixにパイプを実装するために必要なインフラストラクチャの一部としてKenThompsonによって開発されました。 STDIOを実装するプログラムは、ディスクやその他の記録メディアに保存されているファイルではなく、標準化されたファイルハンドルを入力と出力に使用します。 STDIOは、バッファリングされたデータストリームとして最もよく説明され、その主な機能は、あるプログラム、ファイル、またはデバイスの出力から別のプログラム、ファイル、またはデバイスの入力にデータをストリーミングすることです。

3つのSTDIOデータストリームがあり、それぞれがプログラムの起動時にファイルとして自動的に開かれます。つまり、STDIOを使用するプログラムです。各STDIOデータストリームは、ファイルハンドルに関連付けられています。ファイルハンドルは、ファイルの属性を説明するメタデータのセットにすぎません。ファイルハンドル0、1、および2は、慣例および長い慣習により、それぞれSTDIN、STDOUT、およびSTDERRとして明示的に定義されています。

STDIN、ファイルハンドル0 、は通常キーボードから入力される標準入力です。 STDINは、キーボードの代わりに、デバイスファイルを含む任意のファイルからリダイレクトできます。 STDINをリダイレクトする必要があることは一般的ではありませんが、リダイレクトすることはできます。

STDOUT、ファイルハンドル1 は、デフォルトでデータストリームをディスプレイに送信する標準出力です。 STDOUTをファイルにリダイレクトするか、さらに処理するために別のプログラムにパイプするのが一般的です。

STDERR、ファイルハンドル2 。 STDERRのデータストリームも通常、ディスプレイに送信されます。

STDOUTがファイルにリダイレクトされた場合、STDERRは引き続き画面に表示されます。これにより、データストリーム自体が端末に表示されていない場合でも、STDERRが表示されるため、プログラムの実行に起因するエラーがユーザーに表示されます。 STDERRは、同じものにリダイレクトしたり、パイプライン内の次のトランスフォーマープログラムに渡すこともできます。

STDIOは、Cライブラリ stdio.hとして実装されています。 、プログラムのソースコードに含めることができるため、結果の実行可能ファイルにコンパイルできます。

シンプルなストリーム

/ tmp では、次の実験を安全に実行できます。 Linuxホストのディレクトリ。 rootユーザーとして、 / tmpを作成します PWD、テストディレクトリを作成してから、新しいディレクトリをPWDにします。

 # cd /tmp ; mkdir test ; cd test 

次のコマンドラインプログラムを入力して実行し、ドライブにコンテンツを含むファイルを作成します。 dmesgを使用します 含めるファイルのデータを提供するだけのコマンド。内容は、各ファイルにコンテンツが含まれているという事実ほど重要ではありません。

 # for I in 0 1 2 3 4 5 6 7 8 9 ; do dmesg > file$I.txt ; done  

/ tmp /に少なくとも10個のファイルがあることを確認します file0.txtという名前で file9.txtを介して 。

#ll 
total 1320
-rw-r--r-- 1 root root 131402 Oct 17 15:50 file0.txt
-rw-r--r-- 1ルートルート13140210月17日15:50file1.txt
-rw-r--r--1ルートルート13140210月17日15:50file2.txt
-rw-r--r-- 1ルートルート13140210月17日15:50file3.txt
-rw-r--r--1ルートルート13140210月17日15:50file4.txt
-rw-r--r-- 1ルートルート13140210月17日15:50file5.txt
-rw-r--r--1ルートルート13140210月17日15:50file6.txt
-rw-r--r-- 1ルートルート13140210月17日15:50file7.txt
-rw-r--r--1ルートルート13140210月17日15:50file8.txt
-rw-r--r-- 1ルートルート13140210月17日15:50file9.txt

dmesgを使用してデータストリームを生成しました 一連のファイルにリダイレクトされたコマンド。ほとんどのコアユーティリティは、出力ストリームとしてSTDIOを使用し、データストリームを何らかの方法で変換するのではなく、データストリームを生成するユーティリティを使用して、実験に使用するデータストリームを作成できます。データストリームは、1行から1文字まで、必要に応じて長くすることができます。

ハードドライブの探索

少し探索する時が来ました。この実験では、いくつかのファイルシステム構造を見ていきます。

簡単なことから始めましょう。 ddに少なくともある程度精通している必要があります 指図。正式には「ディスクダンプ」として知られている多くのシステム管理者は、正当な理由でこれを「ディスク駆逐艦」と呼んでいます。私たちの多くは、ddを使用して、ハードドライブ全体またはパーティション全体の内容を誤って破棄してしまいました。 指図。そのため、 / tmp / testにたむろします これらの実験のいくつかを実行するためのディレクトリ。

その評判にもかかわらず、dd さまざまな種類のストレージメディア、ハードドライブ、およびパーティションの調査に非常に役立ちます。また、Linuxの他の側面を調査するためのツールとしても使用します。

まだ行っていない場合は、rootとしてターミナルセッションにログインします。まず、lsblkを使用して、ハードドライブのデバイス特殊ファイルを決定する必要があります。 コマンド。

 [ルート@ studentvm1試験]#lsblk -i 
NAME MAJ:MIN RMサイズRO TYPE MOUNTPOINT
SDA 8:0 0 0 60Gディスク
| -sda1 8:1 0 1G 0パート/boot
`-sda2 8:2 059G0パート
| -fedora_studentvm1-pool00_tmeta 253:0 l 0 /> M 4 M `-fedora_studentvm1-pool00-tpool 253:2 0 2G 0 lvm
| | -fedora_studentvm1-root 253:3 0 2G 0 lvm /
| `-fedora_studentvm1-pool00 253:6 0 2G 0 lvm
| -fedora_studentvm1-pool00_tdata 253:1 0 2G 0 lvm
| `-fedora_studentvm1-pool00-tpool 253:2 0 2G 0 lvm
| | -fedora_studentvm1-root 253:3 0 2G 0 lvm /
| `-fedora_studentvm1-pool00 253:6 0 2G 0 lvm
| -fedora_studentvm1-swap 253:4 0 253 0 10G 0 lvm [SWAP]
5 br /> | -fedora_studentvm1-home 253:7 0 2G 0 lvm / home
| -fedora_studentvm1-var tran tmp:0 10G 0 lvm lvm / tmp
sr0 11:0 1 1024M 0 rom

このことから、このホストにはハードドライブが1つしかなく、それに関連付けられているデバイスの特殊ファイルは / dev / sdaであることがわかります。 、および2つのパーティションがあること。 / dev / sda1 パーティションはブートパーティションであり、 / dev / sda2 パーティションには、ホストの残りの論理ボリュームが作成されたボリュームグループが含まれています。

ターミナルセッションのrootとして、ddを使用します / dev / sda に割り当てられていると仮定して、ハードドライブのブートレコードを表示するコマンド 端末。 bs= 議論はあなたが思うかもしれないものではありません。ブロックサイズとcount=を指定するだけです。 引数は、STDIOにダンプするブロックの数を指定します。 if= 引数は、データストリームのソース(この場合は / dev / sda )を指定します 端末。パーティションの最初のブロックではなく、ハードドライブの最初のブロックを見ていることに注意してください。

 [root @ studentvm1 test]#dd if =/ dev / sda bs =512 count =1 
�c�#�м���؎���|�#�#���!# ��8#u
��#���u��#�#�#�|���t#�L#�#�|���#�����€t�� pt#���y|1��؎м��d| <�t#��R�|1��D#@�D��D#�##f�#\ |f�f�# `| f�\
�D#p�B�#r�p�#�K`#�#��1��������#a`���#f��u#� ���f1�f�TCPAf�#f�#a�&Z |�#}�#�。}�4�3}�.�#��GRUBGeomHardDiskReadエラー
�#��#� 1+0レコードアウト
512バイトコピー、4.3856e-05秒、11.7 MB/秒

これにより、ディスクの最初のブロックであるブートレコードのテキスト(任意のディスク)が出力されます。この場合、ファイルシステムに関する情報があり、バイナリ形式で保存されているため読み取れませんが、パーティションテーブルがあります。これが起動可能なデバイスである場合、GRUBのステージ1またはその他のブートローダーがこのセクターに配置されます。最後の3行には、処理されたレコード数とバイト数に関するデータが含まれています。

/ dev / sda1の先頭から開始 、一度に数ブロックのデータを見て、必要なものを見つけましょう。コマンドは前のコマンドと似ていますが、表示するデータのブロックをさらにいくつか指定した点が異なります。端末が一度にすべてのデータを表示するのに十分な大きさでない場合は、指定するブロックの数を減らす必要があります。または、より少ないユーティリティを介してデータをパイプし、それを使用してデータをページングすることもできます。どちらの方法でも機能します。非rootユーザーには必要な権限がないため、これらすべてをrootユーザーとして実行していることを忘れないでください。

前の実験で行ったのと同じコマンドを入力しますが、より多くのデータを表示するために、以下に示すように、表示されるブロック数を100に増やします。

 [root @ studentvm1 test]#dd if =/ dev / sda1 bs =512 count =100 
##33��#:�##��:o�[:o�[#�� S�###�q[#
#<�#{5OZh�GJ͞#t�Ұ## boot / bootysimage /booC�dp��G'�*)�#A�##@
#�q[
�#### ###�#���To=### <#8���#'#�###�#�����#� '�����#Xi�#��`qT���
<���
�r����]�#�#�##�##�##� #�##�##�##�#�##�##�#��#�#�##�#�##�##�#��#�#����#�� #�#�#

�#
�#
�#

�#
�#
� #

�#
�#
�#100+0レコード入力
100+0レコード出力
51200バイト(51 kB、50 B )コピー、0.00117615秒、43.5MB/秒

次に、このコマンドを試してください。大量のスペースを消費するため、ここではデータストリーム全体を再現しません。 Ctrl-Cを使用します データの流れを中断して停止します。

 [root@studentvm1 test]# dd if=/dev/sda 

このコマンドは、ハードドライブの完全なコンテンツであるデータのストリーム / dev / sdaを生成します。 、ブートレコード、パーティションテーブル、およびすべてのパーティションとそのコンテンツを含みます。このデータは、ベアメタル回復を実行できる完全バックアップとして使用するためにファイルにリダイレクトできます。また、最初のクローンを作成するために別のハードドライブに直接送信することもできます。ただし、この特定の実験は実行しないでください。

 [root@studentvm1 test]# dd if=/dev/sda of=/dev/sdx 

dd コマンドは、さまざまなタイプのファイルシステムの構造を調べたり、欠陥のあるストレージデバイス上のデータを見つけたりするのに非常に役立ちます。また、変更または表示するためにトランスフォーマーユーティリティを使用できるデータのストリームも生成します。

ここでの本当のポイントは、dd 、多くのLinuxコマンドと同様に、出力としてデータのストリームを生成します。そのデータストリームは、他のツールを使用してさまざまな方法で検索および操作できます。ゴーストのようなバックアップやディスクの複製にも使用できます。

ランダム性

コンピュータではランダム性が望ましいことがわかりました。誰が知っていたのでしょうか。システム管理者がランダムデータのストリームを生成したい理由はいくつかあります。ランダムデータのストリームは、 / dev / sda1などの完全なパーティションの内容を上書きするのに役立つ場合があります 、または / dev / sda のように、ハードドライブ全体でさえも 。

この実験は、root以外のユーザーとして実行してください。このコマンドを入力して、ランダムデータの終わりのないストリームをSTDIOに印刷します。

 [student@studentvm1 ~]$ cat /dev/urandom 

Ctrl-Cを使用します データのストリームを中断して停止します。 Ctrl-Cを使用する必要がある場合があります 複数回。

ランダムデータは、科学的および統計的計算で使用するためのランダムなパスワードとランダムなデータおよび数値を生成するプログラムへの入力シードとしても使用されます。ランダム性やその他の興味深いデータソースについては、第24章「すべてがファイルです」でもう少し詳しく説明します。

パイプの夢

パイプは、コマンドラインで驚くべきことを実行する能力にとって非常に重要です。そのため、パイプはUnixの初期の頃にDouglas McIlroyによって発明されたことを認識することが重要だと思います(ありがとう、Doug!)。プリンストン大学のウェブサイトには、マキロイとのインタビューの断片があり、パイプの作成とUnix哲学の始まりについて説明しています。

次に示す単純なコマンドラインプログラムでパイプが使用されていることに注意してください。このプログラムでは、アクティブなログイン数に関係なく、ログインしている各ユーザーが1回だけ一覧表示されます。学生ユーザーとしてこの実験を実行します。以下に示すコマンドを入力します:

 [student @ studentvm1〜] $ w |テール-n+3| awk'{print $ 1}' |並べ替え| uniq 
root
student
[student @ studentvm1〜] $

このコマンドの結果は、ユーザーのルートと学生の両方がログインしていることを示す2行のデータを生成します。各ユーザーがログインした回数は表示されません。結果はほぼ確実に私のものとは異なります。

パイプ(垂直バー(|)で表されます)は、これらのコマンドラインユーティリティを相互に接続する構文上の接着剤である演算子です。パイプを使用すると、あるコマンドからの標準出力を「パイプ」することができます。つまり、あるコマンドの標準出力から次のコマンドの標準入力にストリーミングできます。

|&演算子を使用して、STDERRをSTDOUTとともに次のコマンドのSTDINにパイプすることができます。これは必ずしも望ましいことではありませんが、問題判別の目的でSTDERRデータストリームを記録する機能に柔軟性を提供します。

パイプに接続された一連のプログラムはパイプラインと呼ばれ、STDIOを使用するプログラムは正式にはフィルターと呼ばれますが、私は「トランスフォーマー」という用語を好みます。

あるコマンドから次のコマンドにデータストリームをパイプできない場合、このプログラムがどのように機能するかを考えてください。最初のコマンドはデータに対してそのタスクを実行し、次にそのコマンドからの出力をファイルに保存する必要があります。次のコマンドは、中間ファイルからデータストリームを読み取り、データストリームの変更を実行して、独自の出力を新しい一時データファイルに送信する必要があります。 3番目のコマンドは、2番目の一時データファイルからデータを取得し、データストリームを独自に操作してから、結果のデータストリームをさらに別の一時ファイルに保存する必要があります。各ステップで、データファイル名をあるコマンドから次のコマンドに何らかの方法で転送する必要があります。

とても複雑なので、それについて考えることすらできません。覚えておいてください:シンプルさは素晴らしいです!

パイプラインの構築

新しい問題を解決するために何か新しいことをしているとき、私は通常、頭のてっぺんから完全なBashコマンドパイプラインを最初から入力するだけではありません。私は通常、パイプラインの1つまたは2つのコマンドから始めて、そこからさらにコマンドを追加してデータストリームをさらに処理することで構築します。これにより、パイプライン内の各コマンドの後にデータストリームの状態を表示し、必要に応じて修正を加えることができます。

STDIOで動作するさまざまなユーティリティを使用してデータストリームを変換できる非常に複雑なパイプラインを構築することが可能です。

リダイレクト

リダイレクトは、プログラムのSTDOUTデータストリームを、ディスプレイのデフォルトのターゲットではなくファイルにリダイレクトする機能です。 「大なり記号」(>)文字、別名「gt」は、STDOUTのリダイレクトの構文記号です。

コマンドのSTDOUTをリダイレクトすると、そのコマンドの結果を含むファイルを作成できます。

 [student@studentvm1 ~]$ df -h > diskusage.txt 

エラーがない限り、このコマンドから端末への出力はありません。これは、STDOUTデータ・ストリームがファイルにリダイレクトされ、STDERRが引き続きディスプレイであるSTDOUTデバイスに向けられるためです。次のコマンドを使用して、作成したファイルの内容を表示できます。

<前> [学生@ studentvm1テスト]
ファイルシステムサイズ使用される無駄の使用%が
devtmpfs 2.0G 0 2.0G 0%の/ dev
tmpfsの2.0G 0 2.0Gにマウントされたdiskusage.txt#猫0%/ dev / shm
tmpfs 2.0G 1.2M 2.0G 1%/ run
tmpfs tmpfsルート2.0G50M1.8G 3%/
/ dev / mapper / fedora_studentvm1-usr 15G 4.5G 9.5G 33%/ usr
/ dev / mapper / fedora_studentvm1-var 9.8G 1.1G 8.2G 12% / var
/ dev / mapper / fedora_studentvm1-tmp 4.9G 21M 4.6G 1%/ tmp
/ dev / mapper / fedora_studentvm1-home 2.0G 7.2M 1.8G 1%/ home
/ DEV / sda1を976M 221M 689M 25%/ブート
tmpfsの395M 0 395M 0%/実行/ユーザー/ 0
tmpfsの395M 12K 395M / 1000 1%/実行/ユーザー

>記号を使用してデータストリームをリダイレクトする場合、指定されたファイルがまだ存在しない場合は作成されます。存在する場合、内容はコマンドからのデータストリームによって上書きされます。 2倍の大なり記号>>を使用して、ファイル内の既存のコンテンツに新しいデータストリームを追加できます。

 [student@studentvm1 ~]$ df -h >> diskusage.txt 

catを使用できます および/またはless diskusage.txtを表示するには 新しいデータがファイルの最後に追加されたことを確認するためのファイル。

<(より小さい)記号は、データをプログラムのSTDINにリダイレクトします。このメソッドを使用して、ファイル名を引数として受け取らないが、STDINを使用するコマンドのファイルからSTDINにデータを入力することをお勧めします。 grepへの入力として使用されるファイルなどの入力ソースをSTDINにリダイレクトできますが、grepは入力ソースを指定するための引数としてファイル名も受け取るため、通常は必要ありません。他のほとんどのコマンドも、入力ソースの引数としてファイル名を取ります。

ただgrepしている

grep コマンドは、データのストリームから指定されたパターンに一致する行を選択するために使用されます。 grep は最も一般的に使用される変圧器ユーティリティの1つであり、非常に創造的で興味深い方法で使用できます。 grep コマンドは、不要なデータストリームのすべての行をフィルターで除外するため、フィルターと正しく呼ぶことができる数少ないコマンドの1つです。残りのデータストリームには、必要な行だけが残ります。

PWDが/tmp / testでない場合 ディレクトリ、そうしてください。まず、ファイルに保存するランダムデータのストリームを作成しましょう。この場合、印刷可能な文字に制限されるランダムなデータはやや少なくなります。優れたパスワードジェネレータプログラムはこれを行うことができます。次のプログラム(pwgenをインストールする必要がある場合があります まだ作成されていない場合)は、印刷可能なすべての文字を使用して、80文字の長さの50,000個のパスワードを含むファイルを作成します。 random.txtにリダイレクトせずに試してください 最初にファイルを作成して、それがどのように見えるかを確認してから、出力データストリームをファイルにリダイレクトしてから実行します。

 $ pwgen -sy 80 50000 > random.txt 

パスワードが非常に多いことを考えると、パスワードの一部の文字列が同じである可能性が非常に高くなります。まず、cat random.txt ファイルを作成し、grepを使用します 画面上の最後の10個のパスワードからランダムに選択された短い文字列を見つけるコマンド。これらの10個のパスワードの1つに「see」という単語が含まれているので、コマンドは次のようになりました。grep see random.txt 、そしてあなたはそれを試すことができますが、あなたはチェックするためにあなた自身のいくつかの文字列を選ぶべきです。 2〜4文字の短い文字列が最適です。

 $ grep see random.txt 
R =p)'s /〜0} wr〜2(OqaL.S7DNyxlmO69` "12u] h @ rp [D2%3} 1b87 +> Vk、; 4a0hX] d7see; 1%9|wMp6Yl。
bSM_mt_hPy | YZ1 NU @ [; zV2-see)>(BSK〜n5mmb9〜h) yx {a&$ _ e
cjR1QWZwEgl48 [3i-(^ x9D =v)seeYT2R#M:> wDh?Tn $] HZU7} j!7bIiIr ^ cI.DI)W0D "'vZU @ .Kxd1E1

概要

Linuxコマンドラインのデータストリームで実行できる驚くべき強力なタスクの多くを可能にするのは、パイプとリダイレクトの使用です。これは、STDIOデータストリームをあるプログラムまたはファイルから別のプログラムまたはファイルに転送するパイプです。 1つ以上のトランスフォーマープログラムを介してデータのストリームをパイプする機能は、それらのストリーム内のデータの強力で柔軟な操作をサポートします。

実験で示されたパイプラインの各プログラムは小さく、それぞれが1つのことをうまく実行します。それらは変圧器でもあります。つまり、標準入力を受け取り、それを何らかの方法で処理してから、結果を標準出力に送信します。処理されたデータストリームを独自の標準出力から他のプログラムの標準入力に送信するためのトランスフォーマーとしてのこれらのプログラムの実装は、Linuxツールとしてのパイプの実装を補完し、必要です。

STDIOはデータのストリームにすぎません。このデータは、ディレクトリ内のファイルを一覧表示するコマンドの出力から、または / dev / urandomなどの特別なデバイスからのデータの終わりのないストリームまでほとんど何でもかまいません。 、またはハードドライブまたはパーティションからのすべての生データを含むストリームですら。

Linuxコンピューター上のすべてのデバイスは、データストリームのように扱うことができます。 ddのような通常のツールを使用できます およびcat デバイスから他の通常のLinuxツールを使用して処理できるSTDIOデータストリームにデータをダンプします。


Linux
  1. Linuxatコマンドでタスクをスケジュールする

  2. Linuxコマンドラインでパスワードを生成する

  3. xclipを使用してLinuxコマンドラインでコピーして貼り付けます

  1. Linuxコマンドラインで牛を飼う

  2. Linuxコマンドラインにアクセスしてください

  3. Linux のコマンド ライン ツールを使用してマイク レベルを監視する

  1. Linuxcronコマンドを使用したタスクのスケジューリング

  2. Linuxコマンドラインに関する8つのヒント

  3. Linuxコマンドラインでのパイプの操作