• ベストアンサー

/dev/stdinはそれ以降の入力をかき消す???

mtfoggyの回答

  • mtfoggy
  • ベストアンサー率14% (37/255)
回答No.1

>この/dev/stdinとはいったい何者なのですか!? 標準入力 ぐぐれば、すぐわかるはずですが。

zyousuke
質問者

お礼

mtfoggyさん、アドバイスありがとうございます。 /dev/stdinというファイルが何者かということについては、 すぐにとはいかないまでも、頑張ってぐぐれば自力で回答を導き出せる疑問でした。 またstdinという名前から自分でも恐らく標準入力を表すファイルなのだろうと予想していたのでした。 今回は質問文中の2個目の命令行のような見慣れない出力を発見したので、 これを皆さんに見てもらいたいと思い、ここへ質問に参ったというわけです。 その際ついでに/dev/stdinとは何かという容易な質問もしてしまったわけですが許してください~w

関連するQ&A

  • /dev/stdin

    /dev/stdin/ の利用価値を教えてください。 いまいちありがたみがわからないのです。 cat /dev/stdin と入れてみて、「a」と入力すると同じ文字が次の行で表示されました。 #cat /dev/stdin a ←自分で入力 a ←自動で表示された。 ★実行プログラムが標準入力や標準出力に対応していなくでもファイル名を指定するときに これらのファイルを指定することで、標準入出力に対応できます。 パイプやヒアドキュメントをつかって便利に使えるようになりますよ。 というblog記事も見つかったのですが いまいち、ピンと来ないのです。 /dev/stdin を使うとどんなメリットがあるのでしょうか ご教授お願いします。

  • duコマンド+アルファで大きなファイルを検索

    以下のコマンドでディスク内の大きなファイルを検索することはできるのですが、ディレクトリも検索されてしまう為、ファイルかどうか判断するのは自分で見なければなりません。 --------------------------------------------------------------- du -a `ls -la /| egrep -wv "backup|^l[rwx-]+|skel|\.|\.\.|^total|proc" | awk '{print $NF}'` | sort -nr | head -30 出力された内容がディレクトリなら偽として、大きなファイルだけをしりたいのです。 一度ファイルに出力してからwhileを使って一行ずつifコマンドでディレクトリなら偽として出力していけばできるのですが。 ------------------------------------------------------------------ while read line ;do if [ -f "$line" ] ; then echo "$line" ; fi ; done < list これと同じ結果をファイルを作成せずにやりたいのです。 while分の最後のdoneにファイルをリダイレクトさせる要領で while read line ;do if [ -f "$line" ] ; then echo "$line" ; fi ; done < `printf "$list\n"` としてもうまくゆきません。 どうしたらファイルを作成せずにディスク内の大きなファイルだけを検索する事ができますでしょうか。

  • 【シェル】whileコマンドについて

    【シェル】whileコマンドについて OS:Solaris10 SH:Bシェル お世話になります。 whileコマンドにてテキストから、先頭に"#"(シャープ)が付いている行と、 空白行以外を読み込ませたいです。 ところが、メイン処理にawkコマンドを入れると、テキストを読む時点で、 行全体ではなく、指定したフィールド内の文字列を読みにいくため、 "#"(シャープ)が付いている行を無視することができません。 ====== while.sh ====== #!/bin/sh while read LINE do echo $LINE | awk '{print $2}' done < list.txt | grep -v "^#" | grep -v "^$" ====================== ------ list.txt ------ 1 2 3 #4 5 6 7 8 9 ---------------------- ****** 出力結果 ****** 2 5 8 ********************** ** 出力させたい結果 ** 2 8 ********************** whileコマンドのオプション等で、テキスト内に特定の記号がある行は 無視して読み込ませる方法がありましたら、ご教授ください。 宜しくお願い致します。

  • Kシェルのreadコマンドについての質問。

    Kシェルのreadコマンドについての質問。 簡単なサンプルですが、以下のように動作させたいのですが、 readコマンドが無視(動作しない)されております。 while read line do echo $line read ans  <--- 実行しても入力を求められない状況です。 echo $ans done < ./xxx 何かご存知でしたら、ご教授下さい。 宜しくお願い致します。

  • (UNIX)後ろのスペース出力について

    UNIXのコマンドで、catで読み込んだ行をwhile文でファイルに出力しているのですが、その際に後ろのスペースを消さずに出力するにはどうすれば良いのでしょうか? 以下のような処理を行っています。 cat $infile | read LINE do echo "$LINE" >> $outfile done <$infileの内容> 1 10 100□□□□□□ 2 20 200□□□□□□ ・・・ 以上となります。よろしくお願いします。

  • Perlについて

    あるテキストファイルからディレクトリだけを抜き出して各ディレクトリにパーミッションをつけたいのですがやりかたはシェルスクリプトでやろうとかんがえています。 #!/usr/bin/bash while read x1 x2 x3 x4 x5 x6 x7 x8 x9 ; do echo $x1 | grep ^d > /dev/null 2>&1 if(($?==0));then echo mkdir -p $x9 fi done < file.txt とディレクトリを作るところからパーミッションはどう書けばわかりません。当方初心者なのでわからないことがおおいです。 ご教授お願いします。 ~

  • シェルスクリプトとコマンドライン

    iptablesログからSRC=10.10.10.10の通信ログを取得しようとしました。 見よう見まねで下記コマンドラインを作成しました。 【コマンドワンライナー】 for ((i=1;i<9;i++));do da="2013012"$i;logfile=iptables.log-$da.gz ; echo -n $ logfile':';zcat $logfile | grep SRC=10.10.10.10 |wc -l;done 2>/dev/null このとき、所々に「;」を入力しました。 なぜ、;(セミコロン)をそこで入れる必要があったのかが分からないのです。 多分シェルスクリプトで記述した時の 「改行の位置?」ではないかと思っているのですが この認識で間違っていないでしょうか? 【シェル記述 改行の位置で;(セミコロン?)】 #!/bin/sh for ((i=1;i<9;i++))  do da="2013012"$i  logfile=iptables.log-$da.gz  echo -n $logfile':';zcat $logfile | grep SRC=10.10.10.10 |wc -l done 2>/dev/null ご教授お願いします。

  • 全角空白が間に挟まれているキーワードで検索

    どこかに書いてあったことを参考にしたのですが、 $ find /tmp -type f > find.txt ; cat find.txt | while read LINE ; do echo grep -l \"This\\s*program\" \"$LINE\" >> grep_script.sh ; done によりできあがったスクリプト grep_script.sh を走らせることで、その中の一行一行で grep -l "This\s*program" /tmp/sample.txt こういう感じのコマンドが実行され、 半角空白が間に挟まれている「This program」を検索できますが、 全角空白が間に挟まれている「This program」を検索するにはどうすればいいでしょうか? 全角スペースの文字コード 0x81,0x40 を使えばいいのかな、とは思ったのですがやり方が分かりません。 どのようにすればいいでしょうか? よろしくお願いします。

  • シェルスクリプトでファイルの読みとり

    /etc/ldap.confからpam_passwordで始まる行を見つけてその行を書き換えて上書きする関数を作ろうとしているところです。 以下のようにしましたがデバッグのためのechoでの出力が見えませんでした。 echoで1行ずつ列挙されるのを確認したいのですがどうしたらよいですか? function func1 { while read LINE ; do echo $LINE done < $1 return "" } buf=`func /etc/ldap.conf`

  • UNIXのshでの入力受付について

    またまたシェル関係で質問です。 sh上で入力受付をさせたいときは通常 「read 変数名」 をいれて入力受付をさせています。 ですが、今やっている現象でこの入力受付が スルーされているという現象が起きていて悩んでいます。 ※ ソース例 ls -l | while read VAL_A ; do echo "test" read VAL_B ← ここで入力受付がスルーされる done  そこで質問なのですが、read以外にキー入力受付を 実現できるコマンドというものは存在するのでしょうか? もしなければ、回避方法は存在するのでしょうか? ちなみに実行環境は OS:HP-UX11.0 となっています。それでは宜しくお願いします。