Grails開発に便利なタブ状態でscreenを起動するスクリプト

やったーー!!ついにスクリプトバージョンができた!!!


今までは、開いたscreenの画面にコピペで強引にコマンド群を貼り付ける、って方法でしか実現できてなかったけど、これなら単にシェルスクリプトを実行するだけで、あら不思議すてきなタブ状態のscreenがそのまま開けます。


というか、cygwin版ですでにこんなやつ一回試してたんだけど、cygwin上の今使ってるscreenだと、-d -m オプションでscreen起動すると、Ctrl+Hの挙動がおかしくなったり(一発で行頭まで削除になってしまう)、最後のscreen -rでフリーズしたりしてあきらめたんだよね・・・。


MacOSXでは問題なくそのまま動いてかなり感動。
つか、新しいまくぶく、はえぇ。すごく・・・、速いです・・。


ってわけで、MacOSXでのみ動作確認済みです。

#!/bin/sh
# Grails開発に便利なscreenのタブ状態にする

# 引数
if [ ! -d "$1" ] || [ ! -d "$1/grails-app/" ]
then
    echo "usage: `basename $0` <PROJECT_HOME>"
    exit 1
fi

# 絶対パス展開はとりあえずrubyを借りた。
# シェルに閉じたうまい方法ないかな−。でも、if文はだるい。
PROJECT_HOME=`ruby -e "puts File.expand_path('$1')"`

# screenでタブを開いていく
cd $PROJECT_HOME
screen -d -m -t run
screen -X screen -t top
screen -X chdir $PROJECT_HOME/grails-app/controllers
screen -X screen -t controllers
screen -X chdir $PROJECT_HOME/grails-app/services
screen -X screen -t services
screen -X chdir $PROJECT_HOME/grails-app/domain
screen -X screen -t domain
screen -X chdir $PROJECT_HOME/grails-app/utils
screen -X screen -t utils
screen -X chdir $PROJECT_HOME/grails-app/i18n
screen -X screen -t i18n
screen -X chdir $PROJECT_HOME/grails-app/views
screen -X screen -t views
screen -X chdir $PROJECT_HOME/web-app/css
screen -X screen -t css
screen -X chdir $PROJECT_HOME/web-app/js
screen -X screen -t js
screen -X chdir $PROJECT_HOME/test
screen -X screen -t test
screen -X chdir $PROJECT_HOME
screen -X screen -t postgres
screen -X select postgres
# 手動でDBに接続する
screen -r


こんな感じ。
confも開きたいとか、自由にカスタマイズして使うべし。


あ、そうそう。
このバージョンだと、デタッチ状態のscreenプロセスが存在してる場合には対応してません。
if文でチェックするとかしてもいいけど、めんどいのでここまで。

10/29 追記

うわぁ・・・

cygwin上の今使ってるscreenだと、-d -m オプションでscreen起動すると、

これ再現してたよ・・・。orz
mac版でもだめか。なんでだろ。
このままだとつかえんなぁ。

10/30 追記

うは!!

8.6.28.3 screen セッションでのバックスペースと Ctrl-H

screen を起動中にバックスペースや Ctrl-H が動かないことに気づいた場合、 /etc/screenrc を編集し、次の行を見つけたらコメントアウトしてください。(すなわち、この行の先頭に "#" を追加してください)

bindkey -k kb stuff "\177"

Debian リファレンス - Debian tips

なんか悪者扱いされてるみたいだったけど、だめもとで上の1行を.screenrcに追加したら、むしろきちんとCtrl-Hがきくようになったんだぜ?

いやっほう!

2009/02/04 追記

とある環境で、この最後の bindkey 設定を追加すると、代わりにvimのバックスペースが ^? なことになってしまいました。

ググってみたら、これは比較的メジャーな話だったので、.vimrcにmap設定を追加して、さくっと修正完了。

" -------------------
"  Backspace問題対策
"  (.screenrcで、'bindkey -k kb stuff "177"'と書いたら、
"   vimのBackspaceが^?となるようになってしまった件の対策)
" -------------------
noremap ^? ^H
noremap! ^? ^H

やはり、この方法は楽でいいなぁ。