トップページunix
1001コメント276KB

GNU screen その3

レス数が950を超えています。1000を超えると書き込みができなくなります。
0001名無しさん@お腹いっぱい。2005/03/21(月) 07:24:04
前スレがdetachされたので再attachしますた

前スレ
screenってどうよ http://pc.2ch.net/test/read.cgi/unix/1001966406/
GNU screen その2 http://pc5.2ch.net/test/read.cgi/unix/1048030339/
GNU screen その3 http://pc5.2ch.net/test/read.cgi/unix/1087436430/
0858名無しさん@お腹いっぱい。2006/02/28(火) 23:00:27
escape ^\^\ にしてるけど、screen 動かしてないときに ^\ 叩いてプロセス殺した経験が何度もある。
stty で SIGQUIT 送出のバインディングも変更したほうがよいのかな?
0859名無しさん@お腹いっぱい。2006/02/28(火) 23:51:37
^.^. まじおすすめよ、何がって押し心地
0860名無しさん@お腹いっぱい。2006/02/28(火) 23:57:15
^;の方が押しやすい気がする。
0861名無しさん@お腹いっぱい。2006/03/01(水) 01:55:35
escape ^Z^Z
screen 無しの時に間違って叩いても被害が非常に小さいので。

>>859-860
それどうやって入力すればいいの?
0862名無しさん@お腹いっぱい。2006/03/01(水) 01:57:09
>>861
端末の設定
0863名無しさん@お腹いっぱい。2006/03/01(水) 02:19:00
>>857
晒してちょ。
0864名無しさん@お腹いっぱい。2006/03/01(水) 14:12:09
>>859-860
どーせ X使用を暗黙の前提としてるんじゃねーの?
ツカエネー
0865名無しさん@お腹いっぱい。2006/03/01(水) 15:04:17
コンソールでもできるし。teratermでもできる
0866名無しさん@お腹いっぱい。2006/03/01(水) 15:18:12
出来るとか出来ないとかだけいうのは内容がないからドウデモイイデス
0867フンバリャーウンコ・ヨーデル ◆xlAOIq6jZw 2006/03/01(水) 15:31:13
デスクトップUnixなら普通X使うだろ
0868名無しさん@お腹いっぱい。2006/03/01(水) 16:04:52
↑どうでもいいレスの例
0869名無しさん@お腹いっぱい。2006/03/01(水) 16:05:40
デスクトップUNIXでも生コンソールやfb使う場合があるから
X使用は普通かもしれないけどデフォルトとまでは言えないな
少なくともscreen使う人にとってX限定のネタは汎用性低そうだ
0870名無しさん@お腹いっぱい。2006/03/01(水) 16:10:53
>>869
だから X 限定じゃないっつってんだろ、文盲。
0871名無しさん@お腹いっぱい。2006/03/01(水) 16:19:13
生コンソールも普通に設定変更できる。
0872フンバリャーウンコ・ヨーデル ◆xlAOIq6jZw 2006/03/01(水) 16:40:50
フッフフ、だいぶ殺伐としてきたな
生コンソールでもloadkeysで設定できる気がする
0873名無しさん@お腹いっぱい。2006/03/01(水) 17:33:20
なんかすげー不毛ないい争いになってますけど...
変更した結果は結局は特定の ascii コードにしかならないわけですが...
(X のイベントならアスキーコードにマップしなくても扱えるけどさ)

