トップページunix
1001コメント351KB

シェルスクリプト総合 その16

■ このスレッドは過去ログ倉庫に格納されています
0001名無しさん@お腹いっぱい。2010/02/20(土) 14:10:05
シェルスクリプトの総合スレです。 
スクリプトのお勉強・自慢・腕試しなどにどうぞ。 
まずは注意点、リンク、地鎮祭など(>>1-6くらい)をご覧ください。 

□お約束 
・特記なき場合はBourne Shell(/bin/sh)がデフォルトです。 
 bash/zsh/ksh/ashなどに依存する場合は明示しましょう。 
 Linuxユーザは/bin/shの正体がbashなので特に注意。 
 FreeBSDユーザは/bin/shの正体がashなので注意。 
 v7 shに一番近くて、現役のshは、OpenSolaris由来のheirloom sh。 
  http://src.opensolaris.org/source/xref/onnv/onnv-gate/usr/src/cmd/sh/ ;
  http://heirloom.sourceforge.net/sh.html ;
・csh/tcshのシェルスクリプトは推奨されません。 
 (理由は「csh-whynot」でググれ) 
・UNIXにはシェルスクリプトに便利な小さなコマンドがいろいろあります。 
 manや参考リンクを見ましょう。 
 aproposないしはman -kでそれらしい単語による簡単な検索もできます。 
・シェルスクリプトのことをシェルってゆーな 
・シェルで使えるワイルドカード等は正規表現ではありません。 
 正規表現の話題はスレ違い(正規表現スレへ) 

□初心者へのアドバイス: 
・適した道具を判断するのも頭の重要な使い方。シェルスクリプトよりも 
 RubyやPerlの方が適した仕事には素直にそちらを使いましょう。 
・知らないコマンドが出てきたらmanを引きましょう。 
・思い通りに動かないときは、まずは sh -x でトレースしましょう。 

前スレ 
シェルスクリプト総合 その15
http://pc12.2ch.net/test/read.cgi/unix/1246408968/l50
0244名無しさん@お腹いっぱい。2010/05/06(木) 13:08:32
>>240
eval
0245名無しさん@お腹いっぱい。2010/05/06(木) 13:15:37
>>243
その判断基準だとOpenSolarisも板違いになってしまいますな。
0246名無しさん@お腹いっぱい。2010/05/06(木) 13:16:01
OpenSolarisってbashだろ?
0247名無しさん@お腹いっぱい。2010/05/06(木) 13:17:58
>>246
OpenSolarisの /bin/sh の正体は ksh93 (Solaris10以前とは違う)

OpenSolarisの bashは /bin/bashで、/bin/shとは別。
02482402010/05/06(木) 13:36:52
>>242
空白区切りだと hoge.example.net:を全てに付与できなさそうなのです。

>>243
wwwwwww
Mac OS XなのでUNIXですけどwwww

>>244
とりあえず eval でいけそうですね。

FILES="{tex,org,.emacs.d,.w3m}"
rsync -avzu -e ssh `eval echo ${FILES}` hoge.example.net:
rsync -avzu -e ssh `eval echo hoge.example.net:${FILES}` .

こういう感じでしょうか
ありがとうございました。
0249名無しさん@お腹いっぱい。2010/05/06(木) 13:39:14
Mac OSはbash七日?

> rsync -avzu -e ssh `eval echo hoge.example.net:${FILES}` .
こっちはeval不要。
02502402010/05/06(木) 13:50:49
>>248
% ls -l /bin/{sh,bash}
-rwxr-xr-x 1 root wheel 1346544 2010-02-05 09:41 /bin/bash*
-r-xr-xr-x 1 root wheel 1346624 2010-02-05 09:43 /bin/sh*
% diff /bin/{sh,bash}
Binary files /bin/sh and /bin/bash differ

微妙に違うみたいですがほとんど同じなのかも知れません。

eval 不要でしょうか?
evalがないと、
ls -d `echo hoge.example.net:${FILES}`
ls: cannot access hoge.example.net:{tex,org,.emacs.d,.w3m}: No such file or directory
となって{}を展開してくれませんでした。
0251名無しさん@お腹いっぱい。2010/05/06(木) 14:00:10
Macなら新Mac板で聞けば。
0252名無しさん@お腹いっぱい。2010/05/06(木) 14:01:45
>>250
rsync -avzu -e ssh hoge.example.net:${FILES} .

