回答:
gnuの画面にあまり詳しくない場合にAnsgarが言ったことを拡張するために、1つの画面セッションに複数の「ウィンドウ」があれば、おそらく必要なことを達成できます。
ctrl+ a、cアクティブなスクリーンセッションで新しい「ウィンドウ」を作成します。あなたは(アンスガーが示されているように)で、複数のウィンドウを切り替えることができますctrl+ a、n次のウィンドウのために、そしてctrl+ a、p前のウィンドウのために。
ctrl+ a、"開いているすべてのウィンドウのリストが表示されます。
これらの簡単なショートカットを使用すると、複数の画面セッションを使用せずに目的を達成するために、異なる端末間を非常に迅速かつ簡単に切り替えることができます。
〜/ .screenrcに次の行を追加すると、開いているウィンドウと選択されているウィンドウが常に表示されるため、覚えていることでどのウィンドウを表示しているかを追跡する必要はありません。
hardstatus alwayslastline '%{= kg}[ %{G}%H %{g}][%= %{= kB}%?%-Lw%?%{+b r}(%{G}%n*%f %t%?(%u)%?%{r})%{-b B}%?%+Lw%?%?%= %{g}%]'
これは私が使用したいハードステータスの行ですが、完全にカスタマイズ可能です(manページを参照するか、「gnu screen hardstatus」についてGoogleで検索してください)。
他にもたくさんのことができます(たとえば、開いているウィンドウに名前を付ける)ので、いくつかのチュートリアルを読む価値があります。
クイック検索で見つけたカップルを次に示します。
http://news.softpedia.com/news/GNU-Screen-Tutorial-44274.shtml
http://www.ibm.com/developerworks/aix/library/au-gnu_screen/
そしてもちろん、最も便利なのは:
# From your terminal:
$ man screen
お役に立てば幸いです。
マシュー
はい、screen
最も可能性の高い方法です。Ctrl+ a、n次のウィンドウ、Ctrl+ a、p前のウィンドウに移動します。Ctrl+ a、0.. 9を使用すると、特定の画面に切り替えることができます。
かなりの時間が経った後、この完全に欠落している機能を回避するスクリプトを作成しました。まず、fifoが必要です。
mkdir ~/.screen
mkfifo ~/.screen/pipe
この名前付きパイプは、切り離されたセッションと「スクリーンなしのメイン」セッション間の通信に役立ちます。
ファイルsc($ PATH内):
#!/bin/bash
CONFIGFILE=~/.screen/"$1""rc"
if [ ! -r $CONFIGFILE ] ; then
echo "Configurazione per $1 Assente" >&2
exit 1
fi
exec 3<> ~/.screen/pipe
if [ "$STY" != "" ] ; then
screen -d "$STY"
echo "$1" >&3
else
screen -r "$1" 2>/dev/null || screen -S "$1" -c $CONFIGFILE
while true ; do
read line <&3
screen -r "$line" 2>/dev/null || screen -S "$line" -c ~/.screen/"$line""rc"
done
fi
「CONFIGFILE」の例は次のとおりです。〜/ .screen / Monitorrc
layout new Monitor
screen -t "bash" bash --login
split -v
focus next
split
focus bottom
screen -t "cv" sh -c "watch /usr/bin/cv -w"
split
focus bottom
screen -t "sys.log" sh -c "tail -F /var/log/sys.log"
focus up
focus up
resize 25
screen -t "top" sh -c "top"
focus left
結果は次のとおりです。画面タイプを起動する場合:
sc Monitor
またはあなたが発明したい別のsessionrc、私はさまざまなものにセッションワークを使用します
例:〜/ .screen / Workrc
layout new Work
screen -t "bash" bash --login
次のように入力すると、セッションモニターが表示されます。
sc Work
セッションモニターはそれ自身を切り離し、namedpipeに「Work」を書き込みます。その結果、最初のscスクリプトが先に進み、セッション「Work」をアタッチします。
セッションモニターから呼び出されたscは閉じます。
すべてのセッションをデタッチすると、無限ループに陥るため、Ctrl-cを実行して終了する必要があります。
これは、次のような単純なシェルスクリプトを使用して実行できます。
for s in `screen -ls | grep Detached | grep <regex to your screen names>`; do screen -r $s; done
開いている画面がほとんどないと仮定しましょう。また、仕事とデータとして分類されていると仮定しましょう。
for i in {10..13}; do screen -S `printf data%02d $i`; done;
for i in {0..5}; do screen -S `printf work%02d $i`; done;
...
を適用するとscreen -ls
、このような画面が表示されます
There are screens on:
81592.data13 (Detached)
81539.work04 (Detached)
81527.work02 (Detached)
81586.data12 (Detached)
81574.data10 (Detached)
81533.work03 (Detached)
81488.work00 (Detached)
81607.ttys014.Mo (Attached)
81545.work05 (Detached)
81580.data11 (Detached)
81521.work01 (Detached)
81515.work00 (Detached)
12 Sockets in /var/folders/qs/cvlbhpr54fnb96vtx01bs9k00000gn/T/.screen.
を使用して、切り離された画面を分離しますgrep
。
screen -ls | grep Detached
このようなものを取得する必要があります
81592.data13 (Detached)
81539.work04 (Detached)
81527.work02 (Detached)
81586.data12 (Detached)
81574.data10 (Detached)
81533.work03 (Detached)
81488.work00 (Detached)
81545.work05 (Detached)
81580.data11 (Detached)
81521.work01 (Detached)
81515.work00 (Detached)
もう一度を使用して、必要なもの(データなど)を選択しますgrep
。
screen -ls | grep Detached | grep data
これにより、データ画面のみが分離されます。grepキーワードを正規表現で変更して検索し、検索をカスタマイズできます。
81592.data13 (Detached)
81586.data12 (Detached)
81574.data10 (Detached)
81580.data11 (Detached)
幸いなことに、結果は適切に構造化され、タブで区切られています。次に、列をフィールドに分割し、を使用して2番目のフィールドを選択しますcut
。
screen -ls | grep Detached | grep data | cut -d' ' -f2
デリミタパラメータの後にctrl+v
を挿入するtab
には、Tab キーを押す必要があります-d
。結果は次のようになります。
81592.data13
81586.data12
81574.data10
81580.data11
次に、これを...
引用符を使用してコマンドにパックし、このような結果をループします。実際に実行する前に、必ず最初に定式化されたコマンドを確認してください。私は使ったecho screen -r
for s in `screen -ls | \
grep Detached | grep data | \
cut -d' ' -f2`; do \
echo screen -r $s; \
done
すべてがうまくいったら、なしで試してくださいecho
。
for s in `screen -ls | \
grep Detached | grep data | \
cut -d' ' -f2`; do \
screen -r $s; \
done
出来上がり。デタッチする各画面から次の画面に移動します。
ハッピースクリーニング!!
ユーザーが矢印キーを使用して、リストからアタッチするスクリーンセッションを選択できるようにするノードスクリプトを作成しました。私はそれをnpmパッケージにしました。こちらで確認できます:screen-command。またはnpm i -g screen-command
、node.jsが既にインストールされていると仮定して、試してみてください。パッケージをインストールした後、コマンドsc
を使用して画面のリストを呼び出します。
これにより、希望する正確な画面に簡単に切り替えられることを願っています。
^a
別の文字に変更します。bashでemacsスタイルの行編集を使用するのはとんでもなく面倒ではありません。を使用します^t
。