〜2009年10月上旬〜
問題。
a='/tmp/[ruby]/' b='/tmp/[ruby]/foo/bar'
$bから$aを除いた部分(foo/bar)を取り出せ(configure内で使われる)。
今まではexprを使ってたので
expr "$b" : "$a"'\(.*\)'
こんな感じだった。[]が正規表現では意味を持つのでこれじゃだめ、と。
bashなら
expr "$b" : "${a//?/.}"'\(.*\)'
でいいわけで、これをtrで実装したのを提案してみたけどどうもいまいち。
configureで使うのであまりマイナーなコマンドは使えないし、
GNU特有とかもだめで古くからある機能を使って汎用性重視しないといけない。
このあたりが悩ましい。
あるかなと思ってman zshexpnしたらやはりあった。
変数展開フラグのqでメタ文字をクォートできる。
q Quote the resulting words with backslashes; unprintable or invalid characters are quoted using the $’\NNN’ form, with sepa- rate quotes for each octet. If this flag is given twice, the resulting words are quoted in single quotes and if it is given three times, the words are quoted in double quotes; in these forms no special handling of unprintable or invalid characters is attempted. If the flag is given four times, the words are quoted in single quotes preceded by a $.
実際に昨日の例だとこんな感じ。
% a='/tmp/[ruby]/' % b='/tmp/[ruby]/foo/bar' % echo ${(q)a} /tmp/\[ruby\]/ % expr "$b" : "${(q)a}"'\(.*\)' foo/bar
正確にはzshのメタ文字なのでexprの正規表現のメタ文字とは違うが、
ほぼ代用可能だ。
3400通ほど。安定してる。
改行を空白に変換する。
</tmp/fooだけでcatの代わりになるというとこがちょっとトリッキー。
でも単独ではcatの代わりにはならない。zshはなんでもあり。
% echo foo > foo % bash -c '<foo' % zsh -c '<foo' foo
あとこんなこともできたり。
% echo foo >a >b >c % <a <b <c foo foo foo
Bashじゃ面倒かと思ったけど意外に簡単に数える方法があった。
それをRubyでもやってみるとなぜかすげー面倒臭い。
不思議なもんだ。なぜかどっちも39Bだし。
TMPの機能をあまり使ってないのでもうちょっと軽そうな
Undo Closed Tabs Button
と
Tabberwocky
を入れた。
やっぱ閉じたタブのリストは欲しいし、プロテクトも欲しいのでこんな感じで。
なぜか使えないもんだとずーっと思い込んでいた。
ちょっとはゴルフが縮むか?
これ入れたらすっきりした。拡張も1個(Compact Menu 2)減らせるしいい感じ。
元あった場所にマウスカーソルを持って行くとメニューが表示される。
かなり反応する範囲はせまいので、下からじゃなくて上からゆっくりと動かす感じで。
なんかやたらと最近目につくので
Evernote
を使い始めた。
ごっそりページごとクリッピングできたりする。
CSSまではさすがにコピーしないようで、元のレイアウトは再現されない。
たしかにsolarisで試したら全然正規表現が使えなかった。
mawkで確認しても意味ないよなあ。
これをヒントにというわけでもないが
Count diamonds level 1
のトップに追い付いた。
別解をsubmitしたのでStatisticsが微妙に違う。
最終的には正規表現が必要なくなってるとこが興味深い。
しかし、これは一目見ただけじゃ動きが想像つかないな。
なんか日本語になっててびっくりした。10/1での更新か。
% sudo yum -y install roxterm 読み込んだプラグイン:dellsysidplugin2, fastestmirror, presto, refresh-packagekit Loading mirror speeds from cached hostfile * fedora: ftp.iij.ad.jp * rpmfusion-free: mirrors.tummy.com * rpmfusion-free-updates: mirrors.tummy.com * rpmfusion-nonfree: mirrors.tummy.com * rpmfusion-nonfree-updates: mirrors.tummy.com * updates: ftp.iij.ad.jp adobe-linux-i386 | 951 B 00:00 rpmfusion-free-updates | 3.8 kB 00:00 rpmfusion-nonfree-updates | 3.8 kB 00:00 updates | 4.4 kB 00:00 インストール処理の設定をしています 依存性の解決をしています --> トランザクションの確認を実行しています ---> パッケージ roxterm.i586 0:1.15.2-1.fc11 を更新に設定しました --> 依存性解決を終了しました 依存性を解決しました ================================================================================ Package Arch Version Repository Size ================================================================================ インストールしています: roxterm i586 1.15.2-1.fc11 updates 169 k Transaction Summary ================================================================================ Install 1 Package(s) Upgrade 0 Package(s) 総ダウンロード容量: 169 k パッケージをダウンロードしています: Setting up and reading Presto delta metadata Processing delta metadata Package(s) data still to download: 169 k roxterm-1.15.2-1.fc11.i586.rpm | 169 kB 00:00 rpm_check_debug を実行しています トランザクションのテストを実行しています トランザクションのテストを終了しました トランザクションのテストを成功しました トランザクションを実行しています インストールし : roxterm-1.15.2-1.fc11.i586 1/1 インストールしました: roxterm.i586 0:1.15.2-1.fc11 完了しました!
で、肝心のroxtermはヘルプのF1が殺せないのが惜しいな。
もうちょっと調べる。
SCIMからiBusになるわけだよね。F12もそうかな。
gnome-terminalはなぜかcjk_width問題が再発。
VTE_CJK_WIDTH=1した。
gnome-terminalは右クリックでコンテキストメニュー出して、
SCIMが選べるようなのでとりあえずはこれでしのぐ。
次バージョンはそうはいかないんだろうなあ。
skkないと厳しいな。
まだショートカットはプロパティでいじれないようで、
直接ファイルを編集するとF1でヘルプ機能は殺せる。
% mkdir ~/.config/roxterm.sourceforge.net/Shortcuts % sed 's/^Help/#&/' /usr/share/roxterm/Config/Shortcuts/Default > ~/.config/roxterm.sourceforge.net/Shortcuts/eban
あとはPreferences - Configuration Manager - Keyboard accelartorsで
ebanを選べばok。