kiyokaのブログアーカイブ

Archive of old blog posts

コマンドラインを投稿するサイト Command-line Fu を発見

一行野郎を集めるサイト。 Redditみたいに投稿したコマンドラインをみんなで評価しあえるようだ。 Command-line Fu < The best UNIX commands on the web Command-Line-Fu is the place to record those command-line gems that you return to again and again.

私がよく使うコマンドライン(未投稿)

  • ファイルを検索してそれぞれのmd5ハッシュ値を求める
     find . -type f -exec md5sum {} ';'
    
  • ターミナルが文字化けするとき、英語メッセージに切りかえる
     unset LANG
    

私がよく使うコマンドライン(やっぱり投稿されていた)

  • .svn ディレクトリを検索して削除する
     find . -type d -name '.svn' -print0 | xargs -0 rm -rdf
    
  • grepがヒットするファイル名をリストアップ
     find /path/to/dir -type f -exec grep \-H "search term" {} \;
    

なるほどと思ったもの

  • 直前のコマンドをsudoする
     sudo !!
    
  • 2つのファイルをその場でソートしてdiffする
     diff <(sort file1) <(sort file2)
    
  • カレントディレクトリを変更せずに他の場所でコマンド実行する
     (cd /tmp && ls)
    
  • ランダムな文字列(非バイナリ)を表示する
    tr -dc '*:print:*' < /dev/urandom
    

結局のところ、覚えやすい程度に短く、かつ強力なコマンドラインが実用的だと思う。 自分では思いつかなかったフレーズを仕入れるのにいいサイトだ。 早速このサイトをRSSリーダーに登録したよ。


コメント by sion:
find /path/to/dir -type f -exec grep -H “search term” {} \; は しょっちゅう使ってますね。 find は凝りだすとかなり色々できるから、スクリプト書けばいいのに 無理に find でがんばろうとしてしまったりする(笑)


コメント by kiyoka:
そうですね。 findは応用範囲が広いので下手に専用スクリプトをたくさん用意するより、 その場その場でfindプラス -exec オプションや xargs を組み合わせるほうが柔軟性が高い気がします。 スクリプトを準備していっても意外と帯に短し襷に長しで使えなかったりしますよね。 find と xargs の組み合わせは 関数型プログラミング言語でいうことろの高階関数(higher order function)だと思っています。 再利用性が非常に高い理由はそういうところかなと思います。 もっと凝った find コマンドが欲しいと思う時もありますが、それを作るのは暗黒面への入り口なのでやめています(笑)

コメント by sion:
find /path/to/dir -type f -exec grep -H “search term” {} \; は しょっちゅう使ってますね。 find は凝りだすとかなり色々できるから、スクリプト書けばいいのに 無理に find でがんばろうとしてしまったりする(笑)