แท็บเมื่อใช้ 'หน้าจอ'


20

ฉันใช้Ubuntu 10.04 หลังจากที่ฉันติดตั้งscreen:

sudo apt-get install screen

ฉันได้ทำการเชื่อมต่อสองsshกับรีโมตเซิร์ฟเวอร์สองเครื่องโดยทำสิ่งต่อไปนี้ทีละขั้นตอน (ฉันทำขั้นตอนต่อไปนี้ตามเอกสารที่นี่ ):

1.เปิดหน้าต่าง termnal รันคำสั่งscreen

2.กดCtrl+ A+ cเพื่อสร้างคอนโซลเสมือนใหม่

3 ssh usr@IP1

ณ จุดนี้ฉันมีหนึ่งคอนโซลเสมือนซึ่งแสดงว่าฉันได้เชื่อมต่อกับเซิร์ฟเวอร์ระยะไกล (IP1)

4.กดCtrl+ A+ cเพื่อสร้างคอนโซลเสมือนใหม่

5 ssh usr@IP2

ดังนั้นตอนนี้ฉันได้เชื่อมต่อกับเซิร์ฟเวอร์ระยะไกลสองเครื่อง (IP1 & IP2) แต่ , ฉันไม่ได้มีสองแท็บในหน้าต่าง terminal หนึ่งแทนฉันต้องใช้Ctrl+ A+ pและCtrl+ A+ nจะสลับไปมาระหว่างสองคอนโซลเสมือนในหนึ่งหน้าต่าง terminal

ไม่เป็นการใช้screenงานฉันสามารถมีสองแท็บในหน้าต่างเทอร์มินัลเดียวโดยแต่ละแท็บแสดงการเชื่อมต่อหนึ่งไปยังเซิร์ฟเวอร์ระยะไกลหนึ่งเครื่อง ทำไมฉันไม่มีแท็บในหน้าต่างเทอร์มินัล

คำตอบ:


26

นี่คือของฉัน.screenrcที่ฉันใช้ทุกที่เพื่อดูของฉันscreenตัวเลขเป็นแท็บที่ด้านล่างของหน้าต่างและสายให้ข้อมูลดังกล่าวข้างต้นแท็บ ส่วนที่คุณต้องการจริงๆอยู่ภายใต้ "รูปลักษณ์และความรู้สึก"

# skip the startup message
startup_message off

# go to home dir
chdir

# Automatically detach on hangup. 
autodetach on

# Change default scrollback value for new windows
defscrollback 10000

# start with visual bell as default
vbell on
vbell_msg "bell on %t (%n)"

# look and feel
caption always "%{= bb}%{+b w}%n %t %h %=%l %H %c"
hardstatus alwayslastline "%-Lw%{= BW}%50>%n%f* %t%{-}%+Lw%<"

activity "Activity in %t(%n)"

shelltitle "shell"
shell -$SHELL

คุณสามารถเพิ่มสิ่งต่อไปนี้เพื่อเพิ่มสองแท็บโดยอัตโนมัติเมื่อscreenสร้างครั้งแรก:

screen ssh usr@IP1
screen ssh usr@IP2

นอกจากนี้เนื้อหาสถานะสามารถอัปเดตได้โดยใช้รหัสยกเว้นที่ได้รับจากคำสั่งเชลล์และพรอมต์ ตัวอย่างเช่นฉันอัปเดตสถานะด้วยไดเรกทอรีปัจจุบันโดยใช้สิ่งนี้ในของฉัน.bashrc:

if [ 'screen' == "${TERM}" ]; then
  export PROMPT_COMMAND='printf "\e]2;%s %s\a" "${USER}" "${PWD}" '
fi

4
ฉันสงสัยอยู่เสมอว่าทำไมการกำหนดค่าฮาร์ดคอร์จึงทำให้หน้าจอไม่ได้ทำงานด้วย PS ลองshelltitle "$ |shell:"เพิ่มชื่อคำสั่งต่อท้ายชื่อ
แอมเฟตามาจิน

7

