指向性メモ::2008-11-12::cddが複数のscreenプロセスに対応してないので何とかした

ページ情報
制作日
2008-11-12T19:02:53+09:00
最終更新日
2008-11-12T19:02:53+09:00
ページ内目次

とても便利なcddなのだけど、screenのプロセスが複数立ち上がっていると、ウィンドウ番号が混ざって残念な事になってしまうので凄く適当に何とかした。

まず、CDD_PWD_FILEファイルのお尻に$STY付けてプロセス毎に違うファイルにする。

export CDD_PWD_FILE_PREFIX=$HOME/.zsh/cdd_pwd_list
export CDD_PWD_FILE=$CDD_PWD_FILE_PREFIX.$STY

これだけだと、死んだプロセスのファイルが残ってしまうので、掃除用のスクリプトを適当に作る。

#!/usr/bin/ruby
alive = `screen -list | egrep "Attached|Detached" | awk '{print ENVIRON["CDD_PWD_FILE_PREFIX"]"."$1}'`
process = `ls $CDD_PWD_FILE_PREFIX* | egrep -v \\\\.t$`
alive = alive.split("\n")
process = process.split("\n")

process.each {|p|
  unless alive.include?(p)
    File.delete(p)
    File.delete("#{p}.t")
  end
}

最初zshスクリプトだけでやろうと思ったのだが、余り良い方法が思い浮かばなかったので途中からRubyで書いた。

コレを実行すると、プロセスが存在しないファイルだけ消えてくれるので、適当なタイミングで実行すればいい。.zshrcなどで適当に呼び出すといいだろう。

と、ここまで書いて気がついたのだが、ファイルを消すとcdaddしたディレクトリまで一緒に消えてしまうので、その分は違う外部ファイルに待避させる必要がある。今回は面倒なので、.zshrcに手で追加してやり過ごすことにした。

_reg_pwd_screennum
_reg_cdd_pwd "h" "$HOME/archive/products/2008/hercules"
_reg_cdd_pwd "hb" "$HOME/archive/products/2008/hercules/branches/naz"
...
clear_cdd

全体的にとても適当なので、きっと誰かがスマートに書き直してくれるだろう。

Comments

Trackbacks

Trackback Ping URI

http://yudai.arielworks.com/memo/2008/11/12/190253.trackback

末尾に「3 + 7」の計算結果を繋げて下さい。例えば計算結果が「17」の場合、「190253.trackback17」です。これは機械的なトラックバックスパムを防止するための措置です。

Post a comment

Name (optional)
Email address or URI (optional)
Do the math below (required to filter comment spams)
3 + 7 + 8 =
Message (required)
Submit
連絡先、リンク、転載や複製などについては『サイト案内』をご覧ください。Powered by HIMMEL

I ♥ Validator