Mac OS X'te Terminal Başlığını Değiştir


39

Mac OS X'te Terminal penceresinin başlığını keyfi olarak nasıl değiştirebilirim? Bu soruyu ve bu sihirbazlık olayını gördüm , ancak bunun basit bir Mac OS X komutu olduğunu düşünüyorum.


Bununla ilgili OS X'e özgü bir şey olmadığını unutmayın - cevap hemen hemen her terminalde işe yarayacaktır.
Andrew Aylett

O zaman Bash'e özgü mü?
Dan Rosenstark

@Andrew Aylett, bu yüzden cevabımı yazdığım senaryo (aşağıda) linux dağıtımlarında da işe yarayacak mı?
Dan Rosenstark

Evet, unix-y terminallerini kullanan herhangi bir yerde (sh-türetilmiş bir kabuk ile) çalışmalıdır.
Andrew Aylett

Yanıtlar:


48

Bu makale size nasıl olduğunu anlatıyor.

Temel olarak, hangi başlığı göstermesi gerektiğini terminale bildirmek için ekrana yankılanan karakter dizilerini kullanırsınız.

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

Yukarıdaki örnekte, terminal başlığı olurken değişken başlık ne olursa olsun ayarlanır. Tabii ki, sadece dizge içinde gibi eko için başlık olabilir:

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

Ancak, ilk yöntem daha sonra kullanımı ve / veya daha da genişletilmesini biraz daha kolaylaştırır.


Mükemmel. echo -n -e "\033]0;$1\007"Cevabınıza bir örnek komut dosyası (bunun gibi? ) Ekleyebilir misiniz, böylece en iyi cevabı işaretleyebilir miyim, lütfen?
Dan Rosenstark

2
printf daha güvenilir olabilir: printf "\033]0;%s\007" "$title_variable"( yankının çeşitli seçenekleri ve davranışları tüm sistemler, kabuklar ve hatta kabuk seçenekleri arasında aynı değildir ) Ayrıca bash'daki değişken atamalarının eşittir işaretinin etrafında boşluklar olmamalıdır.
Chris Johnsen,

1
$ * Ve bir işlev içinde kullandım, bu yüzden başlık dizgimi alıntılamak zorunda kalmayacağım.
BeepDog

Başlığı bir C programının içinden değiştirmenin bir yolu var mı?
Düşündüğüm

Tamam: Sadece fprintf (stdout, ..) çalışır. Sormadan önce denemeliydim.
phs

34

Aşağıdakileri eklemek, ~/.profileaynı etkiye ulaşacaktır:

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

Ve sonra hızlı bir şekilde title 'et voila'tüm sekmelerinizi sıralar.


.profile dosyasında çok sayıda işlev varsa, neden bir sorun var? sınırı var mı
tgkprog

1
IDK neden, fakat .profile yerine .bash_profile düzenlemek zorunda kaldı
Nakilon

2
Veya: alias title="printf '\033]0;%s\007'".
kenorb

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

Ayrıca kullanarak da ekleyebilirsiniz sudo nano /etc/bashrc. Bu tüm kullanıcılar için çalışmalıdır. Terminal oturumunu yeniden başlatın veya source /etc/bashrcdeğişikliklerinizi uygulamak için yapın.
Eugene Kulabuhov

8

Dan MgG'nin cevabını Remix:

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

/ Usr / bin / title (sudo! Kullanarak) adlı bir dosyada saklayın ve + x ile chmod yapın. Sonra herhangi bir yerden sadece yazabilirsiniz

title 'Trying to Figure This GIT Thing Out'

ve çok hoş bir başlık alırsın.

(Eğer doğru anlıyorsam, OSX’te değilseniz sözdizimi değişebilir)


Daha yeni OS X sürümlerinden birindeyseniz, /usr/local/bin/titlebunun yerine bunu yapabilirsiniz .
Samy Bencherif

2

Sh-tabanlı komut satırı çözümlerine alternatif olarak, OS X Terminal uygulaması, başlığı aşağıdaki gibi değiştirmeyi tercih eder: Terminal-> kabuk menüsü altında, bir "düzenleme başlığı" seçeneği vardır, bunu seçin ve başlığı değiştirebilirsiniz kolayca.


1

OS X'te, terminal tercihleri ​​içinde saklanır ~/Library/Preferences/com.apple.Terminal.plist.

Terminalin başlığı WindowTitletercihte saklanır .


0

Bunun için teşekkürler. Ben sadece benim .bashrc bir fonksiyon ekledi:

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

Aklımda "stit" = "set_title" için uygun bir kısayol. Ve şimdi pencerelerimin başlığını anında ayarlamak istediğimde şunu yazdım:

stit "[new window title]"

0

En iyi cevap olarak işaretlenmiş cevap iyi çalışıyor ... ben de öyle yaptım ...

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

bu, yeni sekmenin adını WorkerTab1 olarak ayarlayacak ve sonra "cd", vb. gibi diğer komutları uygulayacaktır.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.