vi と腕試し

INPUT · スライド

腕試し

01 / 08

ここからは、道具を渡さない

最後の回だよ。ここまでよく来たね。

この回は、新しい命令を1つも教えないんだ。出てくるのは全部、あなたがもう覚えたものだよ。

違うのは問題文だよ。

これまで   「`grep` で数えてね」これから   「404 がいくつあるか知りたい」

何が欲しいかだけを書くんだ。どの道具をどう使うかは、あなたが決めるんだよ。

最初は不安かもしれないね。でも思い出してほしいんだ。

仕事の現場では、誰も道具を指定してくれない

「ログの中の404を数えて」と頼まれるでしょう。「grep -c を使って数えて」とは言われないんだ。

だからこの回があるんだよ。

進め方のこつを渡しておくね。

1. 欲しいものを言葉にする2. それに近い道具を思い出す3. 小さく試す4. 結果を見て直す

いきなり正解を打とうとしないでしょう。試して直すのが端末の使い方だからね。

困ったときの逃げ道も、全部そろっているよ。

ls        いまどうなっているか見るcat       中身を確かめるコマンド --help   使い方を読むEsc :q!   vi から逃げる

確かめる手を持っているでしょう。詰まったら見ればいいんだ。

さあ、始めよう。10問だよ。

02 / 08

思い出せるように — 見る・探す

道具の棚を、ざっと見せておくね。細かい使い方は忘れていてもいいよ。「こういうことができた」と思い出せれば、あとは --help で調べられるでしょう。

まず、見るための道具だよ。

ls        そこに何があるか(章1)pwd       いまどこか(章1)cat       中身を全部(章3)head tail 頭だけ・末尾だけ(章3)less      長いものを少しずつ(章3)wc        数える(章3)

次に、探すための道具だね。

find      名前や種類でファイルを探す(章4)grep      中身に書いてある行を探す(章5)

2つの違いを押さえておいてね。

find   ファイルを探す(外側)grep   ファイルの中を探す(内側)

「どのファイルか」なら find、「どの行か」なら grep でしょう。

grep はよく使うので、形も並べておくね。

grep 語 ファイル      その語がある行grep -c 語 ファイル   その語がある行の数grep -v 語 ファイル   その語が無い行grep -n 語 ファイル   行番号つき

-c-v は特によく出てくるよ。

「いくつある?」    -c「それ以外は?」    -v

この2つが出てくる問題があるからね。頭の隅に置いておいてね。

03 / 08

思い出せるように — 加工する・つなぐ

取ってきたものを加工する道具だよ。

sort      並べ替える(章5)uniq      重なりをまとめる(章5)cut       列を切り出す(章5)tr        文字を置き換える(章5)sed       行を置き換える(章5)awk       列を使って計算する(章5)

そして、それらをつなぐ道具だね。

|    左の出力を右の入力に(章4)>    ファイルに書く(章4)>>   ファイルに足す(章4)<    ファイルから読む(章4)

| でつなぐのが端末のいちばんの武器でしょう。

cat ログ | grep 404 | wc -l

小さい道具を並べて、大きな仕事をするんだ。1つの道具に全部やらせようとしなくていいんだよ。

よく使う組み合わせを思い出しておいてね。

sort | uniq        重なりを消すsort | uniq -c     数を数えるsort | uniq -d     重なっているものだけgrep 語 | wc -l    数える(-c と同じ)

2つ目は特に強いよ。

sort namae.txt | uniq -c      3 sato      2 suzuki      1 tanaka

「どれが何回出たか」が一目で分かるでしょう。ログを見るときに何度も使うんだ。

sort が要るのはなぜか

uniq隣り合った同じ行しか見ないからだね。だから先に並べるんだ。この理由まで覚えていると、忘れても組み立て直せるでしょう。

04 / 08

思い出せるように — 直す・動かす

ファイルを作ったり直したりする道具だよ。

mkdir     ディレクトリを作る(章2)touch     空のファイルを作る(章2)cp mv rm  写す・動かす・消す(章2)vi        中身を直す(章13)echo >    書く(章4)

権限とプロセスの道具も忘れないでね。

chmod     実行の印を付ける(章6)ps kill   動いているものを見る・止める(章8)./名前    スクリプトを動かす(章11)

そして、シェルの道具だね。

変数        名前=値 と $名前(章10)for         繰り返す(章11)if          場合分けする(章11)$?          うまくいったか(章11)

for は「同じことを何回も」のときに出すんだ。

for i in 1 2 3; do  echo "web$i"done

手で3回打つより速いでしょう。

vised の使い分けも、もう一度書いておくね。

sed   まとめて替える(速い・見ない)vi    1か所ずつ替える(遅い・確かめられる)

