เปลี่ยนชื่อ Terminal ใน Mac OS X


39

ฉันจะเปลี่ยนชื่อหน้าต่างเทอร์มินัลใน Mac OS X ได้อย่างไร? ฉันได้เห็นคำถามนี้และสิ่งมหัศจรรย์นี้แต่คิดว่ามันเป็นเพียงคำสั่ง Mac OS X ที่เรียบง่าย


ควรทราบว่าไม่มีอะไรที่เฉพาะเจาะจงเกี่ยวกับ OS X - คำตอบจะใช้ได้กับเทอร์มินัลใด ๆ
Andrew Aylett

มันเฉพาะ Bash หรือไม่?
Dan Rosenstark

@Andrew Aylett ดังนั้นสคริปต์ที่ฉันใส่ในคำตอบของฉัน (ด้านล่าง) จะทำงานกับ distros linux ด้วยหรือไม่
Dan Rosenstark

ใช่มันควรทำงานได้ทุกที่ (กับเชลล์ที่ได้รับ sh) ซึ่งใช้เทอร์มินัล unix-y
แอนดรู Aylett

คำตอบ:


48

นี้บทความจะบอกคุณว่า

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

title='My first title'
echo -n -e "\033]0;$title\007"

ในตัวอย่างข้างต้นสิ่งที่ชื่อตัวแปรถูกตั้งค่าเป็นในขณะที่กลายเป็นชื่อของอาคาร แน่นอนคุณสามารถมีชื่อในสตริงที่จะสะท้อนเช่น:

echo -n -e "\033]0;My first title\007"

แต่วิธีแรกทำให้ง่ายขึ้นเล็กน้อยในการใช้และ / หรือขยายในภายหลัง


ยอดเยี่ยม คุณสามารถรวมสคริปต์ตัวอย่าง (เช่นนี้echo -n -e "\033]0;$1\007") ในคำตอบของคุณเพื่อให้ฉันสามารถทำเครื่องหมายคำตอบที่ดีที่สุดได้ไหม
Dan Rosenstark

2
printfอาจเชื่อถือได้มากกว่า: printf "\033]0;%s\007" "$title_variable"(ตัวเลือกและพฤติกรรมต่าง ๆ ของechoนั้นไม่เหมือนกันในทุกระบบเชลล์หรือแม้แต่ตัวเลือกเชลล์) นอกจากนี้การกำหนดตัวแปรในbashไม่ควรมีช่องว่างรอบเครื่องหมายเท่ากับ
Chris Johnsen

1
ฉันใช้ $ * และในฟังก์ชั่นดังนั้นฉันจึงไม่จำเป็นต้องอ้างอิงสตริงชื่อของฉัน
BeepDog

มีวิธีการเปลี่ยนชื่อจากภายในโปรแกรม C หรือไม่? โปรแกรมที่ฉันกำลังคิดจะใช้งานอนิเมชั่นอยู่บนพื้นฐานของ ncurses.h ดังนั้นฉันจึงไม่แน่ใจว่าจะสะท้อนไปยังเทอร์มินัลได้อย่างไร :-(
phs

ตกลง: เพียงแค่ fprintf (stdout, .. ) ใช้งานได้ ฉันควรลองก่อนถาม
phs

34

การเพิ่มสิ่งต่อไปนี้ในของคุณ~/.profileจะได้รับผลเหมือนกัน:

# function for setting terminal titles in OSX
function title {
  printf "\033]0;%s\007" "$1"
}

จากนั้นปุ่มลัดtitle 'et voila'จะจัดเรียงแท็บทั้งหมดของคุณออก


ทำไมจึงเป็นปัญหาหากคุณมีฟังก์ชั่นมากมายใน. profile? มีข้อ จำกัด หรือไม่?
tgkprog

1
IDK ทำไม แต่ต้องแก้ไข. bash_profile แทน.
profile

2
หรือ: alias title="printf '\033]0;%s\007'".
kenorb

export alias title="printf '\033]0;%s\007'"
Mwayi

sudo nano /etc/bashrcนอกจากนี้คุณยังสามารถเพิ่มได้โดยใช้ สิ่งนี้ควรเรียกใช้สำหรับผู้ใช้ทั้งหมด รีสตาร์ทเซสชันเทอร์มินัลหรือทำsource /etc/bashrcเพื่อใช้การเปลี่ยนแปลงของคุณ
Eugene Kulabuhov

8

รีมิกซ์ของคำตอบของ Dan MgG:

echo -n -e "\033]0;$1\007"

เก็บไว้ในไฟล์ชื่อ / usr / bin / title (ใช้ sudo!) และ chmod เป็น + x จากนั้นคุณสามารถพิมพ์ได้ทุกที่

title 'Trying to Figure This GIT Thing Out'

และคุณจะได้รับชื่อเล็กน้อยที่ดี

(ไวยากรณ์อาจแตกต่างกันไปหากคุณไม่ได้ใช้ OSX ถ้าฉันเข้าใจถูกต้อง)


ถ้าคุณอยู่ในหนึ่งในบรรดารุ่นใหม่ของ OS X คุณอาจจะทำ/usr/local/bin/titleแทน
Samy Bencherif

2

เป็นอีกทางเลือกหนึ่งสำหรับโซลูชันบรรทัดคำสั่ง sh-based แอป OS X Terminal มีการตั้งค่าให้เปลี่ยนชื่อดังนี้: ภายใต้เมนู Terminal-> shell มีตัวเลือก "แก้ไขชื่อ" ให้เลือกและคุณสามารถเปลี่ยนชื่อได้ อย่างง่ายดาย


1

บน OS X, ~/Library/Preferences/com.apple.Terminal.plistการตั้งค่าขั้วจะถูกเก็บไว้ใน

ชื่อของอาคารจะถูกเก็บไว้ในการWindowTitleตั้งค่า


0

ขอบคุณสำหรับสิ่งนี้. ฉันเพิ่งเพิ่มฟังก์ชั่นไปยัง. bashrc ของฉัน:

    function stit() {
    echo -n -e "\033]0;$1\007"
}

ในใจ "stit" = ทางลัดที่สะดวกสำหรับ "set_title" และตอนนี้เมื่อฉันต้องการตั้งชื่อหน้าต่างของฉันในทันทีฉันพิมพ์:

stit "[new window title]"

0

คำตอบที่ระบุว่าเป็นคำตอบที่ดีที่สุดใช้งานได้ดี ... นี่คือสิ่งที่ฉันทำ ...

tell application "Terminal"
    activate
    do script "echo -n -e \"\\033]0;WorkerTab1\\007\"; cd $HOME/folder1"
end tell

สิ่งนี้จะตั้งชื่อของแท็บใหม่เป็น WorkerTab1 จากนั้นทำคำสั่งอื่น ๆ เช่น "cd" เป็นต้น

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