ฉันสามารถเปลี่ยนพื้นหลังเทอร์มินัลตามชื่อโฮสต์ได้หรือไม่


15

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

มีบางอย่างที่ฉันสามารถใช้แบ็คกราวน์ aubergine มาตรฐานถ้าฉันอยู่บนเครื่องท้องถิ่นของฉันจากนั้นเปลี่ยนสีแดงถ้าฉัน ssh เป็นเว็บเซิร์ฟเวอร์ที่ใช้งานจริงหรือโฮสต์อื่นที่ฉันสามารถระบุได้?


หนึ่งความคิดสคริปต์การเปลี่ยนแปลงตัวแปรสภาพแวดล้อมที่จัดการการตั้งค่าขั้ว สร้างสคริปต์สำหรับแต่ละสถานที่ที่คุณมักจะ ssh และรวมถึงการเปลี่ยนแปลงการตั้งค่าในสคริปต์นั้นนี่คือคำแนะนำที่สามารถช่วย: cyberciti.biz/faq/... - วิธีนี้คุณสามารถเรียกใช้สคริปต์ที่ไม่เพียง แต่จะเชื่อมต่อกับคุณเท่านั้น
MaQleod

1
มีคำถามเดียวกันในเว็บไซต์อูบุนตู: askubuntu.com/questions/13705/... ใจฉันไม่โทษคุณฉันไม่พบมันในตอนแรก :)
Stefano

คำตอบ:


7

ดูเหมือนว่าจะไม่มีฟังก์ชั่นใด ๆ gnome-terminal ไปยัง เพิ่มแท็บใหม่ไปยังหน้าต่างที่มีอยู่ จากบรรทัดคำสั่ง แต่มีตัวเลือกน้อยเพื่อให้บรรลุสิ่งที่คุณต้องการ

ต่อคำสั่งโปรไฟล์

สร้างใหม่ gnome-terminal โปรไฟล์สำหรับแต่ละโฮสต์คุณจะ SSH หากคุณมีโฮสต์เพียงไม่กี่แห่งที่คุณเชื่อมต่อเป็นประจำนี่อาจเป็นวิธีที่ง่ายที่สุด แต่ละโปรไฟล์สามารถมีหัวเรื่องที่แตกต่างกันสีพื้นหน้าสีพื้นหลังคำสั่งที่กำหนดเองและการตั้งค่าอื่น ๆ ที่กำหนดไว้ จากนั้นคุณสามารถใช้ File -> Open Tab เพื่อเปิดแท็บใหม่ด้วยโปรไฟล์ที่เลือก

นำมาใช้ใหม่โปรไฟล์

