Saya ingin mengatur judul terminal user@host
sehingga saya dapat dengan mudah mengetahui mesin mana yang saya hubungkan dari judul jendela. Apakah ada cara untuk melakukan ini dari SSH atau dari Terminal GNOME?
Saya ingin mengatur judul terminal user@host
sehingga saya dapat dengan mudah mengetahui mesin mana yang saya hubungkan dari judul jendela. Apakah ada cara untuk melakukan ini dari SSH atau dari Terminal GNOME?
Jawaban:
Iya nih. Berikut ini contoh untuk bash menggunakan PS1 yang seharusnya distro-agnostic:
Secara khusus, urutan pelariannya \[\e]0; __SOME_STUFF_HERE__ \a\]
menarik. Saya telah mengedit ini untuk diatur dalam variabel terpisah untuk kejelasan lebih lanjut.
# 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
Perhatikan juga bahwa ada banyak cara untuk mengatur judul xterm, tergantung pada program terminal yang Anda gunakan, dan shell mana. Misalnya, jika Anda menggunakan Konsole KDE, Anda dapat mengganti pengaturan judul dengan membuka Settings
-> Configure Profiles
-> Edit Profile
-> Tabs
dan mengatur pengaturan Tab title format
dan Remote tab title format
.
Selain itu, Anda mungkin ingin memeriksa:
\h
prompt itu hanya jika $SSH_CLIENT
tidak kosong.
\[\e]2;\u@\h\a
. (Juga diedit tanggapan saya dengan info itu)
Berikut adalah versi skrip bash SSH yang saya gunakan yang mengatur judul dan command prompt server jarak jauh tanpa membuat perubahan apa pun ke server jarak jauh.
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"
Anda dapat memintanya dengan memanggil nama host nama pengguna ./my_ssh.sh
Berikut ini berfungsi untuk saya (mungkin hanya di terminal gnome):
comp@home$ cat /usr/bin/ssh
#!/bin/bash
echo -ne "\033]0;${1}\007"
ssh_bkup "$@"
Di mana perintah ssh_bkup hanyalah dasar 'ssh' dengan nama yang diubah, yang dipanggil tepat setelah perintah echo mengubah judul terminal saat ini.
~/bin
memiliki prioritas di jalur saya, jadi saya menempatkan skrip Anda di blog saya ~/bin/ssh
. Baris terakhir secara eksplisit memanggil /usr/bin/ssh
. Dengan cara ini, pengguna lain masih menggunakan standar ssh
saat login di mesin itu, dan (karena direktori home kami ada di server, akun LDAP) saya mendapatkan fungsionalitas di mesin mana pun saya masuk.
ini adalah versi alias
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'