Yalnızca geçerli komut satırı ismini sadece komut satırını kullanarak nasıl değiştirilir

23

Şu anda yayınlanan cevaplardan hiçbiri işe yaramıyor / soruya cevap veriyor.

Komut isteminde sadece bir komut kullanarak, geçerli terminal sekmesinin başlığını nasıl değiştiririm?

Birçok yayın şunu önerdi:

echo -en "3]0;New terminal title\a"

ama hiçbir şey yapmıyor.

Mevcut cevapların hiçbiri işe yaramıyor (bazıları soruyu cevaplamıyor), dolayısıyla netlik için:

  • Başlık değiştirildikten sonra, dizini değiştirirsem bunun değişmesini istemiyorum
  • Tüm sekmelerde aynı başlığını istemiyorum. Sadece
  • komutunu çalıştırdığım sekmenin başlığını ayarlamak istiyorum
  • Her birinin farklı başlıklara sahip olmasını istiyorum

Ayrıca, terminal oturumlarımda PROMPT_COMMAND değişkeni ayarlanmadı. Bunu ayarladıysam:

PROMPT_COMMAND='echo -en "3]0;New terminal title\a"'

etkisi yok.

Doğru komut nedir?

FYI, uname -a çıktısı şöyledir:

  

Linux d136172 3.13.0-45-jenerik # 74-Ubuntu SMP Sal Jan 13 19:36:28 UTC 2015 x86_64 x86_64 x86_64 GNU / Linux

    
sordu Bohemian 16.06.2015 04:48

9 cevap

14
@Maythux'den

, bu benim gereksinimimin otomatik komut istemi terminalimdeki terminalini göz ardı etmesi için çalışıyor.

PROMPT_COMMAND='echo -en "3]0;New terminal title\a"'

Talimat

"Yeni Terminal Adı" ndaki dizeyi $("pwd") ile değiştirin:

PROMPT_COMMAND='echo -en "3]0; $("pwd") \a"'

Bu, yeni bir sekme eklediğinizde bile başlığı otomatik olarak değiştirir.

Daha iyi görünen aşağıdaki ayarları kullanıyorum , ayrıca bash programlamayı yürütebilir ve kendi ayarlarınızı yapabilirsiniz.

PROMPT_COMMAND='echo -en "3]0;$(whoami)@$(hostname)|$(pwd|cut -d "/" -f 4-100)\a"'

Bu ayarı ~/.bashrc dosyanıza ekleyin.

    
verilen cevap Kelly DC 22.08.2016 08:49
6

PS1 başlığı ayarlandığında, komutun tümünü veya PROMPT_COMMAND değerini ayarlamaya yönelik tüm girişimler başarısız olur, çünkü bu istemden sonra yazdırılır. Bu nedenle, başlıkları test ederken basit bir komut istemeyi tercih ediyorum ( PS1=$; unset PROMPT_COMMAND ).

    
verilen cevap muru 22.06.2015 02:31
3

Bunu CLI veya GUI'de yapabilirsin (gnome-terminalini kullandığınızı varsayalım, başkaları için uygulamanın adını değiştirebilirsiniz):

CLI'da Komutu çalıştırın:

gconftool-2 --set /apps/gnome-terminal/profiles/Default/title --type=string "New Terminal Name"

Not: yeni ad, yalnızca geçerli sekme için değil, terminal sekmelerinin tüm örneklerine uygulanır.

Veya GUI'den:

Menü: Terminal - & gt; Başlığı Ayarla - & gt; Yeni başlığı girin ve kaydedin.

Şimdi neden emriniz çalışmıyor?

Bu satırı .bashrc dosyasına eklemelisiniz ve doğrudan terminalinize eklemelisiniz.

gedit .bashrc

Bu satırı ekle:

PROMPT_COMMAND='echo -en "3]0;New terminal title\a"'

Ardından, bashrc dosyasını kaydedin ve kaydedin.

source .bashrc
    
verilen cevap Maythux 16.06.2015 08:28
2

PROMPT_COMMAND değerinin ayarlanması ve istemin görüntülendiği her seferinde başlık seçiminizin üzerine yazılması çok olasıdır. Bunu anlamaya çalışın ve ardından başlık komutunuzu yayınlayın:

PROMPT_COMMAND=
echo -en "3]0;New terminal title\a"
    
verilen cevap John1024 16.06.2015 05:22
2

