/

GNU Screenで起動時にウィンドウを複数開き、それぞれでコマンドを実行する方法

会社と自宅のPCはWindowsなので、開発やプログラミングで黒い画面が必要な時はCygwinを使っている。

Cygwin上ではscreenを起動して、何個もセッションを作っている。

会社ではプロジェクト毎に複数のセッションを起動するので大体10-15個くらいのセッションが必要になり、毎朝PCを起動するたびに、

  1. Cygwin起動
  2. screen起動
  3. セッション起動 & ウィンドウ名(タブ名)の設定
  4. プロジェクトのディレクトリへの移動、もしくはsshコマンドの実行

を行っている。

1と2は1回でいいが、3と4は最低でも10回実行しているのでかなりの手間で、たぶん5-10分くらい時間がかかっていると思う。

最初の頃はブラインドタッチの練習になると思い、セッセとタイピングしていたが最近では結構つらくなってきた。

screenの起動時にセッションを複数起動し、かつプロジェクトごとにディレクトリ移動するか、sshでプロジェクト用のマシンに接続してもらえると非常に便利になると思って検索してみた。 でも、適当なのが見つからない。

Stack Overflowやscreenの公式ドキュメントにドンピシャな情報が見つからない、というか英語の読解力とLinuxの習熟度が要求されるのでちょっと私にはワケワカメなところも多い。 ドンピシャな情報の載っているページを見つけているのかもしれないのだが、内容を頭が理解しない・・・

で、モロモロ検索してやっとやり方がわかった。

これでいける

.screenrcに下記を記述する。

screen -t nantyara 0
select 0
stuff "cd ~/project/nantyara/\015"

1行目でnantyaraという名前のウィンドウ(タブ)を0番目に作っている。

2行目は0番目を選択。

3行目でcd ~/project/nantyara/を実行している。 最後の\015がミソで、これはEnterキーを押しているのと同じである。

この3行を追加することで、望みのウィンドウ(タブ)名でかつ、コマンドが実行された状態のセッションが出来上がる。

なお、私はWindowsのCygwin環境なので、MacやLinux環境だと少し違うかもしれませんのであしからず。

あと、cd以外のコマンドは試していません、sshがどうなるかは実は試していません、でもたぶんいけるはずです。