どちらでもいい問題が出てくるよ。答えが合っていればどちらでも正解だからね。

道具は目的ではなく手段

欲しい結果に届けば、道は1つでなくていいんだ。だから「模範解答と違う打ち方をした」ことを気にしなくていいよ。

05 / 08

詰まったときの3つの手

解けない問題があったら、この順にやってみてね。

1つ目 — いまどうなっているかを見る

lscat ファイルpwd

思い込みで進むのがいちばん危ないでしょう。ファイルの中身を見れば、次にやることが分かることが多いんだ。

2つ目 — 小さく分けて試す

cat ログ | grep 404 | wc -l    (長い)

これが動かないなら、左から順に試すよ。

cat ログ                (出るか)cat ログ | grep 404     (絞れるか)cat ログ | grep 404 | wc -l

どこで壊れているかを突き止めるんだ。章3で「メッセージをそのまま読む」と言ったのと同じ考え方だね。

3つ目 — 道具に聞く

grep --helpwc --help

使い方は道具が知っているでしょう。覚えていなくていいんだ。

それでも分からないときは、ヒントを開いてね。この回のヒントは道具名を言わない代わりに、どの章でやったかを書いてあるよ。

「数えるものは章3でやったね」

思い出す手がかりだけを渡すんだ。答えは自分で組み立ててね。そのほうが身につくからね。

06 / 08

確かめてから終わる

この回の問題は、やったことを確かめるところまでが仕事だよ。

直した → 確かめた → 終わり

確かめていないものは、終わっていないんだ。

確かめ方の型を渡しておくね。

作った    ls で在ることを見る直した    cat や grep で中身を見る数えた    別の方法でもう一度数える消した    ls や grep で無いことを見る

「無いこと」を確かめるのが抜けやすいでしょう。

grep -c 語 ファイル    0 なら無いls ファイル            エラーなら無い

2つの角度から挟むのも思い出しておいてね。

欲しいものが在るか欲しくないものが無いか

片方だけでは足りないんだ。この course で何度も出てきたことだね。

置き換えた   替わった数 + 残っていない数消した       消えたもの + 残したもの作った       在ること + 中身

両方見れば、間違いが見つかるでしょう。

そして、いちばん大事なことをもう一度。

> 機械に数えさせる

目で数えるのは間違えるんだ。wcgrep -c があるでしょう。あなたはもう、機械に仕事をさせられる人なんだよ。

07 / 08

13章を振り返る

最後の問題を解く前に、歩いてきた道を見ておこうね。

章1   いまどこに居るか(pwd cd ls)章2   作る・写す・消す(mkdir cp mv rm)章3   中身を読む(cat head tail less wc)章4   探す・つなぐ(find | > <)章5   絞る・並べる(grep sort uniq cut sed awk)章6   権限(chmod 読み方)章7   ユーザーとグループ(su useradd)章8   プロセス(ps top kill &)章9   ファイルシステム(df du ln tar)章10  シェルの決まり(変数 展開 PATH)章11  スクリプト(#! for if $?)章12  動かし続ける(cron logger ip ping httpd)章13  vi(Esc i 移動 消す 写す 探す)

13章、これだけのことを覚えたんだ

最初の回で、こう書いたのを覚えているかな。

黒い画面は、怖くない

いまはどうかな。

ls を打てば、そこに何があるか分かるcat を打てば、中身が読めるvi を開いても、Esc :q! で必ず出られる

知らないものが減ったでしょう。それが「怖くない」ということなんだ。

これから先も知らない命令に出会うよ。でも、あなたはもう手順を持っているんだ。

--help を読む小さく試す結果を確かめる

この3つがあれば、どんな道具も使えるようになるからね。それが13章でいちばん持って帰ってほしいものだよ。

08 / 08

さあ、腕試し

10問だよ。順番に難しくなっていくよ。

1〜3   1つの道具で解ける4〜7   2つ3つをつなぐ8〜10  考えて組み立てる

最後の3問は、少し時間がかかるかもしれないね。それでいいんだ。現場の仕事も、すぐには終わらないでしょう。

心構えを3つ渡しておくね。

間違えていい

打ち間違えた → もう1回打つ消しすぎた   → u か :q!分からない   → ヒントを開く

壊れないように作ってあるからね。思いきってやってね。

答えは1つじゃない

grep -c 404 ログgrep 404 ログ | wc -l

どちらでも同じ数が出るでしょう。模範解答と違っても、結果が合っていれば正解だよ。

分からなくても進んでいい

1問詰まっても、次に行っていいんだ。あとで戻ってくればいいでしょう。

全部解けなくても、あなたは端末を使える

ここまで13章を歩いてきたこと自体が、もう答えだよ。

では、始めよう。あなたの道具は、あなたの手の中にあるからね。