ฉันจะเลือกสิ่งที่ปรากฏในแถบชื่อ PuTTY จาก Linux ได้อย่างไร


8

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

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


$ uname -a
Linux drevo 2.6.32-5-amd64 # 1 SMP จ. 16 ม.ค. 16:22:28 UTC 2012 x86_64 GNU / Linux

$ cat / etc / debian_version
6.0.4

คำตอบ:


6

โปรแกรมเทอร์มินัลส่วนใหญ่ - รวมถึง konsole, putty และ xterm - เลียนแบบเทอร์มินัล VT100 แบบเก่า เทอร์มินัลนี้ช่วยให้คุณสามารถตั้งค่าบางสิ่งรวมถึงตัวหนาสีการตั้งค่าชื่อเทอร์มินัลและอื่น ๆ โดยใช้ลำดับอักขระพิเศษที่เรียกว่า escape sequences

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

นี่คือสิ่งที่ฉันมีอยู่ในของฉัน (Linux / bash):

USER=$(/usr/bin/id -un)
HOSTNAME=$(uname -n)
HOSTNAME=${HOSTNAME%%.*}
PROMPT_COMMAND='echo -ne "\e]0;$USER@${HOSTNAME}: $(pwd -P)\a"'

คุณสามารถใส่มันลงใน ~ / .bashrc ของคุณ

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

PS1="\[\e[33;1m\]\h:\$\[\e[0m\] "

ดูรอบ ๆ การปรับแต่งพร้อมรับคำ Linux คุณจะพบ HowTos มากกว่าที่คุณรู้ว่าต้องทำอะไร เลือกสิ่งที่คุณอ่านง่ายที่สุด


14

ชื่อเทอร์มินัลถูกตั้งค่าโดยใช้ลำดับพิเศษ escape ในเอาต์พุตคอนโซล ตามค่าดีฟอลต์, พร้อมต์ bash รวมถึง escape sequences เหล่านี้และตั้งค่าหัวเรื่องเป็นไดเร็กทอรีการทำงานปัจจุบัน

ดังนั้นคุณจะต้องแก้ไขตัวแปร PS1 ของคุณ (ส่วนใหญ่เวลาที่ตั้งไว้~/.bashrc) มิฉะนั้น bash จะเขียนทับชื่อของคุณทุกครั้งที่มีข้อความแจ้งปรากฏขึ้น

จากนั้นคุณสามารถตั้งชื่อโดยใส่ต่อไปนี้ในสคริปต์ที่ได้รับการดำเนินการเมื่อคุณเข้าสู่ระบบเช่น~/.profile:

echo -e "\033]0;<your string>\007"

โปรดทราบว่านี่เป็นคำตอบเดียวที่ตอบคำถาม
Erik Aronesty

เปลี่ยน-eเป็น-enหากคุณต้องการหลีกเลี่ยงบรรทัดว่างพิเศษที่เอาต์พุตโดยคำสั่ง echo
ADTC

2

ฉันค้นหาหลายฟอรัมและฉันไม่พบคำตอบสำหรับคำถาม:
จะรับเอาต์พุตคำสั่งทั้งหมดไปยังชื่อเรื่องของ Putty ได้อย่างไร

จำเป็นสำหรับโปรแกรมอื่น ๆ ที่จะรู้ว่าเมื่องานบางอย่างบนเซิร์ฟเวอร์เสร็จและถูกหรือผิด Plink stdout และ stdin ไม่ทำงาน ฉันใช้การปรับแต่งจำนวนมากด้วยความล่าช้าในการรอคอยและสำหรับคำสั่งบางอย่างที่ใช้งานได้สำหรับผู้อื่นที่ไม่ใช่ ไม่สามารถติดตั้ง XSEL และ XCLIP บนเซิร์ฟเวอร์นั้น

ดังนั้นนี่คือทางออก:

  1. รับเอาต์พุตคำสั่งในไฟล์
  2. สะท้อนไฟล์นั้นไปที่ชื่อ

สำหรับลูกค้า Putty และเซิร์ฟเวอร์ SUSE จะมีลักษณะดังนี้:

ls /home | grep domagaja > logutoit.txt 
echo -e "\033]0\\;$(cat logutoit.txt)\\007\\c"

หวังว่าบางคนจะสามารถใช้สิ่งนี้ได้ มันไม่สามารถใช้ได้กับการตั้งค่าเซิร์ฟเวอร์ทุกประเภทและการตั้งค่าไคลเอนต์แบบฉาบ แต่แนวคิดควรใช้งานได้ดี

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