Bağlandığım ana bilgisayar için Gnome Terminal'in başlığını “user @ host” olarak ayarlamak mümkün mü?


22

Terminal başlığını ayarlamak istiyorum, user@hostböylece pencere başlığından hangi makineye bağlı olduğumu kolayca söyleyebilirim. Bunu SSH'den veya GNOME Terminalinden yapmanın bir yolu var mı?

Yanıtlar:


20

Evet. İşte dikkat dağıtıcı olması gereken PS1'i kullanan bash için bir örnek:

Spesifik olarak, kaçış dizisi \[\e]0; __SOME_STUFF_HERE__ \a\]ilgi çekicidir. Daha fazla netlik için ayrı bir değişkende ayarlanması için bunu düzenledim.

# uncomment for a colored prompt, if the terminal has the capability; turned
# off by default to not distract the user: the focus in a terminal window
# should be on the output of commands, not on the prompt
force_color_prompt=yes

if [ -n "$force_color_prompt" ]; then
    if [ -x /usr/bin/tput ] && tput setaf 1 >&/dev/null; then
        # We have color support; assume it's compliant with Ecma-48
        # (ISO/IEC-6429). (Lack of such support is extremely rare, and such
        # a case would tend to support setf rather than setaf.)
        color_prompt=yes
    else
        color_prompt=
    fi
fi

TITLEBAR='\[\e]0;\u@\h\a\]'
# Same thing.. but with octal ASCII escape chars
#TITLEBAR='\[\033]2;\u@\h\007\]'

if [ "$color_prompt" = yes ]; then
    PS1="${TITLEBAR}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\W\[\033[00m\]\$ "
else
    PS1="${TITLEBAR}\u@\h:\W\$ "
fi
unset color_prompt force_color_prompt

Ayrıca, kullandığınız terminal programına ve hangi mermiye bağlı olduğunuza bağlı olarak bir xterm unvanını ayarlamanın birçok yolu olabileceğini unutmayın. Örneğin, KDE'nin Konsole'sini kullanıyorsanız, başlık ayarını Settings-> Configure Profiles-> Edit Profile-> 'e Tabsgidip Tab title formatve Remote tab title formatayarları ayarlayarak geçersiz kılabilirsiniz .

Konsole başlık çubuğu ayarları iletişim kutusu

Ayrıca, kontrol etmek isteyebilirsiniz:


Peki bunu, bağlandığım tüm sunucularda veya kendi yerel makinemde ayarlamam gerekir mi?
Naftuli Kay

@TKKocheran: Bunu kabuk çalıştırdığınız her makinede yapmanız gerekiyor. Yalnızca uzak girişler için yapmak istiyorsanız, \hbu istemi yalnızca $SSH_CLIENTboş değilse kullanın .
Gilles 'SO- kötülük'

@TK: Evet, bunu bağlandığınız tüm sunucularda ayarlamanız gerekecek. PS1 değişkeni, terminal programınıza değil (örn: gnome-terminaline) , mevcut kabuğunuzda yereldir (uzaktaki bir ana bilgisayarda bile ) .
TrinitronX

Bunun Debian'ın çalışmadığı sunucularda farklı şekilde uygulanacağını varsayıyorum. Fedora / Red Hat türevlerini çalıştıran sunucuların çalışmasını sağlamak için cevabınızı düzenleyebilir misiniz?
Naftuli Kay

1
@TK: Başlık çubuğu değil işi yaparsa, cepheye bu diziyi eklemeyi deneyin ... doğru orada kuruldu Yani ... Bir Ubuntu 11.04 makineden çeşitli ana bilgisayarlara bu kullanarak SSH test: \[\e]2;\u@\h\a. (Ayrıca, bu
bilgiyle

3

Uzak sunucuda herhangi bir değişiklik yapmadan uzak sunucunun başlığını ve komut istemini ayarlayan kullandığım SSH bash komut dosyasının bir sürümü.

my_ssh.sh:

#!/bin/bash
SETTP='MY_PROMPT="$HOSTNAME:$PWD\$ "'
SETTP="$SETTP;"'MY_TITLE="\[\e]0;$HOSTNAME:$PWD\a\]"'
SETTP="$SETTP;"'PS1="$MY_TITLE$MY_PROMPT"'
ssh -t $1@$2 "export PROMPT_COMMAND='eval '\\''$SETTP'\\'; bash --login"

./My_ssh.sh kullanici adi hostname'i çağırarak çağırabilirsiniz.


Ben ssh giriş yaptıktan sonra başka bir bash oturumu başlatırken bu işe yarıyor (örneğin ekran kullanırken)
Laurens Rietveld

1

Aşağıdakiler benim için çalışıyor (muhtemelen sadece gnome-terminalinde):

comp@home$ cat /usr/bin/ssh
#!/bin/bash    
echo -ne "\033]0;${1}\007"
ssh_bkup "$@"

Ssh_bkup komutunun sadece temel 'ssh' olduğu, echo komutunun o anki terminalin başlığını değiştirmesinden hemen sonra çağrılan değiştirilmiş bir isimle.


diğer ad çözümleri standart olmayan bir şey için komutları yeniden adlandırmaktan daha iyi olmaz mıydı?
X Tian

Bu benim için iyi çalışıyor, aynı zamanda cüce-terminal. ~/binbenim yolumda önceliği var, bu yüzden senaryonuzu benim yerime koydum ~/bin/ssh. Son satır açıkça için çağırır /usr/bin/ssh. Bu yolla, diğer kullanıcılar sshbu makineye giriş yaptıklarında hala standardı kullanırlar ve (giriş dizinlerimiz sunucuda olduğu için, LDAP hesapları) hangi makinede oturum açtığımın işlevselliğini elde ederim.
Gauthier

İyi çağrı, @Gauthier. Daha iyi bir çözüm gibi görünüyor.
Yuriy Mankovskiy

0

bu takma ad sürümüdür

SETTP='MY_PROMPT="$HOSTNAME:$PWD\$ "'
SETTP="$SETTP;"'MY_TITLE="\[\e]0;$HOSTNAME:$PWD\a\]"'
SETTP="$SETTP;"'PS1="$MY_TITLE$MY_PROMPT"'
SETPC="export PROMPT_COMMAND='eval '\\''$SETTP'\\'; bash --login"

alias myssh='function _myssh(){ ssh -t $1@$2 $SETPC; };_myssh'
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.