もっと複雑なファイル指定をしてみよう
編集S:ということで、前ページの「for i in `find . -name '*.txt'`; do echo '====='; echo $i; echo '====='; cat $i ; done> matome.txt」を説明してほしいのだ。
小林:コマンドを一つずつ見ていけば簡単ですよがおー。
あわしろいくや:まず基本的には、「for i in ?対象になるファイル?; do 仕事; done」という構造ですな。?対象になるファイル?それぞれについて、「仕事」の部分の処理をする、というつくりです。「for i in 1.txt 2.txt 3.txt; do cat $i ; done」なんてものだと、「cat 1.txt; cat 2.txt; cat 3.txt」というのと同じです。
やまね:「for i in ??」の「i」がポイント。
編集S:なるほど。わからん。
hito:「for i in ??」は、「i」という変数に順番に「??」を入れていけ、ということだと思えばいいかと。実際の「仕事」の部分は、「i」という変数に入る「??」の数だけ繰り返されます。繰り返しの中で「i」を使わないと、「??の数だけ繰り返す」って部分だけが実行されます。「for i in 1.txt 2.txt 3.txt; do echo ls /;done」なんてやると、3回「ls /」が実行されることになります。
瀬尾浩史:で、「iの中身」を使いたい場合は、「$i」っていう表記を使うのペン。
ミズノ:とりあえず、「for i in 1.txt 2.txt 3.txt; do echo $i; done」ってのを実行してみると分かるんじゃないかと。
編集S:なんか画面に表示された。
ミズノ:で、それを「for i in 1.txt 2.txt 3.txt hoge; do echo $i ; done」なんてのにすると、なんとなーく「どういうものなのか」が掴めないですかね?
編集S:なんとなく理解。あくまで、なんとなく。
あわしろいくや:で、`find . -name '*txt'`の部分ですな。「`この部分`」の表記は、“この部分”で実行したコマンドの結果で置き換える、というものです。今回の場合だと、「find . -name '*.txt'」の実行結果で置き換える、と。
編集S:単品で「find . -name '*.txt'」を実行して、理解した気分になった。
やまね:あとは「do」以降の部分だけ、と。これは「do echo '====='; echo $i; echo '====='; cat $i 」ってだけで、特に難しい要素はない、と。↓みたいな出力をするためのコマンドが並んでいるだけだし。
===== ← 「echo '====='」で出力される
(ファイル名) ← 「echo $i」で出力される
===== ← 「echo '====='」で出力される
(ファイルの中身) ← 「cat $i」で出力される
編集S:なるほど……。あとはコマンドを組み替えれば色々できる、と。
瀬尾浩史:こういう黒魔術を即興で扱えるようになって一人前、みたいな時代もあったらしいペン。
hito:20世紀の話のような気がします……。まあ、扱えると便利なのは間違いないですし、できて損はしないですね。
あわしろいくや:一般人なら、できなくても問題ない気はしますな。
村田:あれ、いくやさん一般人(自称)じゃなかったで味噌?
あわしろいくや:ぐさっ。
ミズノ:ストレージゴッド、ここに眠る。
瀬尾浩史:ということでお時間なのですがペン。
編集S:あれ、ネタが全部終わってない?
hito:あと一回分は余裕でございます……。
編集S:じゃあこの収録分続投で。
ミズノ:魔法の呪文大会、まだまだ継続!
瀬尾浩史:早くセオペンと契約して魔法少女になってよ! とか言い出さないから油断しておくといいペン。
やまね:いいのかそのネタ……。
この連載の記事
-
第61回
PC
~師範、Ubuntu道場が最終回です!~ -
第60回
PC
~師範、組版システム「TeX」について教えてください!~ -
第59回
PC
~師範、Ubuntu関連のイベントを教えてください!~ -
第58回
PC
~師範、日本語Remixの作り方を教えてください!~ -
第57回
PC
~師範、Ubuntu独自のテクノロジーについて教えてください!~ -
第56回
PC
~師範、いまどきの仮想化について教えてください!~ -
第55回
PC
~師範、Ubuntu 12.04の特徴を教えてください!~ -
第54回
PC
~みなさん、Ubuntuに触ったきっかけを教えてください!~ -
第53回
PC
~師範、Ubuntuのヘビーユーザーってどんな感じでしょう?~ -
第52回
PC
~師範、Ubuntuは今後どうなるんですか?~ -
第51回
PC
~師範、ARMって何ですか!~ - この連載の一覧へ