このページの本文へ

前へ 1 2 3 4 5 次へ

行っとけ! Ubuntu道場! 第36回

~師範、コマンドが魔法の呪文みたいです!~

2011年02月10日 16時00分更新

文● hito(Ubuntu Japanese Team) イラスト●瀬尾浩史

  • この記事をはてなブックマークに追加
  • 本文印刷

もっと複雑なファイル指定をしてみよう

編集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:じゃあこの収録分続投で。

ミズノ:魔法の呪文大会、まだまだ継続!

瀬尾浩史:早くセオペンと契約して魔法少女になってよ! とか言い出さないから油断しておくといいペン。

やまね:いいのかそのネタ……。



前へ 1 2 3 4 5 次へ

カテゴリートップへ

この連載の記事

注目ニュース

ASCII倶楽部

プレミアムPC試用レポート

ピックアップ

ASCII.jp RSS2.0 配信中

ASCII.jpメール デジタルMac/iPodマガジン