2013年03月22日

意外と知らない・知らなくても良い?便利なコマンド、ツールの使い方 - 9選

ブログに書くほど面白い話も思いつかない今日このごろ・・・、今日はあくまで僕の主観で意外と”知らない・知らなくても良いかもしれないコマンド、ツールの使い方”をメジャーなものからマイナーのものまで*つ紹介してみます。

utilities-terminal-9

具体的な使い方はUbuntu (Linux) ベースで紹介しますが、Windows、Macでも使えるものもありますよ。

コマンドの実行履歴をhistoryに残さない


history、それなりの頻度で使うコマンドですよね。2,3日前にssh接続したホストの名前・アドレスを思い出せないなんて時には history に残った履歴を grep したりして。

$ history | grep ssh

しかし、時には history に履歴を残したく無い時もある。例えば外部アプリケーションがターゲット・ホストの状態監視の為にssh経由で実行しているコマンドなんて溜めても履歴のムダ使い・大事な履歴がバッファから消えちゃいますよね。

こんな時にはコマンドの先頭にスペースを挿入します。すると history には残りません。

$ <space> command

試してみると、ほらこの通り。

$ echo 1
$  echo 2
$ echo 3
---
$ history
  - snip -
  185  echo 1
  186  echo 3

もし、貴方がコマンド監視機能の実装担当者になったとしたら登録コマンドのトリムは後方(右)のみにした方が良さそうです。


空ファイルを作る


空ファイルを作って!、とお願いされたらどうします?、僕だったらまず touch が思いつくんですが、既に存在するファイルの中身を空にすることも考えると touch でも不十分かもしれません。となると $ echo "" > empty.txt あたりが思いつきますが、実は次のコマンドで空ファイルを作ることが出来ます。

$ > empty.txt

えー、知らなかった・・・。タイプ数も少ないし空ファイル作成のチャンピオンが決定しました(僕の中で)。


1ラインで踏み台ホスト・目的ホストを指定してssh接続する


直接は接続出来ないので、まずAというホストにログインしてから目的のBというホストにssh接続する。このケースもよく出てきます。僕なんかは最低限の使い方以外は覚えないタイプなのでいちいち A > B の順でsshログインしてたんですが、-t オプションを使えば1行でログイン(認証は2回)出来ます

ssh -t user1@192.168.1.100 ssh user2@172.16.0.100

この例では192.168.1.100に接続後、172.16.0.100に接続します。 history にも意図が分かる形で履歴が残りますし、スマートなところが良いですね。

-t オプションの応用例はもっと沢山あるので一度じっくり探してみるのも良いかもしれません。


vimの操作方法を始めて触る人に勉強してもらう


僕はvi・vim派で、もしCLIに始めて触れる人に”CLI上でファイルを編集したいんですが、どうすれば良いですか?”と相談されたら vi を進めます。そこから先はネット・本で学習してもらうわけですが、vimtutor を知っていれば、より直感的にCLI上で vi を学んでもらうことが出来ます。vimtutor は vim-runtime パッケージに含まれるコマンドで実行すると約30分で終了する vi チュートリアルを経験することが出来ます。

$ vimtutor

vimtutor

vim の為の vimtutor。”$ man man” に似た再帰的問い合わせによる不思議な感覚を覚えますね(僕だけ?)。


プロセスのホーム・ディレクトリを確認する


例えば Xorg の設定ファイルの場所がよくわからない・・・、こんな時のアプローチ方法には幾つかありますが、プロセス番号からホーム・ディレクトリを確認する方法を知っていれば、変わった場所にあっても早いタイミングで見つけられるかもしれません。プロセスのホーム・ディレクトリを知るには pwdx を使います。

まず、目当てのプロセスのプロセス番号を確認し、

pwdx

この番号を引数にして pwdx を実行します(プロセスの所有者が自分であれば sudo は必要ありません)。

$ sudo pwdx 1333
1333: /etc/X11

お、設定ファイルは /etc/X11 以下にありそうですね(わかっていたような白々しい顔)。


標準出力を画像ファイルに変換する


必要か?・・・と言われてしまいそうですが、データの改版が容易ではない画像フォーマットでログ、データを残しておきたいという状況もあるかもしれません。こんな時には imagemagick パッケージに含まれる convert で実現出来ます。

$ grep error /var/log/kern.log | convert label:@- kern-error.png

これで kern.log から抜き出したメッセージが kern-error.png というファイル名で画像に変換されます。

convert1

フォントを指定すれば日本語を含んだメッセージの画像化もOK。

$ ifconfig eth0 | convert -font /usr/share/fonts/truetype/takao-gothic/TakaoExGothic.ttf label:@- ifconfig.png

convert2


複数のpdfファイルを一括で全文検索する


あるキーワードがpdfファイル中のテキストに含まれるどうかは、poppler-utils パッケージに含まれる pdftotext を使って検索出来ます。

$ pdftotext /path/to/target.pdf - | grep keyword

これを find と組み合わせれば複数のファイルを横断して特定のキーワードを検索する事も出来ます。最低限の事しか覚えない僕にはピッタリ。

この例ではあるフォルダ配下に含まれるpdfファイルを全てテキスト化し、その中に”thread pool”というキーワードが含まれるか否かを一括で検索しています。
$ find /path/to/books/ -name '*.pdf' -exec sh -c 'echo DOCUMENT: `basename {}`' \; -exec pdftotext {} - \; | grep -e DOCUMENT: -e 'thread pool'

実行結果は次のようになります。

DOCUMENT: rails-magazine-issue1.pdf
DOCUMENT: rails-magazine-issue2.pdf
DOCUMENT: rails-magazine-issue3.pdf
dynamic thread pool, as well as Ragel to create a state machin

pdfファイルが沢山あるのでいざという時に助かりそう。


ePubファイルをmobiファイルに一括変換する


Kindleの普及に伴い日本でも利用者がどんどん増えてきている(?) Calibre ですが、このパッケージをインストールすると ebook-convert コマンドも使えるようになります。この ebook-convert、まだまだ知名度は低いですが、これを使うとCLI上で各種電子書籍フォーマットへの変換が可能です。

次の例ではePubファイルをKindle標準のmobiフォーマットに変換しています。

$ find ./ -name "*.epub" -exec ebook-convert {} {}.mobi \;

詳しい使い方はまた今度。


CLIでスターウオーズを楽しむ


僕がこれまでに一番驚いたコマンド・使い方といえば、これかもしれません。

とにかくtelnetしてみて下さい。

$ telnet towel.blinkenlights.nl

退屈な電算機基礎講習でターミナル環境しか手元に無ければこれでタイム・スリップ出来るはずです。

sw1


しかし、色々な面で凄い情熱だなぁと感心する出来です。

sw3


今日紹介した以外にも人気のある・以外なコマンド、ツールをもっと知りたいと思ったら http://commandlinefu.comへどうぞ。


それでは、より良い CLI ライフを!

 
パワーか、フォースか―人間のレベルを測る科学
デヴィッド・R. ホーキンズ
三五館
売り上げランキング: 9,445

Unixパワーツール
Unixパワーツール
posted with amazlet at 13.03.22
シェリー パワーズ ティム オライリー ジェリー ピーク マイク ルキダス
オライリージャパン
売り上げランキング: 443,876

Posted by netbuffalo at 22:00│Comments(0)TrackBack(0)Linux | ライフハック


この記事へのトラックバックURL

http://trackback.blogsys.jp/livedoor/netbuffalo/4411194

コメントする

名前
URL
 
  絵文字