Gnu画面でタブウィンドウを開き、各タブ内でコマンドを実行する方法


30

このような名前のセッションを開始するとき screen -S name1

このようなgnome-terminalでタブを開くときのように、このスクリーンセッションでタブウィンドウを開きたい

gnome-terminal --tab -e "some commands"

これを行う方法は?


BOTH私はタブに類似のGNOME端末と私は時間の実行では、私開いたタブの後にいくつかのコマンドでは、それを実行したい開く方法を知りたい
アーメドザインエルDein

それでは、以下で説明するテクニックは、あなたが探しているタブを示していますか?それらでコマンドを実行する方法が必要ですか?
slm

しかし、実際に私午前初心者と私いけないuは私が窓アイン画面で開いているタブに構文があることがまさに私の考えを何をしたいのかを理解しますが、それは私がいくつかのファイルにいくつかの行を追加しますようです
アハメド・ザインエルDein

わかりました。このファイルのこれを過去に自分の家にコピーしてほしいと思っていますが、私が尋ねているのはscreen -t nameで、画面のタイトルを知っているので、名前付きセッションでそれらのタブを開きますたとえばscreen -S name1 --tab -e "some commands"、私は私が尋ねているものを手に入れることを望みますか?
アーメド・ゼイン・エル・デイン

mmmmそれらは特定の番号を持つ事前定義されたタブですこれは私が先生に尋ねているものではありません:)私は実行中に必要なタブの数がわからない欲しいものはgnome端末コマンドに似ていgnome-terminal --tab -e "commands " --tab -e " commands ますこれは1つのウィンドウを開きます例えば、二つのタブを備えた端末私は意味:) U感謝
アハメド・ザインエルDein

回答:


73

1.画面のタブ

.screenrcファイルに追加するためにこれを探しています:

screen -t tab1
screen -t tab2

ステータスバーなどを使用して作業を開始するための基本的な.screenrcを次に示します。注:これは通常、ホームディレクトリにあり/home/<username>/.screenrcます。

screen -t validate #rtorrent
screen -t compile #irssi
screen -t bash3
screen -t bash4
screen -t bash5
altscreen on
term screen-256color
bind ',' prev
bind '.' next
#
#change the hardstatus settings to give an window list at the bottom of the
#screen, with the time and date and with the current window highlighted
hardstatus alwayslastline
#hardstatus string '%{= kG}%-Lw%{= kW}%50> %n%f* %t%{= kG}%+Lw%< %{= kG}%-=%c:%s%{-}'
hardstatus string '%{= kG}[ %{G}%H %{g}][%= %{= kw}%?%-Lw%?%{r}(%{W}%n*%f%t%?(%u)%?%{r})%{w}%?%+Lw%?%?%= %{g}][%{B} %m-%d %{W}%c %{g}]'

スクリーンショット

スクリーンセッションのSS

2.画面のタブ(コマンドは内部で実行されます)

.screenrc以下の例では、2つのタブを作成し、それぞれで3つのエコーコマンドを実行します。

screen -t tab1                                                                                     
select 0                                                                                           
stuff "echo 'tab1 cmd1'; echo 'tab1 cmd2'; echo 'tab1 cmd3'^M"                                     
screen -t tab2                                                                                     
select 1                                                                                           
stuff "echo 'tab2 cmd1'; echo 'tab2 cmd2'; echo 'tab2 cmd3'^M"                                     

altscreen on                                                                                       
term screen-256color                                                                               
bind ',' prev                                                                                      
bind '.' next                                                                                      
#                                                                                                  
#change the hardstatus settings to give an window list at the bottom of the                        
#screen, with the time and date and with the current window highlighted                            
hardstatus alwayslastline                                                                          
#hardstatus string '%{= kG}%-Lw%{= kW}%50> %n%f* %t%{= kG}%+Lw%< %{= kG}%-=%c:%s%{-}'              
hardstatus string '%{= kG}[ %{G}%H %{g}][%= %{= kw}%?%-Lw%?%{r}(%{W}%n*%f%t%?(%u)%?%{r})%{w}%?%+Lw%?%?%= %{g}][%{B} %m-%d %{W}%c %{g}]'