ところで、FILESじゃなくてDIRSだろ。
0253名無しさん@お腹いっぱい。2010/05/06(木) 14:04:08
ディレクトリもファイルだと教わらなかったか?
0254名無しさん@お腹いっぱい。2010/05/06(木) 14:27:32
>>251
なぜ?
0255名無しさん@お腹いっぱい。2010/05/06(木) 22:19:46
>>249
$ echo $SHELL
/bin/bash
$ bash --version
GNU bash, version 3.2.17(1)-release (i386-apple-darwin9.0)
Copyright (C) 2005 Free Software Foundation, Inc.
0256名無しさん@お腹いっぱい。2010/05/07(金) 12:22:19
お前のログインシェルなんて誰も聞いちゃいない
0257名無しさん@お腹いっぱい。2010/05/07(金) 21:52:57
>>256
お前バカだろ
0258名無しさん@お腹いっぱい。2010/05/07(金) 22:02:52
一応/bin/shのも貼ってあげるよ。

$ /bin/sh --version
GNU bash, version 3.2.48(1)-release (x86_64-apple-darwin10.0)
Copyright (C) 2007 Free Software Foundation, Inc.
$ ls -il /bin/sh /bin/bash
12727992 -rwxr-xr-x 1 root wheel 1346544 2010-02-05 09:41 /bin/bash*
12728038 -r-xr-xr-x 1 root wheel 1346624 2010-02-05 09:43 /bin/sh*

てっきりハードリンクだろうと思ったらちがったので驚いている。
0259名無しさん@お腹いっぱい。2010/05/07(金) 22:03:23
>>255
Mac OS Xの /bin/shは Bash七日? と聞いてるんだから、
$ /bin/sh --version の結果を貼らないと。
0260名無しさん@お腹いっぱい。2010/05/08(土) 00:10:32
まーどうでもいいけど
0261名無しさん@お腹いっぱい。2010/05/09(日) 04:44:03
mencoderって知ってますか? 下記のような表示が流れるのですが
Ex.
Pos: 0.3s 10f ( 0%) 4.88fps Trem: 15min 14mb A-V:0.023 [0:0]

こういったコマンドの表示を必要な部分だけ切り出して表示したり、
プログレスバーを作ったりしたいのですが可能でしょうか?
Bashでエスケープシーケンスを使うんだろうなぁって思うのですが、とっ
かかりが分からなくて。

ご存じであれば、ご教授お願いします。

0262名無しさん@お腹いっぱい。2010/05/09(日) 10:17:47
教授はあげません
0263名無しさん@お腹いっぱい。2010/05/09(日) 10:36:48
「お願い」であって「下さい」では無い。
0264名無しさん@お腹いっぱい。2010/05/09(日) 11:07:02
>>261
bash仮定していいのかな、この場合。

* IFSとset
* ${var#pattern} # のほかに ## % %% など。
* sedのような外部コマンド
0265名無しさん@お腹いっぱい。2010/05/09(日) 11:15:18
>>264
mencoderだということをわかって回答してる?

mencoderが出してくるメッセージは改行なしで1行を書き換えたりしてるので、
行単位に処理する方法では対応できないし、画面に見える文字のまま取り出せる
わけではないんだよ。
0266名無しさん@お腹いっぱい。2010/05/09(日) 11:24:15
             /)
            ( i )))
     / ̄\  / /
     |  ^o^ | ノ / < いみがわかりませんなぁ
     \   /  ,/
     / _   /´
    (___)/
