〜2013年4月下旬〜
moreutilsパッケージにspongeという名前のコマンドがある。
これはよくあるだめな例(bar.txtが空になってしまう)の
% foo1 bar.txt | foo2 | foo3 > bar.txt
のようなことをしたい場合に使える。
foo1 bar.txt | foo2 | foo3 | sponge bar.txt
とするとspongeが標準入力を読み終わってからbar.txtに書き込むのでbar.txtを壊さない。
% seq 10 > seq10 % sed '5d' seq10 | grep -v '[28]' >seq10 % ls -l seq10 -rw-r--r-- 1 eban eban 0 2013-04-22 01:31:30 seq10 % seq 10 > seq10 % sed '5d' seq10 | grep -v '[28]' | sponge seq10 % cat seq10 1 3 4 6 7 9 10
マニュアルより:
sponge reads standard input and writes it out to the specified file. Unlike a shell redirect, sponge soaks up all its input before opening the output file. This allows constructing pipelines that read from and write to the same file.
It also creates the output file atomically by renaming a temp file into place, and preserves the permissions of the output file if it already exists. If the output file is a special file or symlink, the data will be written to it.
moreutilsなんてインストールしないと思うが他にも結構面白いコマンドがある。
crontab内では%を\%のようにエスケープしないと改行になってしまうが、
環境変数を設定するところではその意味はないので\つけるとそのまま\ごと設定されるので注意。
逆に言うとdateのフォーマットストリングは%だらけになるので環境変数で定義するとすっきりするかもしれない。
chronic: runs a command quietly unless it fails
とさりげなくかかれてるコマンド。
二重否定っぽい表現でわかりにくいが、要するに失敗したときだけ表示する。
% chronic ls % chronic ls hoge /bin/ls: hoge にアクセスできません: そのようなファイルやディレクトリはありません
この挙動の何がうれしいかというとcrontabで失敗したときだけメールが飛ぶようにできる。
crontabで実行してるコマンドの頭に追加するだけでいい。
Yahooだと8つしか出てこないのでlivedoorにしてみた。
% curl -s news.livedoor.com | nkf -w | awk '/detail/&&$0=$NF' FS='>' RS='</a></li>|\n' 菌がどんどん寄り付くNG行為とは 「カリスマ介護士」が強姦容疑 AP通信の偽ツイートで市場混乱 ボストン爆破、動機について供述 カルピスがFacebookで謎サービス 香川、「80億円軍団」で存在感 キヨシ激怒 助っ人左腕2軍降格へ 育成降格から復活したGの苦労人 佐藤琢磨、失意から4年目で快挙 大島優子が芸人を断髪、丸刈りに 佐藤健「カノ嘘」新キャスト発表 堺雅人に興味がなかった菅野美穂 「スター・トレック」予告編公開 アクションが見ものの犯罪ドラマ 最も美しい20歳に選ばれた女優 「オス化女子」予備軍の特徴 年中悩まされる冷え性の改善策 「秘密にすべき」な女子の趣味 危険な夢から読み解くメッセージ 一途男と束縛男を見分ける方法 人気ポテトチップスメーカーTOP5
これを30分間隔ぐらいでcronで動かして適当にshuf -n1して、
tmuxのステータスラインに表示するのはいいかもしれない。
今回は13.04にちなんで13:04 BSTにリリースしたらしい。
% date -d'4/25 13:04 BST' Thu Apr 25 21:04:00 JST 2013
Ubuntuはこういうネタをちょいちょい仕込んでくるので面白い。
それよりuim-skkが使えなくなってちょっと困ってる。
調べねば。
uim-skkが使えないと思ったのは単に言語サポートがデフォルトに戻っていただけだったらしく、
キーボード入力に使うIMシステムをuimにすればいけた。
それよりもgnome-terminalでtmuxを使っているとnew windowするたびに行数が1行減ってしまって困る。
設定で50行としてるのになぜか49行になってしまうのも困ったもんだ。
あとUbuntu serverでdo-release-upgradeすると
% sudo do-release-upgrade Checking for a new Ubuntu release Traceback (most recent call last): File "/usr/bin/do-release-upgrade", line 145, in <module> fetcher.run_options += ["--mode=%s" % options.mode, AttributeError: type object 'DistUpgradeFetcherCore' has no attribute 'run_options'
と言われて上げられない。
ぐぐってみると
How to upgrade to Ringtail daily build?というのが見つかったが、どうしたもんかな。
どうせVPSだからやっちゃってもいいんだよなと思いつつちょっと待とう。
今頃確認してたりするんだけど、第2話に出てきたやつ。
class DRbUnknownError < DRbError super(unknown.name) end ttr_reader :unknown def self._load(s) Marshal::Load(s) def self._load(s) Marshal::load(s) end
裏返しなので読みづらい。
コピペじゃなくてコメントを除いてたりするところなんかはわかっててやってるんだろうけど、
attr_readerがttr_readerだったり、ところどころ省略されてたりでなんか中途半端。
咳さんも満足?
1日待っても状況が変わらなかったので、結局
% sudo sed -i~ 's/quantal/raring/g' /etc/apt/sources.list % sudo apt-get update % sudo apt-get dist-upgrade
したのであった。
weechatのメッセージが日本語になってなんか違和感が。
いやいや。そんなまどろっこしいことしなくても
until !!;do :;done
でいいよね。
なんかメールがいっぱいたまってるなと思ったらタイトルで埋まっていた。
Ubuntu 13.04に上げたのでlibxmlも上がった。
bundle使ってるとnokogiri自身は上がらないわけで適宜bundle updateが必要になるわけか。
% bundle update Fetching gem metadata from http://rubygems.org/......... Fetching gem metadata from http://rubygems.org/.. Using bundler (1.2.3) Installing nokogiri (1.5.9) with native extensions Your bundle is updated! Use `bundle show [gemname]` to see where a bundled gem is installed.