ใน Ubuntu 14.10 ถ้าฉันเปิด Terminal Tab หลายอันฉันสามารถคลิกขวาที่แท็บ Terminal แล้วเปลี่ยนชื่อได้ ใน Ubuntu 15.04 ฉันหาคุณสมบัตินี้ไม่พบ
มีวิธีง่าย ๆ ที่จะเอามันกลับมาหรือไม่?
นี่เป็นรุ่นปัจจุบัน:
$ gnome-terminal --version
GNOME Terminal 3.14.2
ใน Ubuntu 14.10 ถ้าฉันเปิด Terminal Tab หลายอันฉันสามารถคลิกขวาที่แท็บ Terminal แล้วเปลี่ยนชื่อได้ ใน Ubuntu 15.04 ฉันหาคุณสมบัตินี้ไม่พบ
มีวิธีง่าย ๆ ที่จะเอามันกลับมาหรือไม่?
นี่เป็นรุ่นปัจจุบัน:
$ gnome-terminal --version
GNOME Terminal 3.14.2
คำตอบ:
ตอบที่นี่
ฉันพูด:
user title
รหัสถูกลบออก1gnome-terminal 3.14
จาก มีเพียงวิธีเดียวในการตั้งชื่อโดยใช้ลำดับการยกเว้น - เช่นbash
:PROMPT_COMMAND='echo -ne "\033]0;YOUR TITLE GOES HERE\007"'
1: คำพังเพยดูข้อผิดพลาด 724110และคำพังเพยข้อผิดพลาด 740188
gnome-shell
เป็นวาระตั้งแต่ มันยังหายไปจากเมนูเพื่อเปิดเทอร์มินัลใหม่ในหน้าต่างหรือแท็บใหม่ (แต่คุณยังสามารถทำได้ผ่านทางลัดทำไม?! แทนที่ทุกอย่างด้วยปุ่มสมาร์ทขนาดใหญ่: คลิกและไม่ทำอะไรเลย!)
.bashrc
วิธีการแก้ปัญหาที่เสนอโดยเคอร์บี้ทำงานสำหรับฉัน:
set-title(){
ORIG=$PS1
TITLE="\e]2;$@\a"
PS1=${ORIG}${TITLE}
}
จากพรอมต์ของฉัน: $ set-title test-title
set-title "longer and "
:echo $PS1 \[\e]0; \u@\h: \w \a\]\u@\h:\w\[\033[m\]$(__git_ps1)$ \e]2;longer and \a\e]2;longer and \a\e]2;longer and \a\e]2;longer and \a\e]2;longer and \a\e]2;longer and \a\e]2;longer and \a\e]2;longer and \a\e]2;longer and \a\e]2;longer and \a\e]2;longer and \a\e]2;longer and \a\e]2;longer and \a\e]2;longer and \a\e]2;longer and \a\e]2;longer and \a\e]2;longer and \a\e]2;longer and \a\e]2;longer and \a
Control + Z
จากset-title X
นั้นfg
หยุดการทำงานต่อ
ฉันไม่อยากจะเชื่อเลยว่าพวกเขานำคุณลักษณะที่เป็นมิตรกับผู้ใช้ออกเช่นนี้
ฉันเปลี่ยนมาใช้ ROXTerm ( http://roxterm.sourceforge.net ) ซึ่งทำงานได้ดีมาก มันบรรจุใน Ubuntu:
sudo apt-get install roxterm
จากนั้นให้ไดโนเสาร์ดำเนินต่อไปในแบบของตัวเอง ;-)
ฉันได้ลอง RoxTerm ตามที่แนะนำไว้ข้างต้นด้วยผลลัพธ์ที่ดี แต่ฉันตัดสินบนเทอร์มินัล MATE ซึ่งเป็นส่วนหนึ่งของโครงการ MATE ซึ่งเป็นความต่อเนื่องของ Gnome 2 ในวันที่ 15.04:
sudo apt-get install mate-terminal
เทอร์มินัลนั้นขึ้นอยู่กับรหัสเทอร์มินัล Gnome
ความเห็น: มันยากที่จะเข้าใจความคิดของ Gnome Terminal devs มีการพูดคุยกันมากมายเกี่ยวกับ "วิธี" ในการตั้งชื่อแท็บเทอร์มินัลและวิธีที่จะทำให้ถูกต้องได้ยาก หากเป็นเช่นนั้นเหตุใดจึงทำให้ผู้ใช้ตั้งชื่อได้ยากขึ้น ไม่ฉลาดเลย
ตอนนี้ฉันตรวจสอบเรื่องนี้เพื่อส่วนที่ดีกว่าของวันและในที่สุดก็พบวิธีการตั้งชื่อนี้ มันทำผ่าน escape sequences ซึ่งเริ่มต้นด้วย \ e] 0; และลงท้ายด้วยอักขระ BEL (= \ 007 = \ a) ซึ่งแตกต่างจากที่ฉันได้กล่าวไว้ข้างต้นการสื่อสารจากเชลล์กลับไปยังแอปพลิเคชันเทอร์มินัลนั้นเป็นไปได้ จำกัด มากผ่านทางลำดับการหลบหนี (มีอีกไม่กี่)
เกี่ยวกับเรื่องนี้จากด้านบน:
PROMPT_COMMAND='echo -ne "\e]0;YOUR TITLE GOES HERE\a"'
มันสามารถทำงานได้ แต่มันก็ไม่ได้เสมอไป PROMPT_COMMAND
เป็นตัวแปรที่เนื้อหาจะถูกดำเนินการในแต่ละครั้งที่คุณส่งคำสั่งดังนั้นมันจึงส่งลำดับการหลบหนีนี้ อย่างไรก็ตามสิ่งนี้สามารถถูก overriden โดยลำดับ escape ในตัวแปร PS1 ซึ่งตั้งค่าพรอมต์บรรทัดคำสั่ง นี่คือเหตุผลที่ข้างต้นไม่มีผลกระทบที่นี่
จากการติดตั้ง Ubuntu ที่เก่ากว่าฉันคว้าสิ่งนี้ซึ่งตั้งค่าพรอมต์คำสั่ง (ส่วนที่ถูกต้องหลังจากนั้น]
) และยังส่งลำดับหนีที่ต้องการ (ส่วนซ้ายขึ้นไปและรวมถึง]
):
PS1="\[\e]0;\u@\h: \w\a\]\u@\h:\w\$ "
สิ่งนี้น่าจะมีประสิทธิภาพดีกว่าเพราะไม่จำเป็นต้องตีความ$PROMPT_COMMAND
แต่ละครั้ง นอกจากนี้ยังมีตัวเลือกอื่น ๆ อีกมากมายเพราะทุบตีมีลำดับหนีเพิ่มเติมได้ที่นี่เช่น\u
ชื่อผู้ใช้ในปัจจุบัน\W
สำหรับชื่อไดเรกทอรีปัจจุบันหรือสำหรับเส้นทางทั้งหมดของไดเรกทอรีการทำงานปัจจุบันทางเลือกที่ถูกตัดไปเพียงไม่กี่ครั้งสุดท้ายโดยในจำนวน\w
$PROMPT_DIRTRIM
ดูบทPROMPTING
ในหน้า Bash man ยังรับทราบว่าลำดับหนีได้นอกจากนี้ยังถูกล้อมรอบด้วย\[
และ\]
ที่นี่
หากต้องการตั้งชื่อแบบตายตัวสิ่งนี้จะทำงาน:
PS1="\[\e]0;YOUR TITLE GOES HERE\a\]\u@\h:\w\$ "
สนุก!
ในระหว่างการสอบสวนของฉันฉันพยายามทำความเข้าใจกับซอร์สโค้ด gnome-terminal ซึ่งนำไปสู่ซอร์สโค้ด vte และมีการสนับสนุนการตั้งค่าชื่อและลำดับการอ่าน escape ถือว่ามีความเสี่ยงด้านความปลอดภัย: ดูที่นี่ (กรณีที่ 20, กรณีที่ 21) และที่นี่ ("การรายงานชื่อหน้าต่าง")
PS1
สำหรับการใช้งานอื่น ๆ เช่นการตั้งค่าพรอมต์คำสั่งที่กำหนดเอง ฉันเพิ่งลองเพิ่มลำดับการหลีกของคุณไปยังPS1
เนื้อหาที่มีอยู่และดูเหมือนว่าจะใช้งานได้ เช่นนี้: PS1+="\[\e]0;YOUR TITLE GOES HERE\a\]\u@\h:\w\$ "
การตั้งค่า $ PROMPT_COMMAND ตามที่แสดงด้านบนมีผลเป็นศูนย์ที่นี่ ไม่แปลกใจเลยเพราะ Bash ทำงานภายในเทอร์มินัลและกระบวนการพาเรนต์ (ที่นี่: gnome-terminal) ไม่สามารถอ่านสภาพแวดล้อมของเด็ก ๆ บนระบบปฏิบัติการยูนิกซ์ ใช้สิ่งที่ง่ายกว่าเช่น
PROMPT_COMMAND='echo bla'
ดำเนินการecho blaไม่มีอะไรเกิดขึ้น
แก้ไข: ต้องห่อในลำดับหนีดูคำตอบอื่น ๆ ของฉัน แม้ว่าการอ่านสภาพแวดล้อมของเด็กเป็นไปไม่ได้ แต่การสื่อสารบางอย่างกลับไปที่ผู้ปกครองคือผ่านลำดับเหล่านี้
ใน Gnome bug 740188 พวกเขาพูดถึงการกำหนดฟังก์ชั่น title () ใน. bashrc เปิดแท็บที่แตกต่างกันสำหรับแต่ละแท็บหรือไม่ แฮ็คที่น่าเกลียดอย่างรุนแรงไปข้างหน้าถ้าเป็นไปได้เลย!
แม้แต่คำอธิบายอื่น ๆ เกี่ยวกับ Stackexchange พูดคุยเกี่ยวกับการตั้งค่า $ PS1 (และรับ upvoted) ขออภัยไม่ไม่ใช่ชื่อนั่นคือพรอมต์คำสั่ง
กล่าวโดยย่อ: พวกเขาทำสิ่งสกปรกเกินกว่าจะซ่อมเพื่อประหยัดพื้นที่เล็กน้อยในกล่องโต้ตอบการตั้งค่า พระเจ้าช่วย
ตอนนี้โอกาสเดียวที่จะได้รับการตัดสินใจจากผู้พัฒนากลับคืนมาคือก่อให้เกิด shitstorm ที่รุนแรงมิฉะนั้นพวกเขาก็เพียงปิดรายงานข้อผิดพลาดของคุณในไม่กี่วินาที (ลองหลายครั้งหลายครั้ง) เราจะสร้าง shitstorm นี้ได้อย่างไร