Talimatlar

  1. .bashrc 'na settitle () ekleyin.
  2. source ~/.bashrc
  3. settitle Banana

setTitle ()

function settitle()
{
    if [ $# -eq 0 ]
        then
        eval set -- "\[email protected]\h: \w"
    fi

    case $TERM in
        xterm*) local title="\[3]0;[email protected]%pre%7\]";;
        *) local title=''
    esac
    local prompt=$(echo "$PS1" | sed -e 's/\\[\033\]0;.*\007\\]//')
    PS1="${title}${prompt}"
}
    
verilen cevap earthmeLon 16.06.2015 05:42
2

İşte 'den, özel bir çözüm, özel bir işlev oluşturmaktır (bkz. örneğin bu nasıl yapılır ) gibi

# function to set terminal title  
function set-title() {
  if [[ -z "$ORIG" ]]; then
    ORIG=$PS1
  fi
  TITLE="\[\e]2;$*\a\]"
  PS1=${ORIG}${TITLE}
}

set-title <name you want to set it to> 'ı çağırmanıza izin verir

    
verilen cevap WillC 24.02.2017 01:31
1

Bash, wmctrl, xprop, ps

kullanma

1) Uzun süren aktif bir program için:

Örneğin, bir terminalde çalışan, masaüstünden başlatılan bir program (ranger) başlatın, program başladığında bazı gecikmelerden (5 saniye) sonra başlığı bir kez değiştirin:

startranger.sh:

#!/bin/bash
/usr/local/bin/changetitle.sh 5 ranger
/usr/local/bin/ranger

changetitle.sh:

#!/bin/bash
delay=""
shift
wintitle="$*"
winid='xprop -root | grep _NET_ACTIVE_WINDOW | head -1 | awk '{print }' | sed 's/,//' | sed 's/^0x/0x0/''
/bin/bash -c "sleep $delay; wmctrl -i -r $winid -N \"$wintitle\"" &

2) Etkin bir program çalıştırmadan bir terminal oturumu çalıştırıyorsanız, terminaliniz çıkışta sona eren bir döngüdeki başlığı güncelleyin:

changetitleloop.sh 1 maintenance for server

Yukarıdakileri çalıştırmak, aşağıdakileri kullanarak cd (birden çok kez değiştirebilir) olsa bile geçerli terminalin başlığını her 1 saniyede bir güncelleyecektir:

changetitleloop.sh

#!/bin/bash
interval=""
shift
wintitle="$*"
termpid="$(ps -p $$ -o ppid= | sed -e 's/^[ \t]*//')"
winid='xprop -root | grep _NET_ACTIVE_WINDOW | head -1 | awk '{print }' | sed 's/,//' | sed 's/^0x/0x0/''
/bin/bash -c "ss=$$; echo $ss > /tmp/term-$termpid.pid; while x=$(wmctrl -i -r $winid -N \"$wintitle\"); ret=$?; sleep $interval; owner=$(cat /tmp/term-$termpid.pid); [ $ret -eq 0 ] && [ $ss -eq $owner ]; do continue; done;" &
    
verilen cevap Der Bosst 16.04.2018 17:17
1

Muru yanıtına göre

  

PS1 başlığı ayarlar, herhangi bir komut kullanarak başlığı ayarlama girişimi veya PROMPT_COMMAND başarısız olur, komut istemi hepsinden sonra yazdırılır.

Bu, Elementary S.O’mda çalıştı:

PS1='\u:\W$ '
PROMPT_COMMAND='echo -en "3]0;New terminal title\a"'

Bunu her yeni sekmede uygularım:

Ve önceki görüntünün gösterdiği gibi, benzersiz bir ada sahip birkaç sekmem var.

16.04.1-Ubuntu

    
verilen cevap JRichardsz 15.01.2018 15:32
0

Bu konu biraz eski olabilir, ama işte benim için çalışan bir çözüm:

İşte

  

$ HOME / .bashrc dosyanızı düzenleyin ve aşağıdaki işlevi ekleyin:
  set-başlık () {
    ORIG = $ PS1
    BAŞLIK="\ e] 2; $ @ \ a"
    PS1 = $ {ORIG} $ {BAŞLIĞI}
  }

     

Artık terminalinizin adını ne zaman ayarlamak isterseniz, sadece girin   gibi bir şey:
      set-title "harika terminal başlığım"

    
verilen cevap Sjoerd 17.05.2018 10:49

Etiketlerdeki diğer soruları oku