คุณสมบัติที่ซ่อนของ `หน้าจอ '


31

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


5
หน้าจอจะเป็นประโยชน์เพื่อให้มันอยู่บนเว็บไซต์ทั้งหมด: stackoverflow.com/questions/70614/gnu-screen-survival-guide
Zac Thompson

คำตอบ:


31

ฉันชอบที่จะใช้มันเพื่อเชื่อมต่อกับคอนโซลซีเรียลเช่น

screen /dev/ttyS0 19200

คำสั่งนี้จะเปิดการเชื่อมต่อกับพอร์ตอนุกรม 0 (ttyS0) ด้วยความเร็ว baud ที่ 19200


นี้เป็นหนึ่งในสิ่งที่ชื่นชอบให้กับคนประหลาดออกมาด้วยอย่างแท้จริงหนึ่งในคุณสมบัติที่คาดว่าไม่น้อยกว่าหน้าจอ
epic9x

1
และหนึ่งในรายการโปรดของฉันอย่างแท้จริง ไม่จำเป็นต้องจัดการหรือกำหนดค่า minicom ผู้ดูแล ฯลฯ ฉันรู้สึกเหมือนเด็กเล็ก ๆ ในร้านขายขนมเมื่อฉันค้นพบสิ่งนี้
Scott Pack

แน่นอน - เป็นเรื่องดีที่เปิดเซสชันหน้าจอแบ่งออกเป็นสองหน้าต่างโดยมองเห็นทั้งดองเกิล USB-Serial
dotwaffle

10

คุณสมบัติที่ดีที่สุดscreenคือ Byobu (เดิมคือหน้าจอโปรไฟล์) ซึ่งมาพร้อมกับ Ubuntu โดยค่าเริ่มต้นตั้งแต่ Jaunty: https://launchpad.net/byobu

มันเป็นตัวจัดการการกำหนดค่าที่มีค่าเริ่มต้นที่ดีมากการแจ้งเตือนสถานะมากมายและแป้นพิมพ์ลัดที่มีประโยชน์ (เช่น f2 สำหรับหน้าจอใหม่ f3-f4 สำหรับหน้าที่ก่อนหน้า / ถัดไปเป็นต้น)

ฉันไม่ไปไหนเลยถ้าไม่มีอีกแล้ว :)


10

จากผู้ให้คำปรึกษาของ KTamas: มีมากกว่าหนึ่งคนที่สามารถใช้หน้าจอเดียวกันได้เช่นหากเพื่อนของคุณsshเข้าสู่คอมพิวเตอร์คุณจะสามารถเชื่อมต่อกับหน้าจอของคุณได้ เป็นเรื่องที่ยอดเยี่ยมเมื่อคนสองหรือสามคนทำงานในโครงการเดียวกัน


1
นี่เป็นสิ่งที่ดีกว่ามากสำหรับการติดตามสิ่งที่ผู้ใช้สนับสนุนระยะไกลกำลังทำอยู่และฆ่าเซสชันของพวกเขาหากพวกเขาไม่สามารถทำได้ดี!
Tom O'Connor

6

ไม่ได้เป็น "คุณสมบัติที่ซ่อนอยู่" อย่างแน่นอน แต่การติดตั้งไฟล์. screenrc อย่างเหมาะสมสามารถสร้างโลกที่แตกต่าง หนึ่งในตัวอย่างที่ดีกว่าคือสามารถพบได้โดย googling screenrc และ 'brad sims' - เขามีไฟล์ที่ยอดเยี่ยมสำหรับคนจรจัด

ที่กล่าวว่าการตั้งค่าที่ฉันชอบจะเป็น bindkey:

# bind F7  to detach screen session from this terminal
# bind F8  to kill current screen window.
# bind F9  to create a new screen
# bind F10 to rename current screen window
# bind F11 to move to previous window
# bind F12 to move to next window
bindkey -k k7 detach
bindkey -k k8 kill
bindkey -k k9 screen
bindkey -k k; title
bindkey -k F1 prev
bindkey -k F2 next

2
พิจารณาว่ามีการใช้ ctrl + a บ่อยเกินไปนอกจอ (จุดเริ่มต้นของบรรทัดในการทุบตีใคร?) ฉันชอบสิ่งนี้
Scott Pack

1
ctrl + a / ctrl + e สำหรับการย้ายเคอร์เซอร์ แต่เมื่อ minicom ทำงานในหน้าจอ Ctrl + a, a, o สำหรับตัวเลือก ...
petrus

6

ฉันจำไม่ได้ว่าฉันขโมยสิ่งนี้จากใครบางคนบน dotfile.org ฉันแก้ไขมันเล็กน้อยสำหรับ ssh:

#!/bin/sh
# scr - Runs a command in a fresh screen
#
# Get the current directory and the name of command

wd=`pwd`
cmd=$1
shift

# We can tell if we are running inside screen by looking
# for the STY environment variable.  If it is not set we
# only need to run the command, but if it is set then
# we need to use screen.

if [ -z "$STY" ]; then
        $cmd $*
else
        # Screen needs to change directory so that
        # relative file names are resolved correctly.
        screen -X chdir $wd

        # Ask screen to run the command
        if [ $cmd == "ssh" ]; then
                screen -X screen -t ""${1##*@}"" $cmd $*
        else
                screen -X screen -t "$cmd $*" $cmd $*
        fi
fi

จากนั้นฉันจะตั้งชื่อแทนทุบตีต่อไปนี้:

vim() {
        scr vim $*
}

man() {
        scr man $*
}

info() {
        scr info $*
}

watch() {
        scr watch $*
}

ssh() {
        scr ssh $*
}

มันจะเปิดหน้าจอใหม่สำหรับนามแฝงข้างต้นและถ้าใช้ ssh ก็จะเปลี่ยนชื่อหน้าจอด้วยชื่อโฮสต์ ssh

ไชโย z0mbix


: o คุณยกมันขึ้นมาจากฉันหรือเปล่า? gist.github.com/137214
VxJasonxV

ไม่ฉันคิดว่ามันมาจากทีมงาน last.fm ที่บล็อกเกอร์เกี่ยวกับมันครั้งเดียว
z0mbix

4

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

Ctrl-A:width -w 999

ฉันสามารถตั้งscreenให้กว้างกว่าเทอร์มินัลของฉันได้และการล็อกไลน์lessจะไม่ขาด


10
FYI ตัวเลือกที่น้อยกว่า-sจะบอกว่าไม่ให้ล้อมเส้น คุณสามารถใช้LeftและRightเพื่อเลื่อนเส้น
MikeyB

4

ความสามารถในการเปลี่ยนปุ่มควบคุมด้วย -ethat เมื่อหน้าจอเริ่มต้น ฉันใช้มันเพื่อให้ฉันสามารถซ้อนหน้าจอเซสชันไว้ภายในกันได้ ตัวอย่าง: "screen -e ^ w ^ x" ทำให้ปุ่มควบคุม ctr-w


2

คุณลักษณะที่ดีอย่างหนึ่ง: คุณสามารถใช้backtickเพื่อดึงข้อมูลเพิ่มเติมเพื่อแสดงในคำบรรยายภาพ ตัวอย่างเช่นฉันมีสคริปต์ที่แสดงสรุปหนึ่งบรรทัดของการนับจดหมายใหม่ในโฟลเดอร์ต่าง ๆ และฉันมีที่ปรากฏในบรรทัดล่างถ้าเซสชันหน้าจอของฉันพร้อมกับชื่อโฮสต์ที่มีการกำหนดค่าที่มีลักษณะดังนี้:

backtick 1 15 15 /home/waltermundt/bin/newmail

caption always
caption string "%{.kW}%1` example.com %{.bW}%-w%{.rW}%n %t%{-}%+w %{.gW}%h%{-}"

