すがブロ

sugamasaoのhatenablogだよ

若者が知らない最強のLinuxコマンドTips

タイトルは釣りぽよ〜

今日ここで書くのはわりかし最近知ったことだったりするのが多いんですが、せっかくなので書いておこうかなぁと思った次第です。Linuxって書いてるけど、普通にMacでも使えるハズです。
知ってる人にとってはアタリマエのことですけどね……。

ファイルサイズの桁でかすぎてがわからん

ls とか duあたりで使える話ですね。
ファイルサイズが大きすぎてパッと見わからないよっていうことってあるじゃないですか。ありますよね。いやある。
そんな時は -h オプションを使いましょう。

$ ls -l /var/log/nginx/access.log 
-rw-r--r-- 1 root root 1897381  826 02:50 2012 /var/log/nginx/access.log
$ ls -lh /var/log/nginx/access.log 
-rw-r--r-- 1 root root 1.9M  826 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  826 07:47 2012 access.log
-rw-r--r-- 1 root root 1447025  826 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の略だから覚えやすいね!

追記

grep には -C もあった!!

最後に

どうでも良いですけど、cddすごい便利なのでみなさん使ったら良いと思います。

*1:-d付けない時と一緒