Tôi muốn đặt tiêu đề thiết bị đầu cuối thành user@host
để tôi có thể dễ dàng biết tôi đang kết nối với máy nào từ tiêu đề cửa sổ. Có cách nào để làm điều này từ SSH hoặc từ Gnome Terminal không?
Tôi muốn đặt tiêu đề thiết bị đầu cuối thành user@host
để tôi có thể dễ dàng biết tôi đang kết nối với máy nào từ tiêu đề cửa sổ. Có cách nào để làm điều này từ SSH hoặc từ Gnome Terminal không?
Câu trả lời:
Vâng. Đây là một ví dụ cho bash sử dụng PS1 nên không liên quan:
Cụ thể, trình tự thoát \[\e]0; __SOME_STUFF_HERE__ \a\]
được quan tâm. Tôi đã chỉnh sửa nó để được đặt trong một biến riêng biệt để rõ ràng hơn.
# 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
Cũng lưu ý rằng có thể có nhiều cách để đặt tiêu đề của xterm, tùy thuộc vào chương trình thiết bị đầu cuối nào bạn đang sử dụng và vỏ nào. Ví dụ: nếu bạn đang sử dụng Konsole Konsole, bạn có thể ghi đè cài đặt tiêu đề bằng cách đi tới Settings
-> Configure Profiles
-> Edit Profile
-> Tabs
và cài đặt Tab title format
và Remote tab title format
cài đặt.
Ngoài ra, bạn có thể muốn kiểm tra:
\h
dấu nhắc đó chỉ khi $SSH_CLIENT
không trống.
\[\e]2;\u@\h\a
. (Cũng chỉnh sửa phản hồi của tôi với thông tin đó)
Đây là phiên bản của tập lệnh bash SSH mà tôi sử dụng để đặt tiêu đề và dấu nhắc lệnh của máy chủ từ xa mà không thực hiện bất kỳ thay đổi nào đối với máy chủ từ xa.
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"
Bạn có thể gọi nó bằng cách gọi tên máy chủ tên người dùng ./my_ssh.sh
Các công việc sau đây đối với tôi (có lẽ chỉ trên gnome-terminal):
comp@home$ cat /usr/bin/ssh
#!/bin/bash
echo -ne "\033]0;${1}\007"
ssh_bkup "$@"
Trong đó lệnh ssh_bkup chỉ là 'ssh' cơ bản với tên đã thay đổi, được gọi ngay sau khi lệnh echo thay đổi tiêu đề của thiết bị đầu cuối hiện tại.
~/bin
được ưu tiên trong con đường của tôi, vì vậy tôi đã đặt kịch bản của bạn vào ~/bin/ssh
. Hàng cuối cùng gọi rõ ràng /usr/bin/ssh
. Bằng cách này, những người dùng khác vẫn sử dụng tiêu chuẩn ssh
khi đăng nhập vào máy đó và (vì các thư mục chính của chúng tôi nằm trên máy chủ, tài khoản LDAP) Tôi có chức năng trên bất kỳ máy nào tôi đăng nhập.
đây là phiên bản bí danh
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'