Могу ли я изменить свой фоновый терминал в зависимости от имени хоста?
Я хотел бы, чтобы мой цвет фона терминала менялся в зависимости от имени хоста. Мое объяснение этому заключается в основном в том, чтобы иметь и дополнительный способ напомнить себе, на каком сервере я работаю, чтобы я не делал глупостей.
Можно ли как-нибудь использовать стандартный фон баклажанов, если я нахожусь на локальном компьютере, а затем изменить красный, если я использую ssh на производственном веб-сервере или других хостах, которые я могу указать?
4 ответа
Вы можете использовать опцию localshmand в ssh/config для запуска команды всякий раз, когда используется псевдоним. я использую
host hostname
user myusername
localcommand xtermcontrol --bg '#abc'
Это зависит от xtermcontrol и вашего термина xterm. Предположительно есть другие приложения для других условий.
Единственная проблема с этим подходом состоит в том, что это происходит, когда вы вызываете ssh. Там нет ничего, чтобы отменить изменение цвета. Я сделал это, обернув функцию вокруг ssh, но у этого тоже есть свои недостатки.
function ssh() {
FG=$(xtermcontrol --get-fg)
BG=$(xtermcontrol --get-bg)
$(which ssh) "$@"
xtermcontrol --fg="$FG"
xtermcontrol --bg="$BG"
}
Не похоже, что в gnome-terminal
добавить новую вкладку в существующее окно из командной строки. Но есть несколько вариантов, чтобы выполнить то, что вы хотите.
По профилям команд
Создать новый gnome-terminal
профиль для каждого хоста, в который вы войдете в SSH. Если у вас есть только несколько хостов, к которым вы регулярно подключаетесь, это может быть самым простым. Каждый профиль может иметь разные заголовок, цвет переднего плана, цвет фона, пользовательские команды и другие параметры. Тогда вы можете использовать File -> Open Tab
открыть новую вкладку с выбранным профилем.
Повторно используемый профиль
Создать новый gnome-terminal
профиль, который будет использоваться для открытия нового окна каждый раз, когда вы хотите подключиться к другому хосту SSH (на основе этого ответа AskUbuntu, на который указал Stefano). Это будет хорошо работать, если вы часто подключаетесь к разным хостам. Это не позволит вам различать разные gnome-terminal
окна, в которых вы подключены к разным хостам исключительно в цветах фона / переднего плана, но у вас будет другой заголовок для каждого окна.
- Создать новый
gnome-terminal
профиль (File -> New Profile
) на основеDefault
профиль и назовите его "RemoteHost" (обратите внимание, в "RemoteHost" нет пробелов, чтобы упростить команды). - Под
Title and Command
вкладка, изменить:Initial title:
на "Удаленный хост"When terminal commands set their own titles:
вReplace initial title
- Под
Colors
вкладка, изменить:- Uncheck
Use colors from system theme
Build-in schemes:
вCustom
Text color:
а такжеBackground color:
в цвета по вашему выбору. Имейте в виду, что некоторые команды (например,ls
) используйте цвета для их вывода, и вы не хотите выбирать цвета, которые затруднят чтение выходных данных.
- Uncheck
- Нажми на
Close
кнопка, чтобы сохранить ваш новый профиль. - Теперь вы можете открыть новый
gnome-terminal
окно для каждого удаленного хоста SSH с помощью командыgnome-terminal --window-with-profile=RemoteHost -t "Some Remote SSH Host" -x ssh user@somehost
,-t
Опция устанавливаетgnome-terminal
заголовок окна и-x
опция выполняет остальную часть командной строки в терминале. Вы могли бы даже сделатьalias
сократить общее количество нажатий клавиш.
Командная строка
Я нашел эту запись в блоге со следующим скриптом, который использует xdotool
а также wmctrl
команды (они не были установлены по умолчанию в Ubuntu, поэтому вам может понадобиться установить их в первую очередь), чтобы использовать gnome-terminal
Ctrl + Shift + t сочетание клавиш, чтобы открыть новую вкладку в текущем gnome-terminal
окно. Его можно изменить, чтобы открыть новую вкладку с определенным профилем и выполнить некоторую команду для вас.
#!/bin/bash
# Path: /usr/local/bin/gnome-terminal
if [ "x$*" != "x" ]; then
/usr/bin/gnome-terminal "$@"
else
pgrep -u "$USER" gnome-terminal | grep -qv "$$"
if [ "$?" == "0" ]; then
WID=`xdotool search --class "gnome-terminal" | head -1`
xdotool windowfocus $WID
xdotool key ctrl+shift+t
wmctrl -i -a $WID
else
/usr/bin/gnome-terminal
fi
fi
Другой
Вы можете проявить творческий подход и попробовать другие вещи.
Этот ответ SuperUser в основном использует немного "сценарий-фу" акробатов для создания временного gnome-terminal
профиль, который используется для открытия нового окна. Он может быть изменен для вашего использования.
Возможно, вы могли бы использовать эти вопросы и ответы StackOverflow и другие акробаты "script-fu" для динамического изменения gnome-terminal
название всякий раз, когда вы SSH к удаленному хосту. Это не будет так заметно, как изменение цвета фона / переднего плана, но будет лучше, чем стандарт Terminal
название все время.
Это будет работать в Gnome, ЕСЛИ вы готовы использовать новое окно gnome-терминала для каждой сессии ssh.
Создайте новый профиль (с другим цветом фона) под названием "Удаленный"
Вставьте следующее в
.bash_aliases
, или же.bashrc
### add to .bash_aliases, for differentiating between local and remote hosts sshhelper() { gnome-terminal --window-with-profile=Remote -x bash -c "ssh $1"; } alias sshc=sshhelper
Сейчас sshc remote-machine
открывает новый сеанс gnome-терминала с профилем "Remote". это будет отличать локальные и удаленные профили.
Чтобы разместить несколько профилей / хостов, создайте несколько профилей и разместите что-то вроде этого в .bash_aliases
вместо:
### add to .bash_aliases, for differentiating between multiple remote hosts
sshhelper() {
HOST=`echo $1 | cut -d'@' -f2`
case $HOST in
Production ) PROFILE="Red" ;;
Test ) PROFILE="Green" ;;
# ... if you have more cases ...
*) PROFILE="Default" ;;
esac
gnome-terminal --window-with-profile=$PROFILE -x bash -c "ssh $1";
}
# alias ssh=sshhelper # this will "override" the ssh command, but may break other stuff!
alias sshc=sshhelper
Сейчас sshc Production
откроет новое окно сеанса, используя "красный" профиль, sshc Test
откроет новое окно сеанса с использованием "зеленого" профиля, а другие хосты будут использовать профиль "по умолчанию".
Сбор всей информации со стековых сайтов *** - самое простое решение, которое я нашел для терминала mint mate + mate (так же, как для gnome).
- В терминале сопряжения определите второй профиль с другим фоном.
- Проверьте, работают ли клавиши по умолчанию. Alt + PageDown / Alt + PageUp должны изменить профиль, а также фон.
sudo apt get install xdotool
Теперь вы можете изменить / etc / ssh / ssh_config, чтобы он мог изменять профиль после каждой сессии ssh:
Host *
PermitLocalCommand yes
LocalCommand xdotool key Alt+Page_Down
Теперь, после того как каждое ssh-соединение установлено в терминале, профиль будет изменен, и вы больше никогда не будете помещать нежелательное обновление sql в производственную базу данных :)
Однако нет простого решения вернуться к профилю по умолчанию после закрытия ssh-соединения. Но это выглядит достаточно для меня, и я не стал искать дополнительную информацию.