
/dev/stdin/ の利用価値を教えてください。
いまいちありがたみがわからないのです。
cat /dev/stdin と入れてみて、「a」と入力すると同じ文字が次の行で表示されました。
#cat /dev/stdin
a ←自分で入力
a ←自動で表示された。
★実行プログラムが標準入力や標準出力に対応していなくでもファイル名を指定するときに
これらのファイルを指定することで、標準入出力に対応できます。
パイプやヒアドキュメントをつかって便利に使えるようになりますよ。
というblog記事も見つかったのですが
いまいち、ピンと来ないのです。
/dev/stdin を使うとどんなメリットがあるのでしょうか
ご教授お願いします。
No.1ベストアンサー
- 回答日時:
Unixの系列のプログラムの場合、パイプを使って小さなプログラムを組み合わせて動かす、という事をよくやります。
例えば、「ホームフォルダから辿れる場所にある全てのファイルのうち、文字列"Hello"が最も多く出現するファイルTop 10を表示したい」という場合には、ファイルの一覧を出力するfind、標準入力を引数に変換するxargs、テキストの中から特定の文字を含む行を抽出するgrep、行単位で文字列の編集を行うsed、行単位での重複を削除しつつその出現回数を数えるuniq、並び替えを行うsort、最初の数個だけを表示するheadを用いると$ find ~ | xargs grep 'Hello' | sed 's/:.*$//' | uniq -c | sort -r | head
等と書くことができ、
「一つのことを行い、またそれをうまくやるプログラムを書け。協調して動くプログラムを書け。標準入出力を扱うプログラムを書け。」(quoted from wikipedia)というUnixの哲学に則ったプログラムは組み合わせやすく、再利用しやすいという特性が生きていることが分かります。
ところが、中には標準入出力からの入力に対応していないプログラムもあります。そういったプログラムは通常、実行時引数でファイル名を指定して動くのですが、「指定されたファイルがあたかも存在して、そこから文字列を読み取ると標準入力から文字列を読み取ったことになる」という素敵な作用を持つ(ある意味架空の)ファイルが、その/dev/stdinになります。
e.g.)
$ cat /dev/stdin << end. # ここから
> hello.
> ok.
> end. # ここまでヒアドキュメント。catは/dev/stdinを読みに行っている。
hello. # これと次の行は出力された文字列。
ok.
この回答への補足
>利用しやすいという特性が生きていることが分かります。
ここまでは理解できました。
>その/dev/stdinになります。
ここまでも理解できました。確かに素敵仕様だと思いますが。
ヒアドキュメント実行したら確かに同じ結果が出ました。
ただ、ヒアドキュメントを上手く理解できず頂いたサンプルでは
ありがたみが分かりませんでした。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# プログラミングの問題です。至急教えてください。 /***から***/の部分をプログラミングにしてほし 1 2022/10/13 11:48
- UNIX・Linux Linuxのbash環境下です。 1 2022/11/27 12:31
- UNIX・Linux VirtualBox ゲストOSにPC内蔵HDDのパーティションをマウントする方法は? 2 2023/05/06 22:52
- その他(プログラミング・Web制作) プログラミング pythonの問題について 2 2022/04/19 00:41
- Excel(エクセル) VBAで、㉑という数値が、正しく、入力できない 2 2022/07/26 20:22
- Excel(エクセル) Excel ユーザー定義で変換したセルについて 3 2023/02/04 01:25
- Excel(エクセル) エクセルの散布図で新たに入力した値のデータラベルが空欄になる現象 1 2022/04/26 09:31
- Java java 次の機能を有するメソッドを自クラスに作成し、実装したいです。 機能 名前判定機能 →名前が 3 2022/06/16 16:08
- C言語・C++・C# C言語について。 7 2023/01/26 16:42
- その他(プログラミング・Web制作) Pythonを用いたフラッシュ暗算ソフトの開発に必要なもの 2 2023/01/29 02:22
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
拡張子はなぜ、大文字と小文字...
-
フォルダの中に1個しかファイ...
-
Excelの「アクセシビリティ 検...
-
ファイルの開き方(拡張子なし)
-
i Movieで読み込んだはずの動画...
-
フォルダーのプロパティで表示...
-
ターミナルソフトで全スクロー...
-
macユーザーです!拡張子「Thum...
-
vssver2.scc って消してもいい...
-
windows (ウィンドウズ) の 「...
-
パソコンのスキップとは何ですか?
-
Wordのファイルを開いたとき最...
-
Microsoft Excel previewer に...
-
OS X snow leopardにおける隠し...
-
Win7の使い方で困っています。
-
既定の壁紙画像はどこにある?
-
win10 立ち上げ時のエラー
-
vi 続けるにはENTERを押すかコ...
-
バッチで指定したファイルを選...
-
ユーザープロファイルで最終ロ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
拡張子はなぜ、大文字と小文字...
-
フォルダの中に1個しかファイ...
-
ファイルの開き方(拡張子なし)
-
windows (ウィンドウズ) の 「...
-
Excelの「アクセシビリティ 検...
-
ターミナルソフトで全スクロー...
-
パソコンのスキップとは何ですか?
-
vssver2.scc って消してもいい...
-
macユーザーです!拡張子「Thum...
-
任意のフォルダを選択し、その...
-
ワードやエクセルのファイル名...
-
フォルダーのプロパティで表示...
-
移動先にも同じファイル名が存...
-
Wordのファイルを開いたとき最...
-
プロパティの「所有者」の削除
-
Microsoft Excel previewer に...
-
Pagesで、PDFをうまく挿入したい
-
特定の拡張子のファイルを表示...
-
エクスプローラでファイルを表...
-
複数のワードファイルで合計ペ...
おすすめ情報