Just another Ruby porter,

〜2012年4月中旬〜


<Older(,) | Newer(.)> | Recent(/)>> | RDF

2012-04-11 (Wed)

cmus

curses-baseの音楽プレーヤー。vi-likeなキーバインド。
mp4ファイルもmp3とかに変換しなくても音楽ファイルとして再生できるところはポイント高い。


2012-04-12 (Thu)

cmusのいやなところ

端末のタイトルを書き換える。
曲名を表示するのはまあいいんだけど、cmusを終了すると"cmus v2.4.2"と表示したままになる。
そんな置き土産されても。gnome-terminalがcmus v2.4.2だらけになってるじゃないか。
あちこちで起動しなきゃいい話ではあるが。


2012-04-13 (Fri)

端末のタイトルを書き換える

tput(1)でできるかと調べてみると意外にもよくわからない。
terminfo(5)にはstatus lineについては書いてあるが、titleで検索してもヒットせず。
自分でprintf "\e]0;タイトル\007"するしかないのかな。


2012-04-14 (Sat)

PROMPTに端末のタイトル設定を仕込む

zshなのでprecmdとかあるがコマンドを実行するよりはプロンプトで出させちゃったほうがよさげ。
というわけでPS1の先頭に"\e]0;%3~\7"を追加した。
%3~はPWDなんだけど最後の3レベルだけという意味。
全部表示するとうっとうしいし、プロンプトもそんな感じで"%m:%2~ %# "としてるので。


2012-04-15 (Sun)

カレントのファイルを1階層下のディレクトリに移動する

twitterで話題になっていた話。一時的にdot dirを作るという方法もある。

% ls
a  b  c
% mkdir .dir
% mv * .dir
% mv .dir dir

findとかzshの~とかパイプで組み合わせる場合でも事前にechoさせてみたりして確認するので、
あまり複雑にするよりはいいんじゃないかな。


2012-04-16 (Mon)

Firefoxのロケーションバーをクリックしたら選択した状態にする

実はこれWindows版とLinux版の違いだったりするんだけど、Linux版は選択にはならない。
だいたいあそこをクリックするときはコピペするときなので、
デフォルトとしてはWindows版のような挙動がいいんだよねえ。
about:configしてそれらしい設定を探してみたら browser.urlbar.clickSelectsAll という、
もう正にこれしかないという名前が見つかった。
falseだったのでtrueしたらいけた。
これでURLをクリックするだけでコピーされるようになった。地味に便利だ。


2012-04-17 (Tue)

zshのプロンプトにエスケープシーケンスを仕込むときの注意

タイトル表示等カーソルが動かないエスケープシーケンスがPROMPTに含まれていると、
その分の文字数だけずれるときがある。C-rするとなぜか右に飛ぶようになって変だなと思ったら、
そういうことだった。
zshだとその回りを%{と%}で囲めばいいようで。これで解決。

ああ、そういえばUbuntuのbashだと最初からタイトルがPWD的なものを表示するようになってるね。
これも後で調べよう。


2012-04-18 (Wed)

Bashのプロンプトでタイトル設定

/etcを探しまくっても見つからなくてどこで設定されてんだと思ったら、~/.bashrcにあった。
useradd -mでアカウントを作るともれなくついてくるようだ。/etc/skelの中身がコピーされるんだな。
って、/etcにあるじゃん。どこ探してるんだ、おれは。

で、該当するのはこれ。

case "$TERM" in
xterm*|rxvt*)
    PS1="\[\e]0;${debian_chroot:+($debian_chroot)}\u@\h: \w\a\]$PS1"
    ;;
*)
    ;;
esac

\[から\]で囲まれたところがzshの%{と%}に相当する。
debian_chrootの部分はまあ無視してもかまわないが、
これはdebian_chrootが設定されてればその値を()つきで、そうでなければ空にする技。
単に"($debian_chroot)"では必ず()も表示されてしまうが、空や未設定のときは表示したくないとか、
そういうときに使われる。まあ、結構こういうパターンは悩む。Rubyとかでも。
\aは\007と同じ。

注意: なかださんは今までの流れを読んで、これから書く日記のネタをばらさないこと。


2012-04-19 (Thu)

PATHに空ディレクトリを追加しない

LD_LIBRARY_PATHの部分がまさに昨日の:+技が使えるところ。

% LD_LIBRARY_PATH="/path/to/apache/lib/${LD_LIBRARY_PATH:+:$LD_LIBARARY_PATH}"
% echo $LD_LIBARARY_PATH
/path/to/apache/lib/
% LD_LIBRARY_PATH="/path/to/apache/lib/${LD_LIBRARY_PATH:+:$LD_LIBARARY_PATH}"
% echo $LD_LIBARARY_PATH
/path/to/apache/lib/:/path/to/apache/lib/

のように初回はLD_LIBRARY_PATHが定義されてないので、空のディレクトリは追加されない。


2012-04-20 (Fri)

mvの代わりにrsync

先日のカレントディレクトリから1階層下のディレクトリへ移動させる話で、
ディレクトリがなければ作るというコマンドがあれば万事解決するわけなんだけど、
それに近いコマンドがあった。
rsyncはコピーではあるが、転送先ディレクトリがなければ作ってくれる。
そして--remove-source-filesというオプションがある。これと-aを組み合わせれば移動になる。
ただし、そううまい話はころがっていないわけで、mvとは違い挙動はコピーして削除になってしまう。
それとオプション名からもわかるとおり--remove-source-filesはディレクトリを消さない。残念。

% mkdir foo
% touch a b c foo/{d,e,f}
% ls -R
.:
a  b  c  foo

./foo:
d  e  f
% rsync -a --remove-source-files * dir
% ls -R
.:
dir  foo

./dir:
a  b  c  foo

./dir/foo:
d  e  f

./foo:

Rubyのun.rbにこんな挙動するコマンドを仕込んでもいいかもしれない。


<Older(,) | Newer(.)> | Recent(/)>> | RDF


WWW を検索 jarp.does.notwork.org を検索

わたなべひろふみ
Key fingerprint = C456 1350 085F A320 C6C8 8A36 0F15 9B2E EB12 3885
Valid HTML 4.01!