0267名無しさん@お腹いっぱい。2010/05/09(日) 11:36:33
単にCRで同一行に重ね書きしてるだけだよ。それ以上のカーソル制御しているわけじゃない。
でも、mencoder改造した方が楽だよね。
0268名無しさん@お腹いっぱい。2010/05/09(日) 11:45:22
>>267
いや、少なくとも ESC [ J とかのシーケンスは含まれてる。
0269名無しさん@お腹いっぱい。2010/05/09(日) 11:49:43
TERM=unknownで実行すればいい。正しく作られているならそんなコードは出なくなるはず。
0270名無しさん@お腹いっぱい。2010/05/10(月) 16:00:31
超初心者です。入門UNIXshるプログラミングという本で勉強中ですが、
バッククォートによるコマンド置換の説明で以下のコマンドが出てきました。

STRING=`echo "abc \`echo def\` ghi"`
echo $STRING

期待値は abc def ghi ですが、
\`echo def\` 部分が `echo def` という文字列にならずコマンドとして
認識されるい理由がわかりません。
かといってバックスラッシュ取っちゃうと動かないわけで。
0271名無しさん@お腹いっぱい。2010/05/10(月) 16:16:21
>>270
外側の ` ` で囲まれている時点で、
たとえ " " で囲んでも、" " の中のバッククォートの意味は消えない。
よって、` ` のネスティングとみなされてコマンド置換される。

バックスラッシュを取ると動かなくなるのは、
そうすると最初の `echo "abc ` まででクォートとみなされて
解釈が期待通りにならないから。
0272名無しさん@お腹いっぱい。2010/05/10(月) 16:22:33
>>270
バックスラッシュの部分は、シェルと、外側のechoコマンドとによって
2回解釈されるので、解釈の結果コマンド置換が実行される。
0273名無しさん@お腹いっぱい。2010/05/10(月) 16:28:16
>>271

大外の `` がポイントということですか。納得です。
バックスラッシュ取ると動かなくなる理由は、そいういう
ことなんだろうなと思ってました。

即レスTHXです。
0274名無しさん@お腹いっぱい。2010/05/10(月) 16:56:17
STRING=$(echo "abc $(echo def) ghi")
0275名無しさん@お腹いっぱい。2010/05/10(月) 16:58:04
ブルースブリンの本か?あの本は古臭いな、色々と
0276名無しさん@お腹いっぱい。2010/05/10(月) 17:11:09
>>275
まだ最初の数十ページしか読んでないけど、丁寧に説明してくれてて
読みやすい。tips的な解説もあるし。
どういうところが古臭いと感じるん?

>>274
( ) の説明はまだ数ページ先だ!笑
0277名無しさん@お腹いっぱい。2010/05/14(金) 13:41:09
bashを使っています。
echo hoge > /dev/tcp/192.168.0.10/5000
を実行したのですが、接続されません。
/dev/tcp/192.168.0.10/5000: No such file or directory
になってしまいます。なぜでしょうか。

192.168.0.10:5000にはサーバプログラムが存在してて
telnet等で接続可能な状態です。
0278名無しさん@お腹いっぱい。2010/05/14(金) 13:45:41
犬板に行きなさい。
0279名無しさん@お腹いっぱい。2010/05/14(金) 14:01:13
ああ、UNIXにはbashなかったんだっけ?失礼しました。
Linux板に行ってきます。
0280名無しさん@お腹いっぱい。2010/05/14(金) 14:02:41
>>277
エスパーすると、bashを使ってるつもりでbashではないのでは?

接続されない場合は、connect: Connection refused と表示され、
No such file or directory とはならない。

bash以外のシェルだと、No such file or directoryになるので。
0281名無しさん@お腹いっぱい。2010/05/14(金) 14:07:11
>>277
間違えて csh(笑) で実行するとそのメッセージになるな。
0282名無しさん@お腹いっぱい。2010/05/14(金) 14:31:11
bash-1.x というオチもあるな。
0283名無しさん@お腹いっぱい。2010/05/14(金) 14:45:01
ディス鳥によっては /dev/tcpの機能がdisableされてコンパイルされてるらしい。
0284名無しさん@お腹いっぱい。2010/05/14(金) 14:48:16
実はbashだけどlinuxでなかったとか
0285名無しさん@お腹いっぱい。2010/05/14(金) 14:54:18
バカ? /dev/tcpだから犬板行けって言ったんだよ。
0286名無しさん@お腹いっぱい。2010/05/14(金) 14:56:05
>>284
linuxじゃなくても bashなら /dev/tcp は使えるよ。デバイスファイルじゃないし。

>>285
おまえあほ。
/dev/tcpなんてデバイスファイルはない。
これは Bashの機能。

FreeBSDでも bashを使えば /dev/tcp は使える。
0287名無しさん@お腹いっぱい。2010/05/14(金) 15:11:54
バカ? こんな腐った機能を無効にしてる良心的なディストリもあるから犬板行けって言ったんだよ。
0288名無しさん@お腹いっぱい。2010/05/14(金) 15:15:28
>>287
言い訳見苦しいね。Linuxを目のカタキにしてると /dev/tcpが Linux独自のデバイスに
見えたんだろうね。*BSDでもSolarisでも bashで /dev/tcpは使えるんだよwww
0289名無しさん@お腹いっぱい。2010/05/14(金) 15:30:24
>>288
必死だな。バカ。
そのように見えたというソース出せよ。ww
0290名無しさん@お腹いっぱい。2010/05/14(金) 15:42:30
>>289
>>285
0291名無しさん@お腹いっぱい。2010/05/14(金) 15:59:19
へ〜、/dev/tcp初めて知った。 /dev/tcpなんてファイルは無いのに
ソケットを開くという特別解釈をbashの中でしてるんだ。 キモイ。
0292名無しさん@お腹いっぱい。2010/05/14(金) 16:01:29
必死だな。バカ。他人の揚げ足とる事だけ考えてるから、
> 言い訳見苦しいね。Linuxを目のカタキにしてると /dev/tcpが Linux独自のデバイスに
> 見えたんだろうね。*BSDでもSolarisでも bashで /dev/tcpは使えるんだよwww
こういうバカな思いつきをするんだろうな。
お前、昨日FreeBSDスレに居たJava厨だろ。バカさ加減が同レベルだ。ww
0293名無しさん@お腹いっぱい。2010/05/14(金) 16:09:27
>>285 さんからの遺言です

>バカ? /dev/tcpだから犬板行けって言ったんだよ。
>バカ? /dev/tcpだから犬板行けって言ったんだよ。
>バカ? /dev/tcpだから犬板行けって言ったんだよ。

とても恥ずかしいことなので3回言いましたwww
0294名無しさん@お腹いっぱい。2010/05/14(金) 16:14:34
Macのbashでも出来るぞw

$ bash --version
GNU bash, version 3.2.17(1)-release (i386-apple-darwin9.0)
Copyright (C) 2005 Free Software Foundation, Inc.
$ exec 3<>/dev/tcp/www.google.com/80
$ echo -e "GET / HTTP/1.1¥n¥n">&3
$ cat <&3
HTTP/1.1 200 OK
Date: Fri, 14 May 2010 07:12:54 GMT
...
02952772010/05/14(金) 16:20:58
すみません解決しました。
>>283さんのおっしゃるとおりでごわした。
0296名無しさん@お腹いっぱい。2010/05/14(金) 16:25:14
最近は awk でも同じような方法で tcp にアクセスできる世の中なんだよなぁ。
/dev/tcp じゃなくて /inet/tcp だけど。
0297名無しさん@お腹いっぱい。2010/05/14(金) 19:17:20
>>293
お前本当に頭が弱いな。

> *BSDでもSolarisでも bashで /dev/tcpは使えるんだよwww
> *BSDでもSolarisでも bashで /dev/tcpは使えるんだよwww
> *BSDでもSolarisでも bashで /dev/tcpは使えるんだよwww
> *BSDでもSolarisでも bashで /dev/tcpは使えるんだよwww
> *BSDでもSolarisでも bashで /dev/tcpは使えるんだよwww
使えてりゃ質問しねーんだよ。www
0298名無しさん@お腹いっぱい。2010/05/14(金) 19:22:04
>>297
お前本当に頭が弱いな。

bashで /dev/tcpが使えるはずなのに使えなかったから質問してたんだろ。
(もともと使えないものならそもそもそういう使い方をしないから質問もしない)
(オチは、./configure 時に --disable してただけ)


ところが、>>285 は、/dev/tcpというデバイスファイルがLinuxにはあって、
Linuxでしか /dev/tcpが使えないものと勘違いしたんだよ、、、
0299名無しさん@お腹いっぱい。2010/05/14(金) 20:20:13
>>298
お前かわいそうなくらい頭が弱いな。

> ところが、>>285 は、/dev/tcpというデバイスファイルがLinuxにはあって、
> Linuxでしか /dev/tcpが使えないものと勘違いしたんだよ、、、
それはお前の妄想。

*BSD(のports, pkgsrc)、Solaris(のコンパイル済みの奴)は使えるように
コンパイルしてある。従って使えないのは>>283の指摘通りそのようにコ
ンパイルしているから。

従って、>>285

> *BSDでもSolarisでも bashで /dev/tcpは使えるんだよwww
> *BSDでもSolarisでも bashで /dev/tcpは使えるんだよwww
> *BSDでもSolarisでも bashで /dev/tcpは使えるんだよwww
> *BSDでもSolarisでも bashで /dev/tcpは使えるんだよwww
> *BSDでもSolarisでも bashで /dev/tcpは使えるんだよwww
使えてりゃ質問しねーんだよ。www
0300名無しさん@お腹いっぱい。2010/05/14(金) 20:42:33
>>299
お前かわいそうなくらい頭が弱いな。

>>283 は俺だ。で、>>283 = >>298 = 俺だ。
結局俺の指摘が正しかった。

ちなみに、>>286 も俺。
だから、>>286 に指摘されるまで、 >>285 は /dev/tcp がLinux特有だと勘違いしていた。
0301名無しさん@お腹いっぱい。2010/05/14(金) 20:48:37
>>285 = >>283 が、仮に /dev/tcpのことを理解していたなら、
bashの/dev/tcpの質問に対して、「Linux板に行きなさい」と言った理由が
合理的に説明できないな。

よって、>>285 = >>283 は bashの/dev/tcp について知らなかった。
ここまでは決定的事実。
で、そこから演繹される事実として、
Linuxには/dev/tcpというデバイスファイルがあって、
Linuxカーネルによって/dev/tcpが処理されてる→Linux特有だからLinux板行け、
と誤って言ってしまったと言える。
0302名無しさん@お腹いっぱい。2010/05/14(金) 20:50:51
>>301

安価おかしくない?
>>285 = >>278 だろ?
0303名無しさん@お腹いっぱい。2010/05/14(金) 20:56:37
>>301
> bashの/dev/tcpの質問に対して、「Linux板に行きなさい」と言った理由が
> 合理的に説明できないな。
既に楽勝でしている。お前の低性能なJava脳がそれを理解できないだけ。ww
0304名無しさん@お腹いっぱい。2010/05/14(金) 21:14:27
>>303
>既に楽勝でしている。

って、


>>287
>バカ? こんな腐った機能を無効にしてる良心的なディストリもあるから犬板行けって言ったんだよ


これのことだよね。

これって、俺が >>283
>ディス鳥によっては /dev/tcpの機能がdisableされてコンパイルされてるらしい。

って正解言った後の、後出しじゃん。

つまり、>>287>>283 を見るまでは /dev/tcpについて知らなかったwww
0305名無しさん@お腹いっぱい。2010/05/14(金) 21:25:46
お前ら今日も全力だなw
わざわざ見に来る甲斐があるわ
0306名無しさん@お腹いっぱい。2010/05/14(金) 21:37:56
>>304
低脳全開だな。犬板への誘導はオレ(>>278)が真っ先にしている。
一々理由を説明する必要は無い。

> *BSDでもSolarisでも bashで /dev/tcpは使えるんだよwww
> *BSDでもSolarisでも bashで /dev/tcpは使えるんだよwww
> *BSDでもSolarisでも bashで /dev/tcpは使えるんだよwww
> *BSDでもSolarisでも bashで /dev/tcpは使えるんだよwww
> *BSDでもSolarisでも bashで /dev/tcpは使えるんだよwww
使えてりゃ質問しねーんだよ。www
0307名無しさん@お腹いっぱい。2010/05/14(金) 21:39:00
おまいら味噌汁ぶっかけんぞゴラァ!
0308名無しさん@お腹いっぱい。2010/05/14(金) 21:55:53
ぶっかけはオプションですよ。
0309名無しさん@お腹いっぱい。2010/05/14(金) 22:01:55
>>306 の主張ポイントがズレまくりで何を言いたいのかわからん。

「使えてりゃ質問しねーんだよ。」って何度も言ってるけど、
じゃあ、「*BSDでもSolarisでも bashで /dev/tcpは使えない」と主張したいの?

だとすると違うよ。実際使えるし。

ああ、やっぱり「Linuxのみで使える機能」と未だに思ってるんだな。
だから >>278 「犬板に行きなさい。」なんて言ったんだな(笑)
0310名無しさん@お腹いっぱい。2010/05/14(金) 22:05:01
>>306
> 犬板への誘導はオレ(>>278)が真っ先にしている。

↑っ言ってるけど、「犬板への誘導」自体が間違い、というのが結論なんだけど。
つまり、>>306 は、「真っ先に間違いを書き込みました」って
自分で認めてることになる。

よって、>>306 の負け。
0311名無しさん@お腹いっぱい。2010/05/14(金) 22:08:55
>>283
> ディス鳥によっては /dev/tcpの機能がdisableされてコンパイルされてるらしい。

が正解だけど、補足すると、「ディス鳥によっては」の部分は重要じゃなくて、
「/dev/tcpの機能はbashのコンパイル時に無効にすることもできる」
ってのがポイント。*BSDでもSolarisでも、/dev/tcp無効のbashは作れる。

よって、>>283 はLinux板に誘導はしていないし、Linux特有とも言ってない。

Linux板に誘導した >>278 、Linux特有と勘違いした >>278 が間違い。
0312名無しさん@お腹いっぱい。2010/05/14(金) 22:12:08
>>309
お前がバカで理解できないだけ。

>>310
> 「犬板への誘導」自体が間違い、というのが結論なんだけど。
お前の妄想。

> *BSDでもSolarisでも bashで /dev/tcpは使えるんだよwww
> *BSDでもSolarisでも bashで /dev/tcpは使えるんだよwww
> *BSDでもSolarisでも bashで /dev/tcpは使えるんだよwww
> *BSDでもSolarisでも bashで /dev/tcpは使えるんだよwww
> *BSDでもSolarisでも bashで /dev/tcpは使えるんだよwww
使えてりゃ質問しねーんだよ。www
0313名無しさん@お腹いっぱい。2010/05/14(金) 22:12:58
たぶん、
>>285
> バカ? /dev/tcpだから犬板行けって言ったんだよ。
を書いてる時点で、

>>283
>ディス鳥によっては /dev/tcpの機能がdisableされてコンパイルされてるらしい。

はすでに読んでたはずだけど、この「コンパイル」というのが、
bashのコンパイルじゃなくて、Linuxカーネルのコンパイルのこどだと
>>285 が誤解したんだろうな。

だから、>>283 を読んだ時点でもまだ「Linux特有の機能」と思い込んでいたからこそ、
>>285 みたいなことを書いたと説明がつく。
0314名無しさん@お腹いっぱい。2010/05/14(金) 22:14:08
>>313
壊滅的にバカだな。

> *BSDでもSolarisでも bashで /dev/tcpは使えるんだよwww
> *BSDでもSolarisでも bashで /dev/tcpは使えるんだよwww
> *BSDでもSolarisでも bashで /dev/tcpは使えるんだよwww
> *BSDでもSolarisでも bashで /dev/tcpは使えるんだよwww
> *BSDでもSolarisでも bashで /dev/tcpは使えるんだよwww
使えてりゃ質問しねーんだよ。www
0315名無しさん@お腹いっぱい。2010/05/14(金) 22:17:00
>>312
>> 「犬板への誘導」自体が間違い、というのが結論なんだけど。
> お前の妄想。


ということは、「犬板への誘導が正しい」と主張するわけ??

だったら、/dev/tcp が Linux独自のデバイスファイルであると
まだ思い込んでるの??

あと、試しに手元のFreeBSDとかのbashで試してみろ。
ちゃんと/dev/tcpが使えるから。
それでLinux板への誘導が間違ってたことが理解できたかい?
0316名無しさん@お腹いっぱい。2010/05/14(金) 22:24:16
>>315
ディストリよっては無効にされている場合がある。これはお前も言っている事だ。
この板で「XXというディストリです」と言われても「おそらく無効になっている」事しか
わからない、犬板なら「そのディストリは無効になっている」事までわかる。
だから犬板で聞くのが正しい。


> ということは、「犬板への誘導が正しい」と主張するわけ??
> ということは、「犬板への誘導が正しい」と主張するわけ??
> ということは、「犬板への誘導が正しい」と主張するわけ??
> ということは、「犬板への誘導が正しい」と主張するわけ??
> ということは、「犬板への誘導が正しい」と主張するわけ??
> ということは、「犬板への誘導が正しい」と主張するわけ??
お前、バカすぎる。考える事を止めた方が良い。www
0317名無しさん@お腹いっぱい。2010/05/14(金) 22:28:48
>>314
「*BSDでもSolarisでも bashで /dev/tcpは使える」は正しい。
「*BSDでもSolarisでもLinuxでも bashで /dev/tcpは使える」も正しい。

「*BSDでもSolarisでもLinuxでも、bashの./configureで/dev/tcpを無効にできる」も
正しい。

よって、どこにもLinux特有の事項がない。

元質問の >>277 にはOSは書いてなくて、
bashで/dev/tcp云々としか書いてないから、

これだけだと FreeBSDやSolarisで、bashを自分で./configureして
使っている可能性もある。

よって、>>277 の質問だけで >>278「犬板に行きなさい。」と言ったということは、
>>278 が /dev/tcpがLinux独自の機能だと誤解していたからに他ならない。
0318名無しさん@お腹いっぱい。2010/05/14(金) 22:32:29
>>316
>この板で「XXというディストリです」と言われても

↑言ってないことを仮定するな。事実を曲げるな。

元質問者の >>277 はディストリもOSも言ってない。

それから、>>283 「ディス鳥によっては /dev/tcpの機能がdisable…」を
見るまで正解を知らなかったくせに、後出しで >>283 が言ったことを
最初から知ってたようなふりするのをやめろ。
0319名無しさん@お腹いっぱい。2010/05/14(金) 22:36:24
>>316
UNIX板的には、bashを objdump -T してみて、
socket()などのネットワーク系の関数が呼び出されているかを確認して、
本当に /dev/tcpの機能が compile in されてるかどうか確認する方法を
教えることもできたはずだ。

これも、OSもディストリも関係なく行なえる方法だ。

なのに、>>278「犬板に行きなさい。」 がすべてを台無しにした。
0320名無しさん@お腹いっぱい。2010/05/14(金) 22:44:05
>>317
記述されていなくてもわかる。
デフォルト有効なのだから、野良コンパイルした場合に、知らずに無効になっている事はない。
従って、コンパイル済み(もしくはmake一発のports, pkgsrc)と予想できる。
そして、ports,Solarisは有効になっているのだから、残りはLinuxと予想できる。

バ カ に は 予 想 出 来 な い ら し い が。 w w w

>>318
知らなかったというのはお前の妄想。www

> 元質問者の >>277 はディストリもOSも言ってない。
犬臭さが漂ってるから楽勝でわかる。事実あたっている。
0321名無しさん@お腹いっぱい。2010/05/14(金) 22:44:22
>>316
>「XXというディストリです」と言われても「おそらく無効になっている」事しか
>わからない

>>319 が言うように、objdump -T で、/dev/tcpが無効になってるかどうか
確認する方法を知らなかったんですね(笑)
0322名無しさん@お腹いっぱい。2010/05/14(金) 22:47:42
>>320
>野良コンパイルした場合に、知らずに無効になっている事はない


知らずに無効になっている事は「ある」

野良コンパイルの参考に、Web等から ./configureのオプションをコピペして、
本人も忘れてることなんて普通にある。
0323名無しさん@お腹いっぱい。2010/05/14(金) 22:47:45
>>320
この予想プロセスはちょっと感心した
0324名無しさん@お腹いっぱい。2010/05/14(金) 22:49:49
>>319
後出しの言い訳。必死だな。

> *BSDでもSolarisでも bashで /dev/tcpは使えるんだよwww
> *BSDでもSolarisでも bashで /dev/tcpは使えるんだよwww
> *BSDでもSolarisでも bashで /dev/tcpは使えるんだよwww
> *BSDでもSolarisでも bashで /dev/tcpは使えるんだよwww
> *BSDでもSolarisでも bashで /dev/tcpは使えるんだよwww
使えてりゃ質問しねーんだよ。www
0325名無しさん@お腹いっぱい。2010/05/14(金) 22:51:14
>>323
後出しジャンケンだから何でも言えるよな。
実際そんな予想ができてたわけないのに。
0326名無しさん@お腹いっぱい。2010/05/14(金) 22:55:20
今北産業
0327名無しさん@お腹いっぱい。2010/05/14(金) 22:56:16
>>324 が何度もコピペしてる
「*BSDでもSolarisでも bashで /dev/tcpは使えるんだよwww」
って、誰への反論なの?

実際*BSDでもSolarisでも bashで /dev/tcpは使えるし、
>>324 自身は使えないと思ってたんだとすると、
>>324 が言ってることは「自分が間違ってたと」自分に言ってることになるだけど、、
0328名無しさん@お腹いっぱい。2010/05/14(金) 23:03:24
まとめ: >>278 = >>285 が知らなかった(そして恥をかいた)こと。

・/dev/tcpはLinux独自のデバイスファイルだと思っていた
・bashが/dev/tcpを特別扱いすることを知らなかった
・FreeBSD等でも、bashで/dev/tcpを使えることを知らなかった
・bashのコンパイル時に/dev/tcpを無効にすることができることを知らなかった
・OSやディス鳥がわからなくても、bashバイナリをobjdump -Tして調べる方法を知らなかった。
0329名無しさん@お腹いっぱい。2010/05/14(金) 23:08:17
今日はやけに盛り上がってるな
0330名無しさん@お腹いっぱい。2010/05/14(金) 23:12:38
俺も嬉しいよ
0331名無しさん@お腹いっぱい。2010/05/14(金) 23:17:18
>>327
>>288に決ってんだろ。

> *BSDでもSolarisでも bashで /dev/tcpは使えるんだよwww
> *BSDでもSolarisでも bashで /dev/tcpは使えるんだよwww
> *BSDでもSolarisでも bashで /dev/tcpは使えるんだよwww
> *BSDでもSolarisでも bashで /dev/tcpは使えるんだよwww
> *BSDでもSolarisでも bashで /dev/tcpは使えるんだよwww
使えてりゃ質問しねーんだよ。www

>>328
バカが、必死すぎる。www
0332名無しさん@お腹いっぱい。2010/05/14(金) 23:19:13
>>328
>・/dev/tcpはLinux独自のデバイスファイルだと思っていた

俺も最初そう思っちゃった。 で、自分のシステムには無いから
一生懸命カーネルオプションをあさり始めたw
0333名無しさん@お腹いっぱい。2010/05/14(金) 23:27:55
>>331
それを >>288 に言ってるなら、全然反論になってないじゃん。
>>288 の言ってることが正しいんだし。
0334名無しさん@お腹いっぱい。2010/05/14(金) 23:31:47
>>331
質問と回答は、質問者だけのものではない。
その質問と回答を読んだ第3者にとっても有益であるべきものだ。

質問がLinux独自のもので、Linux以外のUNIXユーザーに無益なものなら
Linux板への誘導が適当であろう。

ところが、>>288 が言うように、
「*BSDでもSolarisでも bashで /dev/tcpは使える」

よって、bashの/dev/tcpに関する質問と回答をUNIX板で行なうことは
UNIXユーザーにとって有益である。
0335名無しさん@お腹いっぱい。2010/05/14(金) 23:38:09
>>333
>>277が使用しているのが*BSDやSoalrisであるならば動くのだから、
*BSDでもSolarisを持ち出すのは的外れ。
そんな単純な事に気付かない>>288を大笑いしている。

> *BSDでもSolarisでも bashで /dev/tcpは使えるんだよwww
> *BSDでもSolarisでも bashで /dev/tcpは使えるんだよwww
> *BSDでもSolarisでも bashで /dev/tcpは使えるんだよwww
> *BSDでもSolarisでも bashで /dev/tcpは使えるんだよwww
> *BSDでもSolarisでも bashで /dev/tcpは使えるんだよwww
使えてりゃ質問しねーんだよ。www
0336名無しさん@お腹いっぱい。2010/05/14(金) 23:43:48
>>334
後付け&&自演乙

個々のディストリのコンパイルオプションなんて興味ねーんだよ。
しかもスクリプトに関する質問じゃねーし。
0337名無しさん@お腹いっぱい。2010/05/14(金) 23:44:06
>>335
> >>277が使用しているのが*BSDやSoalrisであるならば動くのだから、


その仮定が間違い。
>>322 で言ってるように、*BSDやSoalrisの野良コンパイルで、
知らずに /dev/tcpを無効にしてしまってることはある。


それから、
>>288 は質問者に対して答えてるんじゃなくて、
>>287 が/dev/tcpのことについて知らなかったみたいだから、
「*BSDでもSolarisでも bashで /dev/tcpは使えるんだよwww」
と教えてあげてるんだよ。

いずれにしても、キミが最初から本当に /dev/tcpのことを知っていた上で
Linux板に誘導したのではないことはバレバレ何だから、
見苦しい言い訳はやめとけ。
0338名無しさん@お腹いっぱい。2010/05/14(金) 23:46:57
>>336
>しかもスクリプトに関する質問じゃねーし。


ハイ、ここ間違い。/dev/tcpはスクリプトに関する質問。
インタラクティブにも使おうと思えば使えるが、
インタラクティブならtelnetとかnetcatが使えるからそんなことしない。
/dev/tcpでやろうとするのはスクリプトの場合。
0339名無しさん@お腹いっぱい。2010/05/14(金) 23:48:49
>>337
お前にはわからなかっただけで高い確率で予想出来ていた。事実合っている。
お前の言いがかりは既に論破されてる。低性能なJava脳のではそれが理解できてないだけ。

> *BSDでもSolarisでも bashで /dev/tcpは使えるんだよwww
> *BSDでもSolarisでも bashで /dev/tcpは使えるんだよwww
> *BSDでもSolarisでも bashで /dev/tcpは使えるんだよwww
> *BSDでもSolarisでも bashで /dev/tcpは使えるんだよwww
> *BSDでもSolarisでも bashで /dev/tcpは使えるんだよwww
使えてりゃ質問しねーんだよ。www
0340名無しさん@お腹いっぱい。2010/05/14(金) 23:49:05
>>294
このファイルディスクリプタの3がwww.google.comに対して
開かれているというのを調べる方法を教えて下さい。
lsofで調べてみたけど分かんなかった
0341名無しさん@お腹いっぱい。2010/05/14(金) 23:51:52
>>340
ls -l /proc/プロセスID/fd/3
でわかるでしょ?
0342名無しさん@お腹いっぱい。2010/05/14(金) 23:58:45
>>341
それだとsocketだということしかわからない。

>>340
lsof -i で接続先のホスト名まで出るけど
0343名無しさん@お腹いっぱい。2010/05/15(土) 00:10:19
>>341,342
ありがとうございます。
lsof -i
で出ました;-)
■ このスレッドは過去ログ倉庫に格納されています