การเปลี่ยนสีของเทอร์มินัลเมื่อเปลี่ยนเป็นเครื่องระยะไกลและด้านหลัง


8

ค้นหาวิธีเปลี่ยนสีของเทอร์มินัลโดยอัตโนมัติเมื่อเปลี่ยนเป็นเครื่องระยะไกลและเปลี่ยนกลับเป็นสีเริ่มต้นเมื่อออกจากเซสชัน ssh เพียงต้องการมีสีอื่นเมื่อฉันทำงานกับเครื่องระยะไกล

ความคิดใด ๆ

ps: ไม่ต้องการใช้ iTerm2 แต่เป็น Terminal.app มาตรฐาน

คำตอบ:


9

ฉันใช้สิ่งต่อไปนี้

มีคำสั่งเชลล์ที่เรียกว่าmysshพร้อมเนื้อหา:

PROFILE="$1";shift;
DEF="Basic" #the default profile name
echo "tell app \"Terminal\" to set current settings of first window to settings set \"${PROFILE}\""|osascript
ssh $@
echo "tell app \"Terminal\" to set current settings of first window to settings set \"${DEF}\""|osascript

และใช้นามแฝง bash สำหรับการเชื่อมต่อเช่น:

alias ssweb='myssh Homebrew user@web.example.com'
alias ssmail='myssh Ocean me@mail.example.com'

เมื่อฉันต้องการที่จะ ssh ลงในเว็บเซิร์ฟเวอร์ฉันเพียงแค่เขียนsswebใน Terminal และฉันได้รับโปรไฟล์ "Homebrew" เมื่อสิ้นสุดเซสชัน ssh AppleScript จะตั้งค่ากลับเป็น "พื้นฐาน"

นามแฝงควรเข้าสู่ $ HOME / .profile หรือไฟล์ bash-startup ที่คล้ายกันของคุณ

"Homebrew", "Ocean" ฯลฯ เป็นโปรไฟล์การตั้งค่าจากการตั้งค่า Terminal.app นอกจากนี้คุณยังสามารถตั้งค่าแบบอักษรการเข้ารหัสและอื่น ๆ ที่แตกต่างกัน

แน่นอนคุณสามารถใช้งานได้โดยตรง (ไม่มีนามแฝง) เช่น:

myssh Pro user@another.machine.example.com
       ^        ^
       |        ssh command arguments
       terminal profile name

คุณจะทำสิ่งนี้เพื่อ iterm2 ได้อย่างไร ขอบคุณ!
Cosu

ฉันหยุดใช้ iTerm เมื่ออยู่ใน "vim" หลังจากเลือกข้อความบางส่วนมันถูกตัดส่วนที่เลือกแทนการคัดลอก .. (แต่น่าเสียดายที่ฉันไม่มีความคิดเกี่ยวกับโซลูชัน iTerm2 เลย
jm666

ขอบคุณ! ฉันได้ดูวิธี kludgy ที่หลากหลายเพื่อทำสิ่งนี้ในขณะที่ แต่วิธีการของคุณง่ายและยืดหยุ่น คะแนนโบนัสสำหรับการพัฒนาเฟรมเวิร์กขนาดเล็กที่สามารถใช้โปรไฟล์และคำสั่งจากนามแฝงที่แตกต่างกันแทนที่จะไปทั่วสคริปต์จำนวนมากที่มีชุดการกำหนดค่าตายตัวแบบกำหนดเอง
ตุลาคม

2

ฉันรู้ว่ามีคำตอบอยู่สองสามข้อ แต่นี่เป็นทางเลือก:

ไม่มีวิธีทั่วไปในการเปลี่ยนสีพื้นหลัง แต่เราสามารถใช้วิธีมาตรฐานเพื่อเปลี่ยนชื่อหน้าต่าง หากคุณลงชื่อเข้าใช้อุปกรณ์ที่ไม่ใช่ "เซิร์ฟเวอร์ Unix" (เช่นอุปกรณ์เครือข่ายเราเตอร์สวิตช์ไฟร์วอลล์ ฯลฯ ) คุณต้องใช้เชลล์และไม่สามารถติดตั้งตัวแปรเชลล์ของคุณเองได้ ดังนั้นนี่คือวิธีอื่น:

function ssh() {
  H=$(echo $@ | sed -e 's/.*@//g;s/ .*//g')
  echo $@ | grep '@' && U=$(echo $@ | sed -e 's/@.*//g;s/.* //g')
  echo -ne "\033]0;${U:=$(whoami)}@${H%%.*}\007"
  unset H
  unset U
  /usr/bin/ssh $@
}

.bashrcเพิ่มไปของคุณ

โดยทั่วไปเมื่อต้องการฟังก์ชั่นและนามแฝงเพื่อดูในเส้นทางนี้ใช้คำสั่ง ssh และใช้ข้อความก่อนและหลัง "@" เพื่อตั้งค่าตัวแปร HOST และ USER ซึ่งจะใช้ในการสะท้อนรหัส ASCII ซึ่งได้รับการยอมรับโดย terminal และใช้ในการตั้งชื่อ

คุณต้องใช้ "ssh user@host.blah" สำหรับสิ่งนี้และไม่ใช่ "ssh -l user host.blah"

หากคุณไม่ได้ระบุชื่อผู้ใช้มันจะตั้งเป็นชื่อผู้ใช้ปัจจุบันของคุณ (เห็นได้ชัดว่าคุณใช้. ssh / config ที่กำหนดเอง (ซึ่งฉันใช้บ่อย) สิ่งนี้จะไม่ถูกต้อง แต่ฉันคิดว่ามันดีพอ เพื่อเป็นประโยชน์

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