เมื่อคุณกดCtrl+ aและ"คุณสามารถเห็นหน้าจอ "แท็บ" พวกเขาไม่ควรจะเป็นแท็บบนเทอร์มินัล GUI ของคุณคุณสามารถทำได้ด้วยตนเองโดยการสร้างแท็บใหม่ที่เทอร์มินัล GUI ที่คุณกำลังใช้ แท็บscreen -rเพื่อกลับไปยังเซสชั่นหน้าจอของคุณและนำทางไปยังเซสชั่นที่คุณต้องการด้วยCtrl+ aและจำนวนหรือ"เพื่อดูเมนูที่มีแท็บของคุณทั้งหมด

คุณสามารถให้ชื่อให้กับท่านทุกคนหน้าจอ "แท็บ" โดยการกดCtrl + แล้วa A


1
ควรจะต้องเรียกใช้screen -r -xหากหน้าจอนั้นติดอยู่แล้วในแท็บแรก
Arcege

3

ฉันคิดว่าคุณกำลังสับสนกับแท็บต่างๆในเทอร์มินัลกราฟิกเช่น konsole กับคนที่อยู่ในหน้าจอ ในหน้าจอคุณสลับเฉพาะเนื้อหาของหน้าต่างด้วย ^ A-Kombinations ที่กล่าวถึง สามารถใช้งานได้ในสภาพแวดล้อมที่ไม่ใช้กราฟิก


2

คุณสามารถกำหนดค่าscreenให้แสดงบรรทัดสถานะที่สามารถบอกคุณได้หลายอย่างฉันคิดว่าคุณอยู่ที่หน้าต่างหน้าจอใด แต่ฉันไม่ได้ใช้บรรทัดสถานะดังนั้นไม่สามารถพูดได้อย่างแน่นอน

สำหรับสิ่งที่ฉันรู้screenอย่าสร้างแท็บ แต่คุณต้องสลับไปมาระหว่างหน้าจอด้วยคำสั่งที่คุณระบุหรือตามที่ฉันต้องการCtrl- A 1, Ctrl- A 2, ฯลฯ

หากต้องการมีมากกว่าหนึ่งแท็บคุณสามารถใช้gnome-terminalคุณสมบัติได้โดยไม่ต้องมีหน้าจอ: Ctrl- Shift- Tจะสร้างแท็บใหม่และAlt- 1, Alt- 2, ฯลฯ จะสลับระหว่างแท็บต่างๆ

นอกจากนี้ฉันถามว่าทำไมคุณไม่เรียกใช้หน้าจอบนเซิร์ฟเวอร์ดังนั้นใช้การเชื่อมต่อ ssh เดียวเท่านั้น (แต่ในกรณีนี้ไม่มีแท็บใด ๆ )


2

ฉันรู้ว่ามันค่อนข้างเก่า แต่เมื่อ Google นำฉันมาที่นี่คนอื่น ๆ ก็อาจจะอ่านด้วย ดังนั้นนี่คือแฮ็ค $ 0.02 ของฉันเพื่อเลียนแบบแท็บภายในเซสชัน "หน้าจอ":

สร้างบรรทัดสถานะด้วย:

  • ทางด้านซ้าย: วันที่ / เวลา
  • ทางด้านขวา: ชื่อโฮสต์ท้องถิ่น + โหลดเฉลี่ย
  • ตรงกลาง: ชื่อของหน้าจอ "windows"
    • หน้าต่างปัจจุบัน: ข้อความสีแดงบนพื้นหลังสีดำ
    • หน้าต่างอื่น ๆ : ข้อความสีขาวบนสีพื้นหลังบรรทัดสถานะ (สีน้ำเงิน, ที่นี่)

ใส่ใน~/.screenrc:

hardstatus alwayslastline "%{kb}%{c}[%{w}%D %d/%m/%Y %c:%s%{c}] %{w}%-w%{rk}%n %t%{wb}%+w %=%{c}[%{W}%H %l%{c}]"

(บางทีนี่อาจจะมีค่ามากกว่า $ 0.02 เพราะฉันพยายามอย่างมากในเรื่องนี้ ;-)

วิธีเปลี่ยนจากหน้าต่างปัจจุบันไปเป็นก่อนหน้า / ถัดไปด้วยF6/ F7คีย์:

bindkey -k k6 prev
bindkey -k k7 next
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.