OneLiner

diffをファイルに書き出し

commitのdiffをgrepしたいのだが、gitだけで検索する方法がわからなかったのでとりあえず~/diffに全commitのdiffを書きだした mkdir ~/diff git log | grep '^commit' | ruby -lane 'puts $F[1].strip' | ruby -lane 'arr=ARGF.to_a.map{|i|i.strip}; for i …

nまでの素数を求める

みょうにシンプルにできたので書いておく ruby -e 'p 2.upto(ARGV[0].to_i).to_a.delete_if{|i| 2.upto(i/2).to_a.detect{|j|i%j == 0} }' 2000[2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97, 101, 103…

短縮URL展開を1行で(ruby)

http://blog.livedoor.jp/dankogai/archives/51573012.htmlrubyはhugeurl使うといい tinyurlやbitlyとか主要なのは展開できる ruby -rubygems -e 'require "hugeurl";puts URI.parse("http://bit.ly/d4VYD2").to_huge'

卒論の文字数をカウント

卒論シーズンなので texファイルの文字数を数えるワンライナー 一応頭に\と%の行はカウントしない。 ruby -e 'just=ARGV.map{|a|a.size}.max;total=0;ARGV.each{|arg|words=0;open(arg){|f|f.each{|line|words+=line.chomp.strip.split(//u).size unless lin…

CDトレイを開閉

ruby -e 'IO.open(IO.sysopen("/dev/cdrom",File::NONBLOCK)){|io|io.ioctl(0x5309)}'ruby -e 'IO.open(IO.sysopen("/dev/cdrom",File::NONBLOCK)){|io|io.ioctl(0x5319)}'参考 http://d.hatena.ne.jp/n9d/20090122/1232592242

skypeでワン切り

rb-skypemacたのしい gem install rb-skypemacruby -rubygems -e 'require "rb-skypemac";include SkypeMac;Skype.call("username").hangup'これ連打すると普通にchatで話しかけるより気づいてもらいやすい!

swingを使う

jruby -rubygems -ropen-uri -rjava -e 'import "javax.swing.JFrame";import "javax.swing.JTextPane";f=JFrame.new;f.title="サイバーパンク!";f.setSize(320,240);f.visible=true;textp=JTextPane.new;textp.text=open("http://shokai.org").read;f.cont…

LDRの未読件数

tweet_logというコマンドを用意してあって、ログ用のtwitterアカウントにARGVを投げれるようにしてあるので ruby -rubygems -e 'require "open-uri"; n=open("http://rpc.reader.livedoor.com/notify?user=shokaishokai").read.scan(/(\d+)/).first.first.to…

新着が来る毎に1回鳴らす ruby -rubygems -e 'require "open-uri";require "feed-normalizer"; last=0;loop do e=FeedNormalizer::FeedNormalizer.parse(open("http://search.twitter.com/search.rss?q="+URI.encode("shokai"))).entries.first; n=e.url.sca…

twitterを目覚ましにする

afplayでterminalから音声ファイル再生できたので 新着のreplyをチェックし続けて単語に反応して音鳴らすワンライナー ruby -rubygems -e 'require "open-uri";require "feed-normalizer"; loop do puts m=FeedNormalizer::FeedNormalizer.parse(open("http:…

following数を取る

ruby -rubygems -e 'require "nokogiri"; require "open-uri"; require "kconv"; puts Nokogiri(open("http://twitter.com/shokai").read.toutf8).xpath("//span[@id=\"following_count\"]/text()").to_s'

sayとgrowlで目覚ましワンライナー

Macのsayとgrowlでアラーム。これでもう電車乗り過ごさない。 ruby -rubygems -e 'sec=60*10; m="wakeup"; require "g"; start=Time.now; loop do if Time.now>start+sec; s="#{m} "+Time.now.strftime("%X"); puts s; g s; `say #{s} > /dev/null 2>&1`; en…

ランダムにsay

ruby -e 's="";rand(15).times do s+=[rand(26)+97].pack("c") end; `say #{s}`'ruby -e 's=Array.new(rand 15).map{|i|rand(25)+97}.pack("c*"); `say #{s}`'

texファイルの本文の行数を数える

ruby -e 'pattern=/.*(\.tex)$/; comment=/ *[%\\]/; sum=0; for i in 0..5 do Dir.glob("*/"*i+"*").delete_if{|n|!(n =~ pattern) or File::ftype(n) != "file"}.each{|f| sumf=0; n=open(f).read.split(/[\r\n]/).delete_if{|l|l =~ /[\\%]/}.each{|l| su…

ディレクトリ下のファイルの行数を数えるワンライナー

俺が使う言語に全部マッチさせると場合 ruby -e 'pattern=/.*(\.as|\.js|\..+ml|\.cpp|\.c|\.cs|Makefile.*|\.rb|\.sh)$/; sum=0; for i in 0..10 do Dir.glob("*/"*i+"*").delete_if{|n|!(n =~ pattern) or File::ftype(n) != "file"}.each{|f| n=open(f).r…

followできるようになるまでリトライ

followボタンを押しても一瞬増えるけどリロードすると0に戻るので ruby -rubygems -e 'require "twitter";tw=Twitter::Base.new(Twitter::HTTPAuth.new("your-username","password"));while tw.friendship_create("penguinana") do puts "try following: "+T…

feedの1件目の内容を表示

ruby -rubygems -e 'require "open-uri";require "feed-normalizer";require "hpricot"; puts Hpricot(FeedNormalizer::FeedNormalizer.parse(open("http://shokai.org/blog/feed")).entries[0].content).inner_text'

followできない人をfollowできるまでがんばる

ruby -rubygems -e 'require "pit";require "twitter";conf=Pit.get("shokai");tw=Twitter::Base.new(Twitter::HTTPAuth.new(conf["user"],conf["pass"]));while tw.friendship_create("takeponmaki") do puts "try following: "+Time.now.to_s;sleep 600 en…

ruby -e 'for i in 1..900 do num="0"*(3-i.to_s.size)+i.to_s; `wget http://negineesan.fc2web.com/negi#{num}.jpg`; sleep 5; end'ねぎ姉さん

Feed1件目を表示

ruby -rubygems -e 'require "open-uri";require "feed-normalizer";require "hpricot"; puts Hpricot(FeedNormalizer::FeedNormalizer.parse(open("http://shokai.org/blog/feed")).entries[0].content).inner_text'

改行を全て削除

ruby -e 'puts open("071105.txt").read.gsub(/[\r\n]/,"")' > out.txt

重複ファイルを削除するワンライナー

dataにあれば、todataディレクトリから削除 ruby -e 'Dir.glob("todata/*.pdf").each{|t|Dir.glob("data/*.pdf").each{|d|if t.split("/")[1]==d.split("/")[1];puts "rm "+t; File.delete(t) end}}'

初ワンライナー

http://d.hatena.ne.jp/n9d/20080331/1206945041 を見たらワンライナー作りたくなった。 ruby -e 'dirs = Dir::entries("./"); for dir in dirs; puts dir.gsub(/_/, " ") end;' ちょっと必要だったので初めて書いた。zshのhistroyに入っているので確かに便…

論文選別用ワンライナー

最近、修論のためにキーワード検索してまとめてダウンロードしてきた論文などファイルを、いらなかったら消して、いるものは別のディレクトリに移動させて選別している。論文50個選別し終わるまで集中するためのワンライナー作った。 50個選別したらgrowlで…