Linuxゲリラ戦記

画像ファイルの置き場所のリストをテキストファイルに保存する。

左を向いているペンギンみたいなキャラクター、ナックス

52.画像ファイルの置き場所のリストをテキストファイルに保存する

ナックス「こんにちは。画像収集するシェルスクリプトを作ってみたい。今回は第17回」

ナックス「今回は51.imgタグの後半を削除するで表示できた画像ファイルの置き場所のリストをテキストファイルに保存します」

ナックス「ところで今まで何となくコマンドで使ってた|(パイプ)ですが『標準出力された内容を次のコマンドへ橋渡しする』みたいなやつです」

|
標準出力された内容を次のコマンドへ橋渡しする

ナックス「で、|(パイプ)の仲間で>(大なり記号)というのがあるのですが、これは『出力をリダイレクトする』やつなのです」

>
出力をリダイレクトする

ナックス「この>(大なり記号)を使うことで、テキストファイルに保存できます」

デビー君「どう使うの?」

ナックス「少し説明が不正確かもしれませんが『CUI環境に文字を表示するコマンド > テキストファイル名』というようにすればテキストファイルに文字が保存できます」

CUI環境に文字を表示するコマンド > テキストファイル名

ナックス「今回はlist.txtというファイル名で保存することにしましょう」

ナックス「つまり、今回実際に書くコードは『 > list.txt』です」

 > list.txt

ナックス「この『 > list.txt』を51.imgタグの後半を削除するで作成したシェルスクリプトの2行目の末尾に追加すれば良いです」

ナックス「ちなみにこの > はすでに同じ名前のファイルがある場合は上書き保存(つまり、すでに書かれている文字を全て削除してから、文字を保存)します」

ナックス「さて、実際にやって行きましょう。CUI環境を立ち上げて『cd imagework』とコマンドを打ってimageworkディレクトリに移動してください」

$ cd imagework/

ナックス「次に『nano imageget.sh』とコマンドを打って、nanoでimageget.shファイルを開いてください」

$ nano imageget.sh

ナックス「2行目の末尾に『 > list.txt』を書き加えてください」

#!/bin/sh
wget -O - "https://linuxgerira.com/imagesearch.php?q=%E5%85%AC%E5%BC%8F%E5%A3%81%E7%B4%99&iamp;page=1" | grep "<img" | sed -e 's/  <img src="//g' | sed -e 's/".*>//g' > list.txt

nanoを起動して2行目の末尾にコマンドを追記する

ナックス「書き加えたら、Ctrlキーを押しながらOキーを押した後に、Enterキーを押してファイルを保存し、Ctrlキーを押しながらXキーを押してnanoを終了してください」

ナックス「最後に『./imageget.sh』とコマンドを打って、実際にこのシェルスクリプトを実行してみましょう

$ ./imageget.sh

デビー君「Webサイトのダウンロード処理は表示されたけど文字は表示されない」

ナックス「そうです。CUI環境に文字を表示する代わりにlist.txtというファイルに保存したからです。『ls』コマンドを打ってみてください」

$ ls

デビー君「あ!list.txtっていうファイルがある!」

ナックス「そうでしょう。『nano list.txt』とコマンドを打ってnanoでlist.txtファイルの中身を見てみてください」

$ nano list.txt

nanoを起動してlist.txtの中身を確認する

list.txtの中身が表示できる

デビー君「なんかアドレスが色々書かれてる」

ナックス「そうです!これが51.imgタグの後半を削除するでCUI環境に表示した文字、画像ファイルの置き場所のアドレス(のリスト)なのです」

ナックス「中身を確認できたらCtrlキーを押しながらXキーを押してnanoを終了してね」

ナックス「次回!53.画像ファイルをダウンロードする