GNU screen その5
■ このスレッドは過去ログ倉庫に格納されています
0001ミスタースクリーン
2006/05/27(土) 18:18:42GNU本家 http://www.gnu.org/software/screen/
公式ML(英語 たまにドイツ語) http://groups.yahoo.com/group/gnu-screen/
でかいのネット http://www.dekaino.net/screen/
UnixUser2004年1月号記事 http://risky-safety.org/%7Ezinnia/screen/contribute2/
Screen Glossary http://zinnia.dyndns.org/~hiki/Screen/
@IT:screenコマンドとは http://www.atmarkit.co.jp/flinux/rensai/linuxtips/692usescreen.html
私家版GNU Screen http://www.rubyist.net/~rubikitch/computer/hacks/screen/
screenコマンド一覧 http://www.limy.org/program/screen.html
1 http://pc.2ch.net/test/read.cgi/unix/1001966406/
2 http://pc5.2ch.net/test/read.cgi/unix/1048030339/
3 http://pc5.2ch.net/test/read.cgi/unix/1087436430/
4 http://pc8.2ch.net/test/read.cgi/unix/1111357444/
0081名無しさん@お腹いっぱい。
2006/08/13(日) 22:16:580082名無しさん@お腹いっぱい。
2006/08/14(月) 08:20:52パラレルスって仮想マシンエミュレータだろ
必要な情報は*端末エミュレータ*は何なのかってことだ
Vineのversionもな
俺はエスパーじゃないけど、問題はscreenにあるんじゃなくて
>>77の能力不足にあるくらいわかるぞ
0083名無しさん@お腹いっぱい。
2006/08/15(火) 06:44:460084名無しさん@お腹いっぱい。
2006/08/15(火) 08:46:110085名無しさん@お腹いっぱい。
2006/08/15(火) 11:23:240086名無しさん@お腹いっぱい。
2006/08/18(金) 23:27:39編集の終了と共に元の画面に復帰するスクリプトを書いてます。
おおまかには
- screen/emacs未起動なら→screen/emacs起動
- screenの中なら→select n; gnuclient file; other
- screenの外なら→screen -x -p n; gnuclient file; screen -X detach
という動作なんですが、emacs/gnuservやscreenの起動待ちやら
attach+gnuclient+detachのタイミング制御でsleepが細かく
入ったりして、いまいち完成度が高くありません。
シェルスクリプト相談室行こうかとも思ったんですが、screenに
かなり特化した改良が必要と思うので、ここに問題のスクリプト
貼り付けて相談してもよいですか?
0087名無しさん@お腹いっぱい。
2006/08/18(金) 23:29:330088名無しさん@お腹いっぱい。
2006/08/19(土) 13:49:11答えが得られるかはわからんけどみな興味はあるんじゃないかな?
0089名無しさん@お腹いっぱい。
2006/08/19(土) 14:01:350090名無しさん@お腹いっぱい。
2006/08/19(土) 18:58:44009186
2006/08/19(土) 19:52:08エラーがでるので分割します):
#!/bin/sh
exec > /dev/null 2>&1
# check if gnuserv/emacs is already available
if ! gnuclient -batch -eval t; then
# invoke emacs in screen
if [ -n "$STY" ]; then
# already in screen - simply invoke emacs
screen -X screen 9 emacs
else
# check running screen or invoke one
screen -X exec true || screen -d -m
# wait for screen to accept request
while ! screen -X exec true; do sleep 0.25; done
# invoke emacs, with wrapping attach/detach action to
# workaround a bug(?) that ignores "-p 9" in detached mode
#
# comment this out if you invoke emacs in .screenrc
(sleep 0.25; screen -X screen 9 emacs; screen -X detach) & screen -x
fi
# wait for gnuserv/emacs to accept request
while ! gnuclient -batch -eval t; do sleep 0.25; done
fi
009286
2006/08/19(土) 19:59:48if [ -n "$STY" ]; then
screen -X select 9 & gnuclient "$@"; screen -X other
else
(sleep 0.25; screen -D -m -c /dev/null gnuclient "$@"; screen -X detach) & screen -x -p 9
fi
で、悩んでいるポイントは
・emacs未起動時にscreen外部から指定window内でemacs起動するのが綺麗にできない
・最後の編集画面へのジャンプで、screen外部からemacsセッションにattachしつつ
gnuclientを実行する所の両立が綺麗にできない
・screenの起動完了をビジーループでしかチェックできていない
・emacsの起動完了をビジーループでしかチェックできていない
の4点です。これらを対処するためにフォアグラウンドと
バックグラウンドで並行して処理させたりしているのですが、
いずれもsleepが入ってしまい、妙なウェイトが入ったり
タイミングがずれて処理失敗するなど、いまいちな状態です。
009386
2006/08/19(土) 20:11:29誤魔化しているのですが、
(sleep 0.25; screen -X screen 9 emacs; screen -X detach) & screen -x
(sleep 0.25; screen -D -m -c /dev/null gnuclient "$@"; screen -X detach) & screen -x -p 9
を特に何とかできないかと考えてます。
いずれも (...) の部分の実行が attach 後の実行でなくては問題が
あるためアドホックに sleep していますが、結局それでも間に合わずに
失敗したり、変にもたついたりと散々です。
0094名無しさん@お腹いっぱい。
2006/08/25(金) 16:42:460095名無しさん@お腹いっぱい。
2006/08/30(水) 14:37:23シェルのカレントディレクトリを、現在のカレントディレクトリと
同じにすることってできますか?
0096名無しさん@お腹いっぱい。
2006/08/30(水) 15:16:53無理。screenは子プログラムのカレントディレクトリは関知しないし、できない。
そのシェルから screen $SHELL とするのはダメなの?
0097名無しさん@お腹いっぱい。
2006/08/30(水) 15:59:11ありがとうございます。
>そのシェルから screen $SHELL とするのはダメなの?
スクリプト中で使うのでなく、普段C-a cするときの動作が
そうだったら便利なのにという事なので。
0098名無しさん@お腹いっぱい。
2006/08/30(水) 16:14:38それなら、
alias cd 'chdir \!*; screen -X chdir $PWD'
とでもしておけば最後にcdした所が有効にはなるけど。
ただし、あくまでそのscreenの中で「最後にcd (screen -X chdir $PWD) した場所」であって、
現在のwindow中のプロセスのカレントディレクトリは知りようがないな。
009986
2006/08/30(水) 21:12:22割り当てておいて、その中で新窓作成+位置移動するような処理を
書いておくってのはどう?
010086
2006/08/30(水) 21:25:17ちょっと意図がわからないけど、
(gnuclient "$@"; screen -X detach) & screen -x -p 9
とウェイトなし&gnuclient用ttyの確保処理を省略するための案と
いうことであってる?
で、結果だけど、だめだった。
実は nohup とかもやっていて、それもダメだったので、gnuclient の
起動のためだけに screen を使わざるを得ないのかなと諦め気味。
で、ここの問題は論理的には
# attach しながら裏で gnuclient 経由編集開始して、終了後に detach
(gnuclient "$@"; screen -X detach) & screen -x -p 9
と書きたいのだけど、gnuclient に tty 渡さないといけないから
(screen -D -m -c /dev/null gnuclient "$@"; screen -X detach) & screen -x -p 9
こうなって、でもって screen -x -p 9 の要求が gnuclient 用 screen に
行ってしまうといけないので、
(sleep 0.25; screen -D -m -c /dev/null gnuclient "$@"; screen -X detach) & screen -x -p 9
と screen+gnuclient の実行が screen -x -p 9 の後になるように調整して、
既存の screen セッションのほうに attach するようにしてる。
と、こんな具合にドミノ式に sleep が入ってくることになってしまい、
別の観点からの解決法はないものかと悩み中。screen -x -p 9 を
バックグラウンドに回す訳には行かないし、どうしたものか。
0101フンバリャーウンコ・ヨーデル ◆xlAOIq6jZw
2006/09/05(火) 22:07:540102名無しさん@お腹いっぱい。
2006/09/05(火) 22:14:41010386
2006/09/05(火) 22:42:14やっぱりツッコまれますか。そこ確かに完成度低いんですよね。
番号じゃなくウィンドウ名にしたいとは思っているのですが、
名前を振るだけだと番号が頭から振られてしまい、通常の
自分の利用範囲とかぶって逆に使いにくいので、まず動作を
詰めてからということでスルーしてます。
0104フンバリャーウンコ・ヨーデル ◆xlAOIq6jZw
2006/09/06(水) 17:37:25それより、うまくいったのか?
0105名無しさん@お腹いっぱい。
2006/09/06(水) 19:50:04日頃よっぽど無視されてる人間なのか?
0106名無しさん@お腹いっぱい。
2006/09/06(水) 21:46:06これ、どっかで見たような気がしたんだけど、既出?
0107名無しさん@お腹いっぱい。
2006/09/07(木) 07:54:12このスレでは既出ではない
0108名無しさん@お腹いっぱい。
2006/09/07(木) 17:51:26誰か連絡してやれってば
010986
2006/09/07(木) 21:51:18改良という意味なら、80%位は解決できたよ。gnuclient用ttyを
screenで確保するから干渉するのであって、forkpty(3)で自前で
確保する別のスクリプト組んで、組み合わせて解決した。
今は最後の部分は
if [ -n "$STY" ]; then
(forkpty gnuclient "$@"; screen -X other ) & screen -X select 9
else
(forkpty gnuclient "$@"; screen -X detach) & screen -x -p 9
fi
とsleepフリーになって快適。forkptyは
pid = forkpty(&amaster, NULL, NULL, NULL);
if (pid > 0) { waitpid(pid, &status, 0); return status; }
execvp(...);
なtccスクリプト。
残っているのは新規のscreen+emacs起動の際の、screen -dm した
新セッションにどうやって外部からemacs起動させるかと、それぞれの
起動完了待ちのsleepループだけど、前者は.screenrcでemacs起動する
ようにして回避したので、残るはsleep待ちのコードが一箇所だけ、
それも初回起動の所だけになるまで単純化できた。
0110フンバリャーウンコ・ヨーデル ◆xlAOIq6jZw
2006/09/07(木) 22:42:46emacs -nwにこだわらないでXのEmacsを使ったほうがいいと思うぜ。
Emacs上へのpasteはwritebufとinsert-file使えばできる。
もちろん、スクリプトでfocusを切り換えられるウィンドウマネージャーを使おう。
0111名無しさん@お腹いっぱい。
2006/09/08(金) 03:39:410112フンバリャーウンコ・ヨーデル ◆xlAOIq6jZw
2006/09/08(金) 06:59:320113名無しさん@お腹いっぱい。
2006/09/08(金) 09:02:470114名無しさん@お腹いっぱい。
2006/09/08(金) 14:12:31011586
2006/09/08(金) 20:46:55常にTeraTerm/Putty越しにしか使わないんだ。
ていうか、Xとかリモートデスクトップ使ったらscreenの
メリットが半減してしまうのでは。TeXmacs(+Maxima)使えないのだけが
唯一残念ではあるけど。
0116名無しさん@お腹いっぱい。
2006/09/11(月) 21:37:05http://opentechpress.jp/developer/06/09/11/088249.shtml
0117名無しさん@お腹いっぱい。
2006/09/12(火) 08:00:520118名無しさん@お腹いっぱい。
2006/09/12(火) 08:28:41これはLinux.comの翻訳記事です。
0119名無しさん@お腹いっぱい。
2006/09/12(火) 09:35:42うん、わかってるって。だから「元記事」執筆者て書いた。
翻訳者や>116の調査能力をあげつらっている訳ではない。
0120名無しさん@お腹いっぱい。
2006/09/12(火) 21:37:52otsune乙
0121名無しさん@お腹いっぱい。
2006/09/13(水) 04:53:04定番は^[, ^t, ^zあたりだろうけど.
0122名無しさん@お腹いっぱい。
2006/09/13(水) 08:25:22^[ にしたら vi使えないじゃん。
0123名無しさん@お腹いっぱい。
2006/09/13(水) 09:20:34^[ よりは ^] の方が扱いやすいと思うがね
0124名無しさん@お腹いっぱい。
2006/09/13(水) 10:58:37俺はどれでもないなあ。俺と同じエスケープ使ってるという人見たことない。
0125名無しさん@お腹いっぱい。
2006/09/13(水) 11:04:30片手で使えるから^zだな。
a, tはemacs, [, ]はtelnetあたりと個人的に相性が悪い。
0126名無しさん@お腹いっぱい。
2006/09/13(水) 11:05:04じゃあ何を使ってる?
ってかこのネタになるとスレが伸びるなあ
おれの知合いには ^x がいる。
0127名無しさん@お腹いっぱい。
2006/09/13(水) 11:46:39いって、どう考えても使わなさそうなのがこれだったから。
0128名無しさん@お腹いっぱい。
2006/09/13(水) 12:37:13emacsやシェルで使いまくると思うんだが、人によるのかな。
おれも ^t だけど、どうせ emacs で C-t なんてほとんど使わないからこれでいいと思ってる。
0129名無しさん@お腹いっぱい。
2006/09/13(水) 12:38:14bash: a b c d e f h i j k l m n p r s t u v w y z
emacs: a b c d e f g h i j k l m n p q r s t v w x y - \
telnet: ]
とかがダメ?
もっとも t (transpose-chars) なんて typo 修正用だけど
使うこと少ないから ^t とか選択する人は結構いそう。自分は
両手で打ちたいので ^o にしてる。まだ干渉したことはないけど、
^o ってどこかで使ってたりするのかな。
結局 o t [ あたりが選択肢として残るだけかな・・・
0130名無しさん@お腹いっぱい。
2006/09/13(水) 12:41:43kinput2+Cannaのin/outとかEmacsではopen-lineだかとぶつかる。
0131名無しさん@お腹いっぱい。
2006/09/13(水) 13:19:14システム管理用共有ユーザ (ほとんどの設定がデフォルトのまま) を使う機会が多くて、
そこは screen も ^a のままなので、慣れるために自分の環境も ^a に変えた。
ペアプロしてるひとってエスケープのキーはどうしてるんだろう?
0132名無しさん@お腹いっぱい。
2006/09/13(水) 13:32:03screen使ったペアプロってあるのか。
^aはEmacsキーバインド使ってると弩腐れな設定だな。
shellすら満足に使えなくなる。
0133131
2006/09/13(水) 14:11:01screen 無しに戻ったときにも無意識に ^aa ってやってしまうことがたまにあるけど。
0134名無しさん@お腹いっぱい。
2006/09/13(水) 14:30:370135名無しさん@お腹いっぱい。
2006/09/13(水) 15:36:34何のことか分からなかったけど、今日RSSみてたらやっとわかった。
誰でもscreen使うような人間なら思うことじゃないかと思うんだが。
0136名無しさん@お腹いっぱい。
2006/09/13(水) 19:40:09そんなにttyrecってメジャー?世界的に。
俺は大概のとこにある(もしくは自分で入れる)からscreenで十分だなぁ。
ただ、ttyrecでそういうことができるってのは参考になった。
0137名無しさん@お腹いっぱい。
2006/09/13(水) 19:49:400138124
2006/09/13(水) 20:45:30ちなみに^bでもなく。まだ出てこない。
0139名無しさん@お腹いっぱい。
2006/09/13(水) 20:54:260140名無しさん@お腹いっぱい。
2006/09/13(水) 20:55:30なにー。すっかり騙された
そういえば、^qという人もいたな。たしかに滅多に使わないが、稀に使うからなあ……
0142名無しさん@お腹いっぱい。
2006/09/14(木) 04:47:290143名無しさん@お腹いっぱい。
2006/09/14(木) 06:21:16吐くようにして専らそっちを使ってるな。最近じゃコンソールでも
設定できることが多いし。
0144名無しさん@お腹いっぱい。
2006/09/14(木) 08:50:33ssh使えるのも多いし。
...と思ったけど、80とか23とか叩くことはよくあるか。
telnetで^]使うのって自分はせいぜい^]closeぐらいだから、^]^]二度うちで
困らないけどね。
0145名無しさん@お腹いっぱい。
2006/09/14(木) 09:28:590146124
2006/09/14(木) 10:37:31そう、^^です。大抵の端末でC-6で入力できる。余談だけどESCはC-3で入力できるね。
いまだ何かとぶつかって困った記憶がない。
0147名無しさん@お腹いっぱい。
2006/09/14(木) 10:50:57C-6なら、Ciscoのルータとか触ってるとC-Shift-x-6とか使うからぶつかりそうだな。
0148名無しさん@お腹いっぱい。
2006/09/14(木) 11:34:44エスケープキーの人気ランキングとか、
俺はこんなキーを使ってるぜ自慢とか、
このキーだとこれこれとバッティングするから要注意とか、
そんなネタがまとまってるところがあると良さそう。
あ、俺には Wiki 立てるとかそういうのムリ。
0149なんてな
2006/09/14(木) 11:50:20tty (telnet?)で接続すると見れるとか
そういうのにしないとな
0150124
2006/09/14(木) 11:58:12なるほど。こんなキーコンビネーションもあるのね。覚えておこう。
それで困る人は ^_ (こっちはC-7) でどう? これも使われてる?
0151124
2006/09/14(木) 12:00:180152名無しさん@お腹いっぱい。
2006/09/14(木) 12:10:31適当に作った。
http://wiki.fdiary.net/screen/
ページ一覧から見てくれ
0153名無しさん@お腹いっぱい。
2006/09/14(木) 12:56:430154名無しさん@お腹いっぱい。
2006/09/14(木) 13:28:20おおー、素早い。さんくすこ!
0155名無しさん@お腹いっぱい。
2006/09/14(木) 14:21:23エスケープキーのページ作ったのでとりあえずいってみようか。
0156名無しさん@お腹いっぱい。
2006/09/14(木) 15:10:53「xx の使用頻度は低い」とか主観的な意見と
事実とは分けようよ。
おれは ^t はそれなりに使うけど ^] の使用頻度は許容範囲.
あと ^z なんて激しくよく使うよ
(screen 使うような人は suspend なんてよく使うもんだと思ってたけどな)
^t (transpose-chars)については、利用頻度は多くないんだけど
"使いたい場合にダブルストローク必要では意味がない" コマンドだと思ってる
0157名無しさん@お腹いっぱい。
2006/09/14(木) 15:21:35開けよ、と自分にツッコムことはままある。
まぁ、一番多いのはssh経由の~付きsuspendだったりするわけだが。
0158名無しさん@お腹いっぱい。
2006/09/14(木) 15:29:49wikiに^zの内容追加したが
^zを使っているが、suspendはほぼ全く使わない。
いつ使うんだ?
0159名無しさん@お腹いっぱい。
2006/09/14(木) 15:45:460160名無しさん@お腹いっぱい。
2006/09/14(木) 18:30:35流儀は人それぞれ
0161名無しさん@お腹いっぱい。
2006/09/14(木) 19:10:05関係ないし主観的なので。読んだ人が自分の状況に即して考えればよい話かと。
C-a
デフォルトのエスケープキー。
衝突: Emacs等の行頭へ移動
C-] (ESC)
衝突: telnetのエスケープキー
衝突: viの入力モード脱出
衝突: その他エディタ等のエスケープ入力
C-t
衝突: Emacsのtranspose-chars
C-z
衝突: 各種端末でのサスペンド
C-o
衝突: Emacsのopen-line
衝突: Cannnaの変換モード移行
C-q
衝突: Emacsのquoted-insert
くらいでどう?
0162名無しさん@お腹いっぱい。
2006/09/14(木) 19:13:27(viなどの)ESCは C-[
telnetのエスケープは C-]
混同砂。
0163名無しさん@お腹いっぱい。
2006/09/14(木) 19:18:570164名無しさん@お腹いっぱい。
2006/09/14(木) 19:21:20X-ONてなに?
stty -ixonとかのことか?
0165名無しさん@お腹いっぱい。
2006/09/14(木) 19:28:130166名無しさん@お腹いっぱい。
2006/09/14(木) 19:36:37内容の細かい点はともかく、フォーマットはシンプルで良いんじゃなかでしょうか。
0167名無しさん@お腹いっぱい。
2006/09/14(木) 20:06:37その通りだ。すまん。
0168名無しさん@お腹いっぱい。
2006/09/14(木) 20:09:31関係ないし主観的、ってのはつまりは余計な一言ってことです。
viの入力モード脱出に対して、viなんて使う奴いねーよという話もある。
とか書いたらモメるのは目に見えてるでしょ? それと同じことです。
0169名無しさん@お腹いっぱい。
2006/09/14(木) 20:57:07C-\ も たまご とかと被るけどどれくらい使っている人がいるんだろう
screen スレ自体、ある意味時代に取り残されてる人のスクツだからねぇ
0170名無しさん@お腹いっぱい。
2006/09/14(木) 20:57:270171名無しさん@お腹いっぱい。
2006/09/14(木) 22:27:12Ctrl-zにNetHackを入れたのは趣味だ。
0172名無しさん@お腹いっぱい。
2006/09/14(木) 23:15:26それまでは C-z にしてたけど、ElScreen も使うようになり困ってた。
0173名無しさん@お腹いっぱい。
2006/09/14(木) 23:15:460174名無しさん@お腹いっぱい。
2006/09/15(金) 00:41:00衝突の議論もいいけど、screen なしの端末を触ってるときに間違って操作し
てしまったときの影響もいれたいな。私は ^z^z だが、二度押しでの被害は特
にない。
0175名無しさん@お腹いっぱい。
2006/09/15(金) 01:07:310176名無しさん@お腹いっぱい。
2006/09/15(金) 01:10:430177名無しさん@お腹いっぱい。
2006/09/15(金) 08:57:42elscreen: C-\
minicom: C-^
0178名無しさん@お腹いっぱい。
2006/09/15(金) 09:56:10suspendするくらいなら新しく窓開く。
0179名無しさん@お腹いっぱい。
2006/09/15(金) 11:04:11書いてみたよ
>178
そういう人もいるでしょう。
そうじゃないひともいるでしょう。
それだけ。
0180名無しさん@お腹いっぱい。
2006/09/15(金) 20:56:11これはこれで用途はあるんだよもん
0181名無しさん@お腹いっぱい。
2006/09/15(金) 21:28:11zsh というシェルには SHARE_HISTORY という機能がありましてね
■ このスレッドは過去ログ倉庫に格納されています