タイトルは釣りぽよ〜
今日ここで書くのはわりかし最近知ったことだったりするのが多いんですが、せっかくなので書いておこうかなぁと思った次第です。Linuxって書いてるけど、普通にMacでも使えるハズです。
知ってる人にとってはアタリマエのことですけどね……。
ファイルサイズの桁でかすぎてがわからん
ls とか duあたりで使える話ですね。
ファイルサイズが大きすぎてパッと見わからないよっていうことってあるじゃないですか。ありますよね。いやある。
そんな時は -h オプションを使いましょう。
$ ls -l /var/log/nginx/access.log -rw-r--r-- 1 root root 1897381 8月 26 02:50 2012 /var/log/nginx/access.log $ ls -lh /var/log/nginx/access.log -rw-r--r-- 1 root root 1.9M 8月 26 02:50 2012 /var/log/nginx/access.log
わかりますでしょうか。2つ目のlsではファイルサイズが1.9Mと表示されていますね。ヒューマンリーダブル素晴らしいですね。
uniqコマンドで重複しているデータが欲しい
sortしたりしたデータの中で、重複したデータだけ欲しいことってあるじゃないですか。ありますよね。いやある。
そんな時は -d オプションを使いましょう。
$ cat hoge 1 2 2 3 $ cat hoge | uniq 1 2 3 $ cat hoge | uniq -d 2
もちろん、-cを使えば何個重複しているかも表示してくれる*1のも素晴らしいですね。
sshでログインするんだけど、やりたいのは一回コマンド打つだけなんだよね
複雑なオペレーションしたいわけじゃなくて、ファイルの一覧を確認したいとか、ログをtailしたいだけなんだよね、みたいのってあるじゃないですか。ありますよね。いやある。
そんな時はsshに続けてコマンドを続けて書いてみよう。
sugamasao@GRAM% ssh hostname ls -l /var/log/nginx 合計 3280 -rw-r--r-- 1 root root 1898253 8月 26 07:47 2012 access.log -rw-r--r-- 1 root root 1447025 8月 26 07:47 2012 error.log
ルーチンワークみたいのがあるなら、こういうの使うと良いですね。
grepしたけど、本当にみたいのはその上の行なんだよねぇ
Railsのログのように、行指向なログではない場合、grepのキーとなる文字列と確認したい文字列が同じ行にない場合ってあるじゃないですか。ありますよね。いやある。
そう。特定のURLのレンダリング時間とかね。
そんな時はgrep -A や -B を使おう。
sugamasao@GRAM% grep -A 5 'GET "/blogs"' log/development.log Started GET "/blogs" for 127.0.0.1 at 2012-08-26 16:55:29 +0900 Connecting to database specified by database.yml Processing by BlogsController#index as HTML Blog Load (0.1ms) SELECT "blogs".* FROM "blogs" Rendered blogs/index.html.erb within layouts/application (2.8ms) Completed 200 OK in 75ms (Views: 29.7ms | ActiveRecord: 2.0ms) -- Started GET "/blogs" for 127.0.0.1 at 2012-08-26 16:56:47 +0900 Connecting to database specified by database.yml Processing by BlogsController#index as HTML Blog Load (0.1ms) SELECT "blogs".* FROM "blogs" Rendered blogs/index.html.erb within layouts/application (2.5ms) Completed 200 OK in 77ms (Views: 30.3ms | ActiveRecord: 2.0ms)
もちろん、-nとかと一緒にも使える。-Aと-Bはbeforeとafterの略だから覚えやすいね!
*1:-d付けない時と一緒