กุญแจคือบิต% 1` ซึ่งหมายถึงเอาต์พุตของ backtick job 1

(ฉันใช้hardstatusเป็นสตริงชื่อ xterm และตั้งค่าแตกต่างกันดังนั้นจึงใช้captionแทนhardstatus alwayslastline)


2

ไม่ใช่คุณสมบัติ "ซ่อนอยู่" แต่ความสามารถในการแชร์เซสชันหน้าจอกับผู้ใช้อื่นที่ใช้งานอยู่นั้นมีประโยชน์มาก

มีวิธีที่ซับซ้อนในการตั้งค่าการแชร์หน้าจอรวมถึงสิทธิ์การควบคุมการเข้าถึงและการจัดการชื่อผู้ใช้ สิ่งที่ฉันทำกับเพื่อนร่วมงานบ่อยที่สุดนั้นรวดเร็วและสกปรกมากขึ้น:

  1. ลงชื่อเข้าใช้เครื่องที่มีปัญหาในหน้าต่างใหม่
  2. อนุญาตให้ทุกคนเขียนถึงเทอร์มินัลของฉัน: chmod 777 $(tty)
  3. Sudo ไปยังบัญชีของพวกเขา: sudo su <username>
  4. แชร์หน้าจอ: screen -x <session>

สิ่งนี้ไม่ต้องการการกำหนดค่าล่วงหน้าหรือการแชร์รหัสผ่าน


1

เอกสารโกงเล็กน้อยที่ฉันพิมพ์ด้วยตัวเอง

(หมายเหตุ: ทุกอย่างนำหน้าด้วยCtrl-A)

ตอบ: เปลี่ยนชื่อหน้าต่าง   
": แสดงรายการหน้าต่าง   
d: เซสชันแยก

และscreen -D -Rเพื่อ deattach และ reattach เซสชันที่กำลังทำงานอยู่ (ในกรณีที่คุณสูญเสียการเข้าถึงเซสชั่นของคุณ)

สิ่งเหล่านี้ไม่ใช่คุณสมบัติที่ซ่อนอยู่ แต่สิ่งเหล่านี้เป็นคุณสมบัติที่ฉันพบว่ามีประโยชน์มากที่สุด


1

มันเป็นคุณสมบัติหลัก แต่แน่นอนดีที่สุดคือCtrl-A:การพูดคุยกับหน้าจอโดยตรง : screen -t title ssh hostnameเป็นต้น

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