สร้างใหม่ gnome-terminal โพรไฟล์ที่จะใช้ในการเปิดหน้าต่างใหม่ทุกครั้งที่คุณต้องการเชื่อมต่อกับโฮสต์ SSH อื่น (ขึ้นอยู่กับสิ่งนี้ AskUbuntu คำตอบ ที่ สเตฟาโน ชี้ให้เห็น). สิ่งนี้จะใช้งานได้ดีถ้าคุณเชื่อมต่อกับโฮสต์หลายแห่งบ่อยๆ สิ่งนี้จะไม่อนุญาตให้คุณแยกแยะความแตกต่าง gnome-terminal windows ที่คุณเชื่อมต่อกับโฮสต์ที่แตกต่างกันเพียงอย่างเดียวในสีพื้นหลัง / เบื้องหน้า แต่คุณจะมีชื่อเรื่องที่แตกต่างกันต่อหน้าต่าง

  1. สร้างใหม่ gnome-terminal ข้อมูลส่วนตัว ( File -> New Profile ) ขึ้นอยู่กับ Default โปรไฟล์และเรียกว่า "RemoteHost" (หมายเหตุไม่มีช่องว่างใน "RemoteHost" เพื่อให้คำสั่งง่ายขึ้น)
  2. ภายใต้ Title and Command แท็บเปลี่ยน:
    1. Initial title: ถึง "รีโมตโฮสต์"
    2. When terminal commands set their own titles: ไปยัง Replace initial title
  3. ภายใต้ Colors แท็บเปลี่ยน:
    1. ยกเลิกการเลือก Use colors from system theme
    2. Build-in schemes: ไปยัง Custom
    3. Text color: และ Background color: เพื่อสีที่คุณเลือก โปรดทราบว่าคำสั่งบางอย่าง (เช่น ls ) ใช้สีสำหรับเอาท์พุตของมันและคุณไม่ต้องการเลือกสีที่จะทำให้อ่านออกยาก
  4. คลิกที่ Close เพื่อบันทึกโปรไฟล์ใหม่ของคุณ
  5. ตอนนี้คุณสามารถเปิดใหม่ gnome-terminal หน้าต่างสำหรับแต่ละโฮสต์ SSH ระยะไกลโดยใช้คำสั่ง gnome-terminal --window-with-profile=RemoteHost -t "Some Remote SSH Host" -x ssh user@somehost. -t ตัวเลือกชุด gnome-terminal ชื่อหน้าต่างและ -x ตัวเลือกดำเนินการส่วนที่เหลือของบรรทัดคำสั่งใน terminal คุณสามารถทำได้ alias เพื่อลดการกดแป้นทั้งหมด

บรรทัดคำสั่ง

ฉันพบ รายการบล็อกนี้ ด้วยสคริปต์ต่อไปนี้ที่ใช้ xdotool และ wmctrl คำสั่ง (พวกเขาไม่ได้ติดตั้งตามค่าเริ่มต้นบน Ubuntu ดังนั้นคุณอาจต้องติดตั้งก่อน) เพื่อใช้ gnome-terminal Ctrl + เปลี่ยน + เสื้อ แป้นพิมพ์ลัดเพื่อเปิดแท็บใหม่ในปัจจุบัน gnome-terminal หน้าต่าง. มันสามารถแก้ไขได้เพื่อเปิดแท็บใหม่ที่มีโปรไฟล์เฉพาะและดำเนินการคำสั่งบางอย่างสำหรับคุณ

#!/bin/bash
# Path: /usr/local/bin/gnome-terminal
if [ "x$*" != "x" ]; then
  /usr/bin/gnome-terminal "$@"
else
  pgrep -u "$USER" gnome-terminal | grep -qv "$$"
  if [ "$?" == "0" ]; then
    WID=`xdotool search --class "gnome-terminal" | head -1`
    xdotool windowfocus $WID
    xdotool key ctrl+shift+t
    wmctrl -i -a $WID
  else
    /usr/bin/gnome-terminal
  fi
fi

อื่น ๆ

คุณสามารถสร้างสรรค์และลองทำอย่างอื่นได้

นี้ คำตอบของ SuperUser โดยทั่วไปใช้กายกรรม "script-fu" เพื่อสร้างชั่วคราว gnome-terminal โพรไฟล์ที่ใช้เปิดหน้าต่างใหม่ มันอาจได้รับการดัดแปลงเพื่อการใช้งานของคุณ

คุณอาจใช้สิ่งนี้ได้ StackOverflow Q & amp; A และกายกรรม "script-fu" เพิ่มเติมเพื่อเปลี่ยน gnome-terminal ชื่อทุกครั้งที่คุณ SSH ไปยังโฮสต์ระยะไกล มันจะไม่โดดเด่นเท่ากับการเปลี่ยนสีพื้นหลัง / เบื้องหน้า แต่จะดีกว่ามาตรฐาน Terminal ชื่อเรื่องตลอดเวลา


7

คุณสามารถใช้ตัวเลือกคำสั่งท้องถิ่นของ ssh / config เพื่อเรียกใช้คำสั่งทุกครั้งที่ใช้นามแฝง ฉันใช้

host hostname
    user myusername
    localcommand xtermcontrol --bg '#abc'

