シェルで覚えておいた方がよいと思うのがfind, forです。
cd, ls, cat, tail, grepあたりはみんなが覚えていますが、find, forを使いこなす人はあまりいません。
しかし、日常的にfind, forを使えるようになるととても便利です。
シェル
Linuxを習う時、まずシェル(多くはbash)の使い方を覚えます。
Windowsではcmdを出さなくても何とかなりますが、Linuxでターミナルを出さずに何かをするのは困難ですから。
最初に覚えるのは、cd, ls, cat, tail, grepあたりでしょうか。
これくらいしか使えない人が多いです。
次のレベルはfind, forが使えるようになることです。
findとforを使えるようになると作業が捗るようになります。
本格的にシェルを学びたい方は以下の本がお薦めです。超ロングセラーです。
findの使い方
findは何らかの条件をみたすファイルのリストを出力します。
カレントディレクトリの配下の(最下層まで含めた)ファイルを表示するには、
find . -type d -print
※最近では-printはいらないみたいですが、私は古い人間なのでつけてしまいます
同様にファイル一覧は、
find . -type f -print
いちばんよく使うのはファイル名検索です。例えばカレント配下のreadmeを探したい場合
find . -name "*readme*" -print
たったこれだけなんですが、覚えておいた方がよいです。
ソースファイルやヘッダファイルを検索するとき、トレースファイルを検索するときなどに重宝します。
forの使い方
if, while, caseなど制御文はあります。これらはシェルスクリプトではよく使いますがワンライナーで使うのは珍しいです。
しかし、forだけはワンライナーでよく使います。
forの使い方は、以下です。
for 変数 in リスト do コマンド done
doとかdoneとかが面倒ですが、そのまま覚えておきます。
例えば、00.txtから99.txtまでのファイルを作りたいとき
for a in {00..99} do touch $a.txt done
テストをするときなどにこういうことをやりたくなります。
リストの中にはいろいろ入れることができますが、例えばlsの結果を入れたいときはlsをバッククォートで囲んでください。下の例もlsをバッククォートで囲んでください。
for a in
ls
do
wc -l $a
done
これはパイプしてxargsかますのと大体同じです。
ls | xargs wc -l
私は直観的にfor文の方が分かりやすいような気がします。
findの結果をforのリストに入れるのもありです。
for a in find . -name "*readme*" -print
do
wc -l $a
done
※findから-printまでバッククォートで囲んでください
このくらいまでは日常的にできるようになると周りのエンジニアに一目置かれます。
まとめ
シェルを使う方々、findとforの使い方は覚えましょう。
コメント