〜2012年7月下旬〜
正規表現で[]を使えというのはよくある話だが、今回はちょっと違う話。
psしてgrepすると最初の1行のヘッダ部が消えてしまう。
これがないといまいちこれなんの数値だっけってなりがち。
% ps uxww | grep '[h]otot' eban 14313 3.1 7.9 3622220 650180 ? Sl Jul20 55:06 /usr/bin/python /usr/bin/hotot
ちょっと離れるけどあらかじめ実行しておくという手もないわけではないが、
やはり離れてるとわかりづらい。
% ps uxww | head -1 USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND % ps uxww | grep '[h]otot' eban 14313 3.1 8.2 3623956 673872 ? Sl Jul20 55:07 /usr/bin/python /usr/bin/hotot
そこでawkだ。
% ps uxww | awk 'NR==1;/[h]otot/' USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND eban 14313 3.1 8.1 3622840 659636 ? Sl Jul20 55:08 /usr/bin/python /usr/bin/hotot
とすればいい。sedでもいい。
% ps uxww | sed '1!{/[h]otot/!d}' USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND eban 14313 3.1 7.9 3621848 644520 ? Sl Jul20 55:09 /usr/bin/python /usr/bin/hotot % ps uxww | sed -n '1p;/[h]otot/p' USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND eban 14313 3.1 7.9 3621848 644520 ? Sl Jul20 55:09 /usr/bin/python /usr/bin/hotot
ああ、grepでも正規表現でヘッダもマッチするようにすればいいか。
% ps uxww | grep '^U\|[h]otot' USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND eban 14313 3.1 8.0 3622592 657060 ? Sl Jul20 55:09 /usr/bin/python /usr/bin/hotot
なんだかんだでpgrepを使ったほうが短い。
% ps uww `pgrep hotot` USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND eban 14313 3.1 7.9 3621848 644520 ? Sl Jul20 55:10 /usr/bin/python /usr/bin/hotot
というオチ。
安いので試しに買った。cbzが読めるのがいいな。しかしカバーがないのはどういうことなん?
Sony Readerは専用のカバーを買ったので、元々付属のカバーを流用するかと入れてみたが、
微妙に大きい。無理すれば入るがこれは常用するにはきつい。
百均で買ってあったA6サイズのソフトケースがこれまたぎりぎりで入らない。
またよさげなもんを探してくるか。
使い勝手はアクティベートしてしまえば、Linuxからは普通にフラッシュと同じようなもんなので、
あとは/media/KOBOeReaderにコピーすればよし。ディレクトリを作ってもok。
中のフラッシュを交換できるらしいので、8GBぐらいにしてみるかな。
お約束的にはrubyを動かしてみないと。
ファンの回転数が上がるので気づくわけだけど、Firefoxを使ってるとなぜかCPUをやたらと食ってる。
地道に拡張のOn/Offを繰り返したら
Google Search by Imageが犯人と判明。これは画像を右クリックすると似た画像を探してくれるという拡張だけど、
コンテキストメニューに追加するだけじゃないのかな。滅多に使わないのでdisableしておこう。
crontabなんだから当然crontabでバックアップだ。
0 * * * * mkdir -p etc; \ crontab -l > etc/tmp.txt; touch etc/crontab.txt; \ cmp -s etc/crontab.txt etc/tmp.txt || cat etc/tmp.txt | tee etc/crontab.txt | \ mail -s "crontab backup ($HOSTNAME, `wc -c < etc/tmp.txt` bytes)" eban
なんか面倒なことしてるけど、変化があったらメールでも保存する。
むしろgitかなんかで管理したほうがいいかもしれないが、
そんなにでかくなるもんでもないし、gmailにでも送っとく程度で。
たまにしかspamラベルはチェックしないのであれなんだけど、
ruby-talkメールのほとんどがまたspam扱いされてた。
なんかメールが少ないなと思ったら案の定だよ。
いきなり返信のメールが来てるのはそういうことだったんだな。
というわけで未読の英語メールが突然増えたよ、まいったね。
しばらくspamラベルも頻繁にチェックしないとな。
MLに自動でラベルをつけるときは
Matches: list:(ruby-talk.ruby-lang.org)
でいける。実際のフィールドはList-Id: ruby-talk.ruby-lang.orgとなっている。
List-Id:はlist:になる。
これはちょっと意外だった。
% zsh -c 'i=1; echo "ほげほげ$i巻"' ほげほげ % zsh -c 'i巻=1; echo "ほげほげ$i巻"' ほげほげ1
zshはマルチバイトも識別子になってるようで。
このおかげで同じタイトルのepubがいっぱいできあがってあせった。
ちゃんと{}を使わないといけない。
% zsh -c 'i=1; echo "ほげほげ${i}巻"' ほげほげ1巻
bashはそんなことないので区切り扱いになる。
% bash -c 'i=1; echo "ほげほげ$i巻"' ほげほげ1巻
結構細かいとこで違いがあるんだな。
/etc/inittabを見ると書いてある
# systemd uses 'targets' instead of runlevels. By default, there are two main targets: # # multi-user.target: analogous to runlevel 3 # graphical.target: analogous to runlevel 5 # # To set a default target, run: # # ln -s /lib/systemd/system/<target name>.target /etc/systemd/system/default.target
Xが要らないならrun levelを3にすればいいのでmulti-userのほうで。
% sudo ln -sf /lib/systemd/system/multi-user.target /etc/systemd/system/default.target
runlevel3.targetという名前も用意されてるので、これでもいい。
% sudo ln -sf /lib/systemd/system/runlevel3.target /etc/systemd/system/default.target
101冊目をスキャンしてたら読み込みエラーが発生して、
scansnap本体の電源をOFF/ONしてもxsaneがデバイスを見つけてくれなくなった。
たぶんPCのほうを再起動しないといけないんだろうな。
というわけでちょうど100冊ということで今月はこれで終了。
ちょっと暑すぎるので、8月はしばらく休止するか。
今日はデバイスも見つかったようで、昨日の続きだけ完了させて今月は101冊。
Sony Readerには物理的なボタンがあるのでページ送りはそっちをメインに使っていた。
でもkobo touchにはないのでこう叩いたりフリックしたりするが、なかなか反応しない。
空振りの多いこと。結構なストレスになる。
やっぱページ送りは必要だよな。ホームボタンなんかよりも。
あと辞書だのFacebookだののメニューが出てくるときもあるが、
逆にこれを出そうと思っても出てこない。
まじでこれ思い通りに操作できる人、いるのかな。
探してみたらヘルプに書いてあった。
How do I make a hyperlink (or link) to a specific slide number in the SlideShare presentation?
つまり、/33とかつければok。
http://www.slideshare.net/shinh/code-golf/33
みたいにね。