สิ่งนี้ขึ้นอยู่กับ xtermcontrol และเทอมของคุณคือ xterm สันนิษฐานว่ามีแอพอื่นสำหรับคำอื่น ๆ

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

function ssh() {
  FG=$(xtermcontrol --get-fg)
  BG=$(xtermcontrol --get-bg)
  $(which ssh) "$@"
  xtermcontrol --fg="$FG"
  xtermcontrol --bg="$BG"
}

5

สิ่งนี้จะทำงานใน Gnome หากคุณยินดีที่จะใช้หน้าต่าง Gnome-terminal ใหม่สำหรับแต่ละเซสชัน ssh

  1. สร้างโปรไฟล์ใหม่ (ที่มีสีพื้นหลังแตกต่างกัน) เรียกว่า "ระยะไกล"

  2. ใส่สิ่งต่อไปนี้ลงใน .bash_aliases, หรือ .bashrc

    ### add to .bash_aliases, for differentiating between local and remote hosts 
    sshhelper() {
       gnome-terminal --window-with-profile=Remote -x bash -c "ssh $1";
    }
    alias sshc=sshhelper
    

ตอนนี้ sshc remote-machine เปิด ใหม่ เซสชัน gnome-terminal ที่มีโปรไฟล์ "Remote" สิ่งนี้จะแยกความแตกต่างระหว่างส่วนกำหนดค่าภายในและระยะไกล

หากต้องการรองรับหลายโปรไฟล์ / โฮสต์สร้างหลายโปรไฟล์และวางสิ่งนี้ใน .bash_aliases แทน :

### add to .bash_aliases, for differentiating between multiple remote hosts
sshhelper() {
    HOST=`echo $1 | cut -d'@' -f2`

    case $HOST in
        Production )  PROFILE="Red" ;;
        Test )        PROFILE="Green" ;;
        # ... if you have more cases ...
        *)           PROFILE="Default" ;;
    esac

    gnome-terminal --window-with-profile=$PROFILE -x bash -c "ssh $1";
}

# alias ssh=sshhelper    # this will "override" the ssh command, but may break other stuff!
alias sshc=sshhelper

ตอนนี้ sshc Production จะเปิดหน้าต่างเซสชั่นใหม่โดยใช้โปรไฟล์ "สีแดง" sshc Test จะเปิดหน้าต่างเซสชั่นใหม่โดยใช้โปรไฟล์ "สีเขียว" และโฮสต์อื่น ๆ จะใช้โปรไฟล์ "เริ่มต้น"


2

การรวบรวมข้อมูลทั้งหมดจากไซต์สแต็ค *** ที่นี่เป็นวิธีที่ง่ายที่สุดที่ฉันพบสำหรับมิ้นต์ mate + เทอร์มินัลเพื่อน (เหมือนสำหรับ gnome)

  1. ใน terminal เพื่อนกำหนดโปรไฟล์ที่สองที่มีพื้นหลังที่แตกต่างกัน
  2. ตรวจสอบว่าปุ่มเริ่มต้นทำงาน Alt + PageDown / Alt + PageUp หรือไม่ควรเปลี่ยนโปรไฟล์และพื้นหลังด้วย
  3. sudo apt get install xdotool

ตอนนี้คุณสามารถแก้ไข / etc / ssh / ssh_config เพื่อให้สามารถเปลี่ยนโปรไฟล์ได้หลังจากที่สร้างแต่ละ ssh แล้ว:

Host *
  PermitLocalCommand yes
  LocalCommand xdotool key Alt+Page_Down

ตอนนี้หลังจากการเชื่อมต่อ ssh แต่ละครั้งถูกสร้างขึ้นในเทอร์มินัลโปรไฟล์จะเปลี่ยนไปและคุณจะไม่นำการอัพเดท sql ที่ไม่พึงประสงค์ไปยังฐานข้อมูลการผลิตอีกครั้ง :)

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

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