質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

Q&A

解決済

3回答

254閲覧

Linux コマンド パイプについて

Behemoth

総合スコア29

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

0グッド

0クリップ

投稿2018/06/24 01:00

お世話になっております。
つい先日よりLinuxについて勉強をはじめたものです。

「標準入出力」における「パイプ」(|)に関する質問です。

$ echo 2+3 | bc

このようなコマンドがあったとします。
この結果として「5」が画面に出力されると思うのですが、この場合解釈は
1 「2+3」をbcに入力し、それがechoによって画面に出力される
2 echo 2+3 がbcに入力される

このどちらなのでしょうか?

また、ディレクトリ/usr/binのファイルの数を数える際に使う(この例は「入門者のLinux」(奈佐原顕郎 著 講談社)p145 による)

$ ls -l /usr/bin | wc

のコマンドに関しまして、/user/binが wcに渡されるのか、それとも「ls -l /usr/bin」がwcに渡されるのか、疑問に思っています。

どなたかよろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

echo 2+3 で stdout に "2+3" が出力される。
| で bc の stdin に "2+3" が渡る
bc は stdin から "2+3" をよみとり、 5 を stdout に出力する。

ls -l /usr/bin | wc の場合は、
ls -l /user/bin の結果が stdout に出力される(ただしこの場合、1ファイル毎に改行される。)
wc は stdin から ↑のものをを読みこみ、その文字数、単語数、行数を stdout に出力します。

参考情報

  • 【初心者向け】Linuxパイプラインの使い方を詳しく!

https://eng-entrance.com/linux-pipeline

投稿2018/06/24 01:20

編集2018/06/24 01:22
katoy

総合スコア22324

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Behemoth

2018/06/24 02:04

ご解説ありがとうございます。 すみません、「echo 2+3 で stdout に "2+3" が出力される。」でのsrdoutはechoのsrdoutのことでしょうか? よろしくお願いいたします。
katoy

2018/06/24 03:59

echoのsrdout のことです。 | は、 | の前にある処理の stdout を | の後ろにある 処理の stdin につなげる(パイプする) ということです。 一直線にしかパイプをつなげられないと不便なことがあるので、 tee というコマンドもあります。("linux tee" で google 検索してみてください)
Behemoth

2018/06/24 06:05

ありがとうございます。 すっきりしました。
guest

0

このへんは使いながら感覚をつかんでいくしかないのかなあ
と思います。試行錯誤してればそのうちに、ね。(^_^;

で、パイプの前後では世界が違うのです。

$ hoge | piyo

とした場合、hoge と piyo は互いのことは全く分かりませんし
互いに干渉することもできません。
hoge がやっているのは標準出力になにか出すことだけですし、
piyo がやっているのは標準入力からなにか入れることだけ。

1 「2+3」をbcに入力し、それがechoによって画面に出力される

こういう意味合いのことをしたいのならこんな感じになりますかね。

echo `echo 2+3 | bc`

ちなみに、処理的には下記と同じです。

x=`echo 2+3 | bc` echo $x

投稿2018/06/24 03:22

takasima20

総合スコア7458

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Behemoth

2018/06/24 06:04

ご解説ありがとうございます。 少しずつ慣れていきたいです。
guest

0

ベストアンサー

標準入出力を、キーボード・画面と同一視すると混乱の元ですよ。
あくまで標準入力は「標準の入力」標準出力は「標準の出力」です。

ちょっと長いですが、以前こういう記事を書いてますので参考になれば。
標準入力・標準出力ってなに?
リダイレクト・パイプラインの話も載せています。

投稿2018/06/24 02:50

angel_p_57

総合スコア1672

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Behemoth

2018/06/24 03:18

ありがとうございます。 さっそく読ませていただきます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問