この手法では、画面selectstuffコマンドを使用して、最初にタブの1つを選択し、次にその中に文字列を「詰め込み」ます。

スクリーンショット

タブとコマンド付きの画面

3. .screenrcファイルを使用せずに#2を作成する

できるシナリオを探している場合:

  1. スクリーンセッションを作成する
  2. タブでそれをロードします
  3. 各タブで独自のコマンドを実行する
  4. .screenrcファイルを必要としません

それからこれはあなたのためです!でも準備してください。これはコマンドラインで少し注意が必要です。

まず、スクリーンセッションを作成しましょう。

$ screen -AdmS myshell -t tab0 bash

スイッチ-AdmSは次のことを行います。

(詳細については、画面のマニュアルページ参照してください)

-A

    Adapt the sizes of all windows to the size of the  current terminal. 
    By default, screen tries to restore its old window sizes when
    attaching to resizable terminals

-d -m

    Start screen in "detached" mode. This creates a new session but
    doesn't attach to it. This is useful for system startup scripts.

-Sセッション名

    When creating a new session, this option can be used to specify a
    meaningful name for the session. This name identifies the session for
    "screen -list" and "screen -r" actions. It substitutes the default
    [tty.host] suffix.

次に、タブとそのコマンドを使用してロードを開始しましょう。

$ screen -S myshell -X screen -t tab1 vim
$ screen -S myshell -X screen -t tab2 ping www.google.com
$ screen -S myshell -X screen -t tab3 bash

これらの3つのコマンドは、3つの追加タブを作成し、vimを実行し、googleにpingを実行し、bashシェルを起動します。スクリーンセッションを一覧表示すると、次のように表示されます。

$ screen -ls
There is a screen on:
        26642.myshell   (Detached)
1 Socket in /var/run/screen/S-root.

screenセッションmyshellに接続し、それに含まれるタブをリストすると、次のように表示されます。

$ screen -r myshell

このキーの組み合わせをヒット:Ctrl+ A続いShift+"

Num Name                                                                   Flags

  0 tab0                                                                       $
  1 tab1                                                                       $
  2 tab2                                                                       $
  3 tab3                                                                       $

tab2への切り替え

64 bytes from ord08s08-in-f20.1e100.net (74.125.225.116): icmp_seq=443 ttl=55 time=41.4 ms
64 bytes from ord08s08-in-f20.1e100.net (74.125.225.116): icmp_seq=444 ttl=55 time=33.0 ms
64 bytes from ord08s08-in-f20.1e100.net (74.125.225.116): icmp_seq=445 ttl=55 time=30.1 ms

スクリーンショット

CLIから開始された画面のss

上記のコマンドは、OPが探していたものを達成するための基本的な方法です。もちろん、これはBashエイリアスまたはシェルスクリプトを使用して圧縮および改良できます。これは、単に機能を実証し、方法を示すためです。

参照資料


2
Qを読み忘れない場合、セッションの開始時にコマンドを実行したいと考えています。通常screen "cd /foo/bar/; summon_cthulhu;" <<-- in that screen session
ルニウム

彼は、タブ付きの画面を開き、タブの1つでコマンドを実行することを意味すると思いますか?
slm

はい。通常、起動後にログインしてgetを実行するときのように、画面内の起動時にシェルコマンドを実行しますLast login on ... Welcome to XXX, N new mails....。少なくともそれがQ の見出しの読み方
です。– Runium

Qに関する彼のコメントを読んで、彼は両方を望んでいます。
slm

よくやった私も投票したいが、私のマイナーな評判は私を妨げた:)
アーメド・ゼイン・エル・デイン
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.