Ubah Judul Terminal di Mac OS X

39

Bagaimana saya bisa mengubah judul jendela Terminal secara sewenang-wenang di Mac OS X? Saya telah melihat pertanyaan ini dan hal yang ajaib ini , tetapi saya pikir itu hanya perintah Mac OS X sederhana.

Dan Rosenstark
sumber
Harus dicatat bahwa tidak ada yang spesifik OS X tentang ini - jawabannya akan bekerja pada hampir semua terminal.
Andrew Aylett
Apakah itu khusus untuk Bash?
Dan Rosenstark
@Andrew Aylett, jadi skrip yang saya masukkan dalam jawaban saya (di bawah) akan bekerja pada distro linux juga?
Dan Rosenstark
Ya, itu harus bekerja di mana saja (dengan shell yang diturunkan dari sh) yang menggunakan terminal unix-y.
Andrew Aylett

Jawaban:

48

Artikel ini memberi tahu Anda caranya.

Pada dasarnya, Anda menggunakan urutan karakter yang digema ke layar untuk memberi tahu terminal tentang judul apa yang harus ditampilkan.

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

Dalam contoh di atas, apa pun judul variabel diatur ke saat menjadi judul terminal. Tentu saja, Anda bisa memiliki judul dalam string untuk digaungkan seperti:

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

Tetapi cara pertama membuatnya sedikit lebih mudah untuk digunakan dan / atau diperpanjang kemudian.

Dan McGrath
sumber
Luar biasa. Bisakah Anda memasukkan contoh skrip (seperti ini? echo -n -e "\033]0;$1\007") Dalam jawaban Anda sehingga saya dapat menandai jawaban terbaiknya?
Dan Rosenstark
2
printf mungkin lebih dapat diandalkan: printf "\033]0;%s\007" "$title_variable"(berbagai opsi dan perilaku gema tidak sama di semua sistem, cangkang, atau bahkan opsi cangkang) Juga, penugasan variabel dalam bash tidak boleh memiliki ruang di sekitar tanda sama dengan.
Chris Johnsen
1
Saya menggunakan $ * dan dalam suatu fungsi, jadi saya tidak perlu mengutip string judul saya.
BeepDog
Apakah ada cara untuk mengubah judul dari dalam program C? Program yang sedang saya pikirkan menjalankan animasi berdasarkan ncurses.h jadi saya tidak yakin bagaimana cara menggema ke terminal :-(
phs
OK: Hanya fprintf (stdout, ..) yang berfungsi. Saya harus mencoba sebelum bertanya.
phs
34

Menambahkan hal berikut ke Anda ~/.profileakan mencapai efek yang sama:

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

Dan kemudian quick title 'et voila'akan memilah semua tab Anda.

Techpeace
sumber
mengapa ini menjadi masalah jika Anda memiliki banyak fungsi di. profil? apakah ada batasannya?
tgkprog
1
IDK mengapa, tetapi harus mengedit .bash_profile daripada .profile
Nakilon
2
Atau: alias title="printf '\033]0;%s\007'".
kenorb
export alias title="printf '\033]0;%s\007'"
Mwayi
Anda juga dapat menambahkannya menggunakan sudo nano /etc/bashrc. Ini harus dijalankan untuk semua pengguna. Mulai ulang sesi terminal atau lakukan source /etc/bashrcuntuk menerapkan perubahan Anda.
Eugene Kulabuhov
8

Remix dari jawaban Dan MgG:

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

Simpan dalam file bernama / usr / bin / title (menggunakan sudo!) Dan chmod ke + x. Lalu dari mana saja Anda bisa mengetik

title 'Trying to Figure This GIT Thing Out'

dan Anda mendapatkan gelar kecil yang menyenangkan.

(Sintaks dapat bervariasi jika Anda tidak menggunakan OSX, jika saya mengerti dengan benar)

Dan Rosenstark
sumber
Jika Anda menggunakan salah satu versi OS X yang lebih baru, Anda dapat melakukannya /usr/local/bin/title.
Samy Bencherif
2

Sebagai alternatif dari solusi baris perintah berbasis sh, aplikasi OS X Terminal memiliki preferensi untuk mengubah judul sebagai berikut: Di bawah menu Terminal-> shell ada pilihan "edit judul", pilih itu dan Anda dapat mengubah judul dengan mudah.

pengguna572813
sumber
1

Pada OS X, preferensi terminal disimpan di ~/Library/Preferences/com.apple.Terminal.plist.

Judul terminal disimpan dalam WindowTitlepreferensi.

J.Money
sumber
0

Terima kasih untuk ini. Saya baru saja menambahkan fungsi ke .bashrc saya:

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

Dalam pikiran saya "stit" = jalan pintas yang mudah untuk "set_title". Dan sekarang ketika saya ingin mengatur judul windows saya dengan cepat, saya mengetik:

stit "[new window title]"
signetmac
sumber
0

Balasan yang ditandai sebagai Jawaban terbaik berfungsi dengan baik ... inilah yang saya lakukan ...

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

ini akan mengatur nama tab baru ke WorkerTab1 dan kemudian melakukan perintah lain seperti "cd", dll.

Bates
sumber