13/11/04 15:39:32.31 EVrN2Nvj0
>>38
ごめんなさいwget -iだとリストはURLしか期待されてないみたい
やっぱ上にあるワンライナーがスマートだと思う
41:名称未設定
13/11/04 15:53:42.16 aDA16vI60
皆さん、たくさんの意見ありがとうございます
初めは軽い気持ちで質問したのですが、とても参考になりました
改めて>>39さんの書き込みを調べて勉強してきます!!!!
42:名称未設定
13/11/04 16:30:25.92 aDA16vI60
とか良いつつ、最後に一つだけ
>>39 氏のワンライナー?って言うの?一行プログラム? なんですが、いわゆるPerlなのでしょうか?
最後にshって書いているのでsh シェルスクリプトというジャンルなのでしょうか?
日本語がおかしくて申し訳ないですがお願いします。
43:名称未設定
13/11/04 16:37:12.27 fx2M/wpt0
URLリストをperlの小さいプログラムで加工してコマンド列を作って、それをシェルに食わせて実行。
44:名称未設定
13/11/04 16:48:45.69 izI/O7VRP
>>43
お世話になります!
ありがとう、調べてくるよ!
45:名称未設定
13/11/04 16:57:14.48 wrrZw+Zh0
sed (& bash) で書くとこんな感じ(?)
cat URLLIST | while read URL
do
wget "$URL" -O "$(echo "$URL" | sed -e 's/.*¥/¥///;s/¥/.*//').html"
done
46:名称未設定
13/11/04 17:27:58.70 wrrZw+Zh0
bash だけでこんな感じで
cat URLLIST | while read URL
do
HOST="${URL#*//}";HOST="${HOST%%/*}"
wget "$URL" -O "$HOST.html"
done
ああ、そういえばという自己満
47:名称未設定
13/11/04 17:45:14.53 aDA16vI60
>>46
catで表示されたLISTを一行ごとにwgetしてるって事ですよね?
それぞれURLとHOSTに変数?として挿入してると
ところで、URLリストの1行目を読みこんで2行目を読み込んでみたいな処理はどこかで行ってるの?
上から順に読み込んで最終行で終了的なのは仕様なのでしょうか?
48:名称未設定
13/11/04 18:02:12.91 wrrZw+Zh0
while
do
done
が、繰り返し構文
read はコマンドで、標準入力からの1行を引数の変数(この場合URL)に展開し、終わり(最終行の次で終了)だとおわりだよーんとステータスを返す
while read なので、read が終わりだよーんになるまで繰り返す
URLからHOSTを取り出すのは文字列操作で、いろいろコマンドがあるわな、そういえばbashにも簡易にできたなというヘンテコな方法
ちなみに
cat URLLIST | while read URL
do
...
done
でなく
while read URL
do
...
done < URLLIST
でも同じ
49:名称未設定
13/11/04 18:10:03.53 aDA16vI60
なるほど、readは1行ずつ読んで終わりだよ~んまで繰り返す処理なんですね。
非常に分かりやすかったです、先生みたいだ。 いや、師匠か
このスレは神様がいっぱいやで~
50:名称未設定
13/11/04 18:21:24.04 wrrZw+Zh0
readは標準入力から1行読み込んでみて、読み込めたら展開して終わりじゃないよを返すか、もう無くて読み込めなかったら終わりだよを返すかだけ
readの様子を見て繰り返すのが
while
do
done
1行ずつ読んで終わりだよ~んまで繰り返す処理は while ; do ;done; と read のニコイチでだよ
51:名称未設定
13/11/04 18:41:11.65 vHRMyjTe0
さっさと>>3でも買って読めよ
52:名称未設定
13/11/04 18:47:34.57 aDA16vI60
>>50
cat「おら!read!ファイルはココだ読め!
(まぁ何行あるか教えてあげないけどな)」
while「ほら早く行ってこい!」
read「whileさん読めました!
次の行にも何か書いてあるけど1行目持ってきました!」
while「1行目をwgetに渡して処理完了っと
おらread!次の行有るなら持ってこいや!」
read「アイアイサー、2行目です! 次は無かったよ!」
while「お?次は無いんだな?wgetに渡して完了っと
>>50さん完了です!」
done!!!
って事ですか?
53:名称未設定
13/11/04 18:49:12.92 0/acsXUp0
O'Reilly Japan - 入門 Unix for OS X 第5版
URLリンク(www.oreilly.co.jp)
54:名称未設定
13/11/04 19:38:40.11 KX48SxSl0
>>10
求める内容として商標や試験をパスしたUNIXとして使う訳じゃなくて、
それら商標以外の伝統的な意味のUnixとして使う。だから小文字で良いはず。
ソニーのウォークマン以外も含むポータブルカセットプレイヤ全般スレ的な感じの
Unixとして使うスレ。
ソニーの許諾得てるからウォークマンで問題ない。的なツッコミは
参考程度にしか求められていない。
55:名称未設定
13/11/04 19:42:15.98 TrapeCq/0
>>53
Learning Unix for OS X Mavericks
の日本語版はいつ出ますか?
56:名称未設定
13/11/04 19:57:08.77 wrrZw+Zh0
>>52
done は while do の終わりがここだよというのを示すだけ。Cで言うと
while( read() ){
}
の
{ が do
} が done
かな。まあ>>51かな。またはなんかプログラミングの初歩的なものを
57:名称未設定
13/11/04 20:07:57.56 izI/O7VRP
>>56
ターミナルでちょっと長いけど一行で完結!
って奴を学ぶならどんな本を読めば良いですか?
オライリーのサイト?見てみたけど沢山あって、、、
58:名称未設定
13/11/04 20:14:48.42 wrrZw+Zh0
>>57
見過ごしていたけど>>53なんて、まさしくかなあ
内容がわからないけど、タイトル&宣伝文句&目次によれば
59:名称未設定
13/11/04 20:20:26.90 Mdzn2zzn0
>>57
つ URLリンク(dotinstall.com)
60:名称未設定
13/11/04 20:29:23.01 s2ci4qy40
wgetがデフォルトで入ってないので戸惑ったけど、
curl -Oで代用できるから困ってない。
自分でwgetインストールしなくてもこういう解法もある