^; みたいなのを実際的に普通のキーコードじゃない
何かにマップして使えるんですか?
(ターミナル側は KTerm*VT100*Translations みたいなので
何とかするものとします)
0874名無しさん@お腹いっぱい。2006/03/01(水) 17:37:05
>>873
>変更した結果は結局は特定の ascii コードにしかならないわけですが...
もちろんそうだが。大事なのはどのキーを押すかだ。
0875フンバリャーウンコ・ヨーデル ◆xlAOIq6jZw 2006/03/01(水) 17:47:14
わしはmltermで
C-:にESC [ 65 ~というキーコードを吐かせているがscreenにはバインドしていない
Emacsならfunction-key-mapで[C-:]と定義できるがな

screenでもbindkeyでなんとかなるんじゃない?
0876名無しさん@お腹いっぱい。2006/03/01(水) 18:08:20
>Emacsならfunction-key-mapで[C-:]と定義できるがな
それはXの話でしょ。

>screenでもbindkeyでなんとかなるんじゃない?
なにが?
0877フンバリャーウンコ・ヨーデル ◆xlAOIq6jZw 2006/03/01(水) 18:30:18
>>Emacsならfunction-key-mapで[C-:]と定義できるがな
>それはXの話でしょ。
Xに限らないと思うが。
ターミナルかコンソールの設定でC-:の吐くコードが指定できることが必要条件。

>>screenでもbindkeyでなんとかなるんじゃない?
>なにが?
bindkey C-:に吐かせるコード コマンド
0878名無しさん@お腹いっぱい。2006/03/01(水) 18:41:33
>>877
>>>screenでもbindkeyでなんとかなるんじゃない?
>>なにが?
>bindkey C-:に吐かせるコード コマンド
これはできないでしょ。
0879フンバリャーウンコ・ヨーデル ◆xlAOIq6jZw 2006/03/01(水) 20:24:52
いや、わしの.screenrcで設定してるが。
bindkey "[65~" exec unko.sh
0880フンバリャーウンコ・ヨーデル ◆xlAOIq6jZw 2006/03/01(水) 20:26:13
おっと、ESCを書き戻すの忘れた
bindkey "^[[65~" exec unko.sh
0881名無しさん@お腹いっぱい。2006/03/01(水) 20:50:42
>>879-880
それはmltermでC-:に吐かせるコードを変えていて、
screenで^[[65~に対応するコマンドを決めているだけ
なので、
>bindkey C-:に吐かせるコード コマンド
ができているとは言えない。
0882名無しさん@お腹いっぱい。2006/03/01(水) 21:06:37
ktermの中でscreen使ってるときに、status lineに
何かメッセージが表示されると、ウィンドウサイズが
変ってしまう場合があるけど、これって防ぐ方法
ありますか?

この現象は使っているXのウィンドウマネージャにも
依存するみたいです。twmとかだと、大丈夫だけど、
KDEやicewmだと発生します。
0883名無しさん@お腹いっぱい。2006/03/01(水) 21:12:55
的外れな事言いますが、俺様
/usr/share/keymaps/i386/qwerty/jp106.kmap.gz
いじくりまくり恐縮です
0884名無しさん@お腹いっぱい。2006/03/01(水) 21:13:26
C-a C-mで前回表示されたメッセージを表示できるから、そのメッ
セージを調べてみたら?
0885フンバリャーウンコ・ヨーデル ◆xlAOIq6jZw 2006/03/01(水) 21:23:39
>>881
なぜ?
> それはmltermでC-:に吐かせるコードを変えていて、
> screenで^[[65~に対応するコマンドを決めている
このお膳立てをしているから
C-:を押すことで exec unko.sh が実行されるんじゃないか。

>>882
hardstatus lastline "%f%n:%LW"
hardstatus on
でどうだ?
08868822006/03/01(水) 22:43:11
なんていうか、表示されてるメッセージは読めるんです。

通常ならbellが表示される時に Wuff - Wuff ってstatus lineに
表示されると同時に、ktermのウィンドウが勝手にぴょんこぴょんこ
サイズが変って、それが収まるとウィンドウの高さが1〜2行
低くなっているという状況ですね。

>>885 さんの方法だと、ウィンドウのぴょんこぴょんこが、
止らなくなってしまいました。
0887名無しさん@お腹いっぱい。2006/03/01(水) 22:49:11
>>886
Ctrl + 真ん中ボタンで「ステータス行を表示」
0888フンバリャーウンコ・ヨーデル ◆xlAOIq6jZw 2006/03/01(水) 23:57:30
これか?

# これでステータスラインが消えなくなる
termcapinfo kterm 'hs:ts=\E[?2S\E[?E\E[?%i%dT:fs=\E[?F:es:ds=\E[?E'
08898822006/03/02(木) 01:38:02
>>887 ぴょんこぴょんこすると、表示させるようにしたステータス行は
消えてしまいます。

>>888 これでぴょんこぴょんこしなくなりました。
ありがとうございました。
0890フンバリャーウンコ・ヨーデル ◆xlAOIq6jZw 2006/03/02(木) 01:41:05
ぴょんこぴょんこという表現に萌え
0891名無しさん@お腹いっぱい。2006/03/03(金) 02:45:13
Solari9でscreen使ってます。ログインシェルはtcsh。
で、普段はSSH経由でリモートからしか使わないから、~/.loginにscreen -xRR
と書いています。
この状態でXでログインしようとすると途中で固まるのですがなぜ?
0892名無しさん@お腹いっぱい。2006/03/03(金) 11:07:41
~/.loginで`tty`を調べて、適切な場合のみscreen -xRRしろよ、呆け!
0893名無しさん@お腹いっぱい。2006/03/03(金) 11:59:43
tcshではシェル変数 ttyが自動設定されるから
`tty`しなくても$ttyでOK

でも ssh接続かXの仮想端末かってttyで区別つくのか??
0894名無しさん@お腹いっぱい。2006/03/03(金) 12:22:22
sshのログインでコマンドを自動実行させたいなら、
~/.ssh/authorized_keysにcommand="command" で指定するといいよ
0895名無しさん@お腹いっぱい。2006/03/03(金) 12:41:27
$SSH_TTYってのがあるだろ。
0896名無しさん@お腹いっぱい。2006/03/03(金) 14:57:10
>>892-895
d
取りあえず、~/.loginには
if ( $?SSH_TTY ) screen -xRR
と書くことにしました。これでXでログイン自体は出来るようになったけど
出来ればXの仮想端末の中でもscreenを自動起動したいところ…。
何かいい方法はありませんか?
ちなみに、
if ( $?tty ) screen -xRR
だとXにログイン時に固まってしまいました。
0897こういうことじゃネーノ?2006/03/03(金) 15:01:51
screen の中の shell はどうすれば...
0898名無しさん@お腹いっぱい。2006/03/03(金) 16:41:03
>>896
xterm -lsでいいんじゃないの?
もしくは環境変数STYあたりで切り分けかね。
0899名無しさん@お腹いっぱい。2006/03/03(金) 21:18:12
kterm -e screen -xRR
だろ。マニュアルちゃんと読め。

$ttyでやるなら、
if ( $tty =~ "/dev/pty*") screen -xRR
あたりだろうな。

けど端末エミュレータもscreenでいきたいなら、この方法じゃダメ。
0900名無しさん@お腹いっぱい。2006/03/05(日) 12:21:49
わけあってbashを使わなきゃならんくなった。
いままでzshで

function title {
if [[ $TERM == "screen" ]]; then
    print -nR $'\033k'$1$'\033'\\\
elif [[ $TERM == "xterm" || $TERM == "rxvt" ]]; then
    print -nR $'\033]0;'$*$'\a'
fi
}

function dirTitle {
title "[$(pwd | sed "s#^$HOME#\~#;s#^\(\~*/[^/]*/\).*\(/[^/]*\)#\1...\2#")]"
}      

function cd {          
pushd $argv > /dev/null
dirTitle
ls
}
てなかんじの関数をどっかからパクッてcdするたびに
screenのタイトルをカレントディレクトリを表示させるように
していたんだけれど
bashでどうやればいいかわからない。
同じ事やってもprintに-nRオプションなんかねぇ!とか起こられる。
0901名無しさん@お腹いっぱい。2006/03/05(日) 12:38:53
printじゃなくてbashのビルトインprintf使えよ。

俺は、
$ echo $PS1
\[\033]2;\h:\w\007\]\h\$
してるけどね。
0902名無しさん@お腹いっぱい。2006/03/05(日) 13:13:50
>901
orzすまんパクッた関数つかってただけだから何やってるのか
いまいち把握してなくてよくわからん。

>$ echo $PS1
>\[\033]2;\h:\w\007\]\h\$
これなにやってんの〜どういう意味〜?って感じ

出直してくるわ。スレ汚しスマソ
0903フンバリャーウンコ・ヨーデル ◆xlAOIq6jZw 2006/03/05(日) 13:21:16
大変じゃのう。exec zshとかできないわけか。
0904名無しさん@お腹いっぱい。2006/03/05(日) 15:04:40
>>900
.bashrcに

case $TERM in
screen)
PROMPT_COMMAND='echo -ne "\033k${PWD/$HOME/~}\033\\"'
;;
esac

って書いとくと表示されますよ。
09059002006/03/05(日) 15:23:54
>904
サンキュ!!できた!!
0906フンバリャーウンコ・ヨーデル ◆xlAOIq6jZw 2006/03/05(日) 15:55:45
ところで、なぜzshが使えないん状況なんだ?
0907名無しさん@お腹いっぱい。2006/03/05(日) 16:03:08
管理者が「俺はあれをシェルと認めない」という人だから、て状況は、昔cshであったけど。
0908フンバリャーウンコ・ヨーデル ◆xlAOIq6jZw 2006/03/05(日) 16:05:40
自分でソースからコンパイルしろよ
0909名無しさん@お腹いっぱい。2006/03/05(日) 18:19:19
今まで screen の hard status に文字を表示させる方法が
全然わかってなかったんだけど >904 を見て
見よう見まねで
zsh の precmd() に
print -Pn "\ek%n@%m:%~ \e\\"
なんて入れてみた。

ところで そのstatus行の文字の色を変えたいんですが
man screen の STRING ESCAPES の Colors are coded either as a hexadecimal number
とかの辺りって、上記の \ek... みたいな中に具体的に
どうやって組み込むんでしょう?

\ek%{r}string... じゃ変わらないみたい... orz
0910名無しさん@お腹いっぱい。2006/03/06(月) 10:34:06
そのやり方では window の title を変えるだけ
hardstatus の飾り付けは hardstatus string で設定する
09119092006/03/06(月) 10:48:37
すみません hard status 行を window title みたいに
変えたいってことです:
window 切替える毎に hard status 行を現 window に合わせて変える
(たしかに shell prompt に仕込んでおいても
window 切替タイミングでは変わらないか...)

kterm のwindow title を切替毎に変更できれば尚良いです。
現在は kterm のお題は "screen@" に固定になっちゃってるんで。
0912名無しさん@お腹いっぱい。2006/03/06(月) 11:09:32
hardstatus on
hardstatus string '%w %c'
してる。
0913名無しさん@お腹いっぱい。2006/03/10(金) 05:52:12
なんていうか、%w で各window の format を指定したいよね。
0914フンバリャーウンコ・ヨーデル ◆xlAOIq6jZw 2006/03/10(金) 06:28:09
そうだね
0915名無しさん@お腹いっぱい。2006/03/10(金) 10:57:46
COMMAND Aでtitle書き換えてます。
0916名無しさん@お腹いっぱい。2006/03/15(水) 21:37:50
Control + Space を next に割り当てたいのですが、
bind '^ ' next
としてもだめでした。
どうやればいいのか教えてください。
0917名無しさん@お腹いっぱい。2006/03/15(水) 22:28:35
^@
0918名無しさん@お腹いっぱい。2006/03/15(水) 22:54:42
space への割り当ては
bind ' ' next
でいいよ
09191962006/03/15(水) 23:00:40
>>197
できました。ありがとうございました。
0920名無しさん@お腹いっぱい。2006/03/16(木) 10:31:52
>>916
bind \000 next
0921(I love GNU screen)2006/03/16(木) 22:44:40
どうぶつ奇想天外にGNUが出てたな
0922名無しさん@お腹いっぱい。2006/03/16(木) 22:47:37
以前、家族でテレビ見ててヌーの群れが出てきたとき、
間違って「グヌーの群れだな」と言ってしまった。
0923(I love GNU screen)2006/03/17(金) 00:02:21
フッフフ、わしもだ
0924名無しさん@お腹いっぱい。2006/03/17(金) 10:44:51
俺はちょっと違うな。ジーエヌユーの群れだと子供に教えてしまった。
0925フンバリャーウンコ・ヨーデル ◆xlAOIq6jZw 2006/03/19(日) 13:22:08
いいじゃないか。子供にGNUを知ってもらえるんだ。
0926名無しさん@お腹いっぱい。2006/03/20(月) 09:29:56
>>フンバリャーウンコ・ヨーデル
しゃべり場スレで見つけたYO!!
0927名無しさん@お腹いっぱい。2006/03/27(月) 00:18:02
はじめまして、
screenを使用して1ヶ月の者です。
googleやヤフーにて検索しましたが、なかなかいい情報見つからず、
.bashrcや.bash_profileをsourceコマンドで再読み込みすればもちろん、
環境が適用されるのですが、screenコマンド実行と同時に、
実行前の環境が読み込まれる、もしくは引き継がれるような設定ありますでしょうか?
的外れな質問かもしれませんが、ご教授いただければ幸いです。
RedhatLinux9です。
0928名無しさん@お腹いっぱい。2006/03/27(月) 00:35:19
いってる意味がよくわからんが、
user の shell が bash なら
screen が bash 勝手に起動して、
.bashrc も読まれるはずだけど?
0929名無しさん@お腹いっぱい。2006/03/27(月) 00:35:37
>>927
環境変数のこと? 普通は何もしなくても引き継がれるよね
0930名無しさん@お腹いっぱい。2006/03/27(月) 00:37:58
>>927
.screenrcのことか?
それともscreen -rdとかのコマンドの事か?
0931名無しさん@お腹いっぱい。2006/03/27(月) 00:51:14
928さん、929さん、930さん、
レスありがとうございます!

bashなので、.bashrcにエイリアスや、プロンプトの設定等を
書いておけば引き継がれると思っていましたが、
何度やっても駄目だったので。。。
0932名無しさん@お腹いっぱい。2006/03/27(月) 00:54:27
>>930

.screenrcにはもちろん直接エイリアスとかを書いても意味がなかったので、
何か設定で.bashrcを再読み込みさせることができると言うことでしょうか。。。
screen -rd は、初めてみましたのでちょっと調べてみます。
(screen -r プロセスID でデタッチした物を復活させる。の、関連?)
09339272006/03/27(月) 01:08:16
皆さん、ありがとうございます!

原因分かった気がします。
自分は、元々.bash_profileに、プロンプトやエイリアスの設定を
全てまとめて記述していたのですが、
それとそのままcpで.bashrcにコピーすれば同じ設定になるだろうと
安易に考えてしまい、正常に動作しておりませんでした。
.bashrcはシェルが起動される度に読み込まれるファイルで、
.bash_profileはログイン時に読み込まれるユーザー固有のファイルと認識しておりましたが、
勉強不足でした。

皆さん、即レス頂けて非常に感動しております、ありがとうございました

0934名無しさん@お腹いっぱい。2006/03/27(月) 02:40:49
tcsh用に作った。
postcmdの部分がうまく言ってないけど
プロセスが表示されないんだよね

if ( $TERM == "screen" ) then
    alias abbrevTitle 'pwd | sed "s#^$HOME#\~#;s#^\(\~*/[^/]*/\).*\(/[^/]*\)#\1...\2#"'
    alias precmd 'echo -n "\033_`abbrevTitle`\033\\"'
    alias postcmd 'echo -n "\033k`jobs`\033\\"'
endif
0935名無しさん@お腹いっぱい。2006/03/30(木) 13:21:27
defencoding eucJP で encoding utf8 (つまり input が UTF-8 で output が EUC-JP) として、
「●」を含む文字列を表示しようとすると文字化けしてしまいます。
おそらく utf8encodings の変換マッピングの問題なのかなと思うのですが、
化けないようにされている方がいらっしゃいましたら方法を教えてください。
utf8encodings をいじれば直せるかなと思ったのですが、
中身はバイナリみたいなので自分の手に負えるか微妙なもので。
0936名無しさん@お腹いっぱい。2006/04/07(金) 18:22:25
screen上のemacsで色がつかないと3時間ほど格闘した結果、
emacs20だったことが判明。screenのせいだな。

0937名無しさん@お腹いっぱい。2006/04/07(金) 18:34:55
にしても、いまさらEmacs20というのも珍しい…
0938名無しさん@お腹いっぱい。2006/04/07(金) 19:07:37
今はEmacs22がデフォだろ。
0939名無しさん@お腹いっぱい。2006/04/07(金) 19:53:00
まだmule使ってますが何か。
0940名無しさん@お腹いっぱい。2006/04/07(金) 20:51:12
muleの日本語i-searchは便利だった。
0941名無しさん@お腹いっぱい。2006/04/08(土) 00:33:32
BACKSPACEでC-?が出る端末(putty)で
screen起動するとBACKSPACEでC-Hが渡されるんだけどどこで設定するの?
0942名無しさん@お腹いっぱい。2006/04/08(土) 00:39:22
>>941
それが正しい挙動だ。
0943名無しさん@お腹いっぱい。2006/04/08(土) 00:41:29
↑と質問したけど、自宅のマシンでは正常にでる。
来週職場に行くまで質問保留。
0944名無しさん@お腹いっぱい。2006/04/09(日) 17:33:51
仕事場と、自宅と、出先から自宅のサーバにsshを介してscreenを使っているのですが
仕事に行く前に自宅でscreenを使って、デタッチしないまま仕事場に行ったり
仕事場で接続してデタッチするのを忘れて出かけたりしてしまうのですが
その際にscreen -rすると、
There is a screen on:
13246.ttyp0.hoge (Attached)
There is no screen to be resumed.
といわれて、アタッチできないのですが
このときにscreenの外からデタッチすることはできないのでしょうか?
0945名無しさん@お腹いっぱい。2006/04/09(日) 17:36:29
>>944
man 位読もうよ。
screen -d -r
0946名無しさん@お腹いっぱい。2006/04/09(日) 17:45:33
最強はscreen -xRRだな。
09479352006/04/09(日) 18:30:54
文字化けするの俺だけでしょうか?(´・ω・`)
0948名無しさん@お腹いっぱい。2006/04/11(火) 01:03:14
>935
いまさらだが、 defencoding eucJP のときに encoding utf8 しても、両方と
も utf8 になるだけで、 input が UTF-8 で output が EUC-JP なんてことに
はならんと思うんだが。

すくなくともおれの手元ではそうなる。
0949名無しさん@お腹いっぱい。2006/04/11(火) 07:43:39
>>948
ん、input が UTF-8 で output が EUC-JP になるよ
LANG=ja_JP.eucJP のせいかな
>>935 を試すと「●」が「?」になった
0950名無しさん@お腹いっぱい。2006/04/11(火) 08:30:05
族藏

◆◇
◎○

辺りはどうなるんですか? (似たビットパターンの文字たち)

僕の環境だと、mlterm-2.9.2, screen-4.0.2
defencoding eucJP
encoding utf8
としても、上の内容のファイルのcat結果は問題なく表示されます。
0951名無しさん@お腹いっぱい。2006/04/11(火) 09:12:44
>>950
族藏
?
◆?
??
?
漢字はそのまま、◆は半角、他の記号は ? になった
Screen version 4.00.02 (FAU) 5-Dec-03
KTerm 6.2.0 (Debian GNU/Linux 3.1)
09529352006/04/11(火) 09:14:54
>>948
すみませんです、 man 読み直してみたら、
output は defencoding に依るわけではなくてロケールに依るみたいですね。

私も LANG=ja_JP.eucJP にしています。
あと、端末には PuTTY を受信データの文字セットを EUC-JP に設定して使っています。
>>950 のは全て化けました。
0953名無しさん@お腹いっぱい。2006/04/11(火) 14:25:37
族 e6 97 8f
藏 e8 97 8f
┏ e2 94 8f
◆ e2 97 86
◇ e2 97 87
◎ e2 97 8e
○ e2 97 8b
● e2 97 8f
0954名無しさん@お腹いっぱい。2006/04/14(金) 15:58:41
screenをデタッチではなく終了させたいのですが
C-a :quit
では終了できないんだけど間違ってるんですかね?
0955名無しさん@お腹いっぱい。2006/04/14(金) 17:17:11
今screenを起動しようとしたら
screen -r
There are screens on:
563.ttyp0.demo (Attached)
9024.ttype.demo (Attached)
There is no screen to be resumed.
といわれました。

どやれば、終了させられるでしょうか
0956名無しさん@お腹いっぱい。2006/04/14(金) 17:20:58
screen -xRR
09579552006/04/14(金) 17:30:33
>>956
screen -Rxx
とやってみたのですが
screen -Rxx
There are several suitable screens on:
563.ttyp0.demo (Attached)
9024.ttype.demo (Detached)

と、表示されるだけで何も起きません
それと、入力街のような事が起きます

どうすればいいのでしょうか?
レス数が950を超えています。1000を超えると書き込みができなくなります。