Cách mở các cửa sổ tab trong màn hình Gnu & thực thi các lệnh trong mỗi cái


30

Khi bắt đầu phiên có tên bất kỳ như thế này screen -S name1

tôi muốn mở các cửa sổ tab trong phiên màn hình này như khi mở các tab trong gnome-terminal như thế này

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

Vậy làm thế nào để làm điều này?


Cả hai tôi muốn biết làm thế nào để mở các tab để chúng tôi thực hiện một số lệnh và tôi muốn thực thi một số lệnh sau khi tôi mở tab, tôi sẽ chạy nó
Ahmed Zain El Dein

Vì vậy, kỹ thuật tôi mô tả dưới đây cho thấy các tab mà bạn đang tìm kiếm sau đó? Chỉ cần một cách để chạy một lệnh trong chúng?
slm

nhưng thực sự tôi đang mới bắt đầu và tôi không hiểu những gì u muốn tôi làm gì suy nghĩ chính xác tôi rằng có cú pháp để tab đang mở trong màn hình Ain cửa sổ nhưng có vẻ như tôi sẽ thêm một số dòng để một số tập tin
Ahmed Zain El Dein

ok tôi hiểu rằng bạn muốn tôi sao chép nó và quá khứ trong tập tin này ở nhà của tôi nhưng điều tôi đang hỏi là màn hình -t đưa ra một tiêu đề cho màn hình như tôi biết và tôi cũng muốn mở các tab đó trong một phiên có tên ví dụ screen -S name1 --tab -e "some commands"tôi hy vọng bạn có được những gì tôi đang hỏi về?
Ahmed Zain El Dein

mmmm những là một tiền định nghĩa các tab với một số lượng nhất định đây không phải là những gì tôi đang hỏi thưa ông :) Tôi không biết có bao nhiêu tab tôi cần trong thời gian chạy những gì tôi muốn là một cái gì đó tương tự như lệnh terminal gnome gnome-terminal --tab -e "commands " --tab -e " commands này sẽ mở ra một cửa sổ của ví dụ như thiết bị đầu cuối có hai tab :) cảm ơn bạn
Ahmed Zain El Dein

Câu trả lời:


73

1. Tab trong màn hình

Bạn đang tìm kiếm cái này để thêm vào tập tin .screenrc của bạn:

screen -t tab1
screen -t tab2

Đây là một .screenrc cơ bản tuyệt vời để giúp bạn bắt đầu với một thanh trạng thái, vv LƯU Ý: Điều này thường nằm trong thư mục chính của bạn /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}]'

ảnh chụp màn hình

ss của phiên màn

2. Tab trong màn hình (với các lệnh chạy bên trong)

Ví dụ .screenrcdưới đây sẽ tạo 2 tab và chạy 3 lệnh echo trong mỗi lệnh.

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}]'

Kỹ thuật này sử dụng các lệnh selectvà màn hình stuffđể bước đầu chọn một trong các tab và sau đó "nhét" một chuỗi vào đó.

ảnh chụp màn hình

ss của màn hình w / tab & lệnh

3. Tạo # 2 mà không cần sử dụng .screenrctệp

Nếu bạn đang tìm kiếm kịch bản mà bạn có thể:

  1. tạo một phiên màn hình
  2. tải nó lên với các tab
  3. có mỗi tab chạy các lệnh riêng của họ
  4. không yêu cầu một .screenrctập tin

Sau đó, đây là một trong những cho bạn! Hãy chuẩn bị mặc dù. Điều này có thể có một chút khó khăn với các dòng lệnh.

Để bắt đầu, hãy tạo một phiên màn hình:

$ screen -AdmS myshell -t tab0 bash

Các công tắc -AdmSthực hiện như sau:

(Xem trang man màn hình để biết thêm chi tiết)

-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.

Tên phiên

    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.

Bây giờ hãy bắt đầu tải nó lên bằng các tab + lệnh của chúng:

$ 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 lệnh này sẽ tạo thêm 3 tab và chạy vim, ping google và khởi chạy bash shell. Nếu chúng tôi liệt kê ra các phiên màn hình, chúng tôi sẽ thấy như sau:

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

Nếu chúng tôi kết nối với phiên màn hình, myshell và liệt kê các tab chứa nó, chúng tôi sẽ thấy như sau:

$ screen -r myshell

Nhấn tổ hợp phím này: Ctrl+ Atheo sau là Shift+"

Num Name                                                                   Flags

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

Chuyển sang 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

ảnh chụp màn hình

ss của màn hình bắt đầu từ cli

Các lệnh trên là cách cơ bản để thực hiện những gì OP đang tìm kiếm. Điều này tất nhiên có thể được cô đọng và tinh chỉnh bằng cách sử dụng bí danh Bash hoặc thậm chí các tập lệnh shell, đây chỉ đơn thuần là để thể hiện khả năng và chỉ đường!

Tài liệu tham khảo


2
Nếu tôi không đọc sai Q, anh ta muốn thực thi một lệnh khi bắt đầu phiên. Điển hìnhscreen "cd /foo/bar/; summon_cthulhu;" <<-- in that screen session
Runium

Bạn nghĩ rằng anh ta có nghĩa là, mở một màn hình với các tab và chạy một lệnh bên trong một trong số họ?
slm

Vâng. Chạy một số lệnh shell khi khởi động trong màn hình, thường là khi bạn đăng nhập sau khi khởi động và nhận Last login on ... Welcome to XXX, N new mails..... Ít nhất đó là cách tôi đọc tiêu đề của Q.
Runium

Đọc bình luận của anh ấy về Q, anh ấy muốn cả hai.
slm

làm tốt lắm tôi cũng muốn bỏ phiếu nhưng danh tiếng nhỏ của tôi đã ngăn cản tôi :)
Ahmed Zain El Dein
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.