Подпись экрана дисплея на первой строке терминала

ssh example.com somecommand не читает Ваш ~/.profile; somecommand выполняется непосредственно ssh демоном. Когда Вы не указываете команду, ssh демон вызывает Вашу оболочку входа в систему, которая читает Ваш ~/.profile. (Замена ~/.bash_profile, ~/.zprofile или ~/.login в зависимости от Вашей оболочки входа в систему.)

Существует несколько способов установить переменные среды для неинтерактивной команды, но они все требуют установки в конфигурации сервера, которая обычно является прочь по умолчанию. Принятие достаточно недавнего OpenSSH с обеих сторон:

  • Можно было отправить переменные среды от клиента к серверу с SendEnv директива в ~/.ssh/config. Определенная переменная среды должна быть включена с AcceptEnv директива в конфигурации сервера.

  • Можно установить переменные среды через ~/.ssh/environment на стороне сервера. Это должно быть включено в конфигурации сервера с PermitUserEnvironment директива.

  • Принятие Вас использует основанную на ключе аутентификацию, можно также установить переменные на источник в ~/.ssh/authorized_keys: добавить environment="FOO=bar" в начале соответствующей строки. Снова, Вам нужно PermitUserEnvironment директива в конфигурации сервера.

Если Вы не можете или не хотеть изменять конфигурацию сервера, необходимо будет записать полный путь в удаленную команду или явно получить Ваш .profile в удаленной команде.

ssh user@10.0.0.5 -Y '. ~/.profile; netbeans'
ssh user@10.0.0.5 -Y '/path/to/netbeans'

8
20.03.2017, 12:04
1 ответ

Вы удачливы, экран действительно соблюдает, сохраняют и команды resore. Таким образом с ударом это может быть сделано.

Это дает инструкции, как переместить курсор со специальными escape-последовательностями. Можно записать "Привет Мир!" к верхнему левому углу с этим:

echo -e "\033[s\033[2;0HHello World!            \n                        \033[u"

Объясненный: символ \033[s сохраняет текущую позицию курсора, которая является тем, что мы хотим терминальные размеры экрана b/c, может варьироваться, много. Затем \033[2;0 перемещает курсор в третью строку к первому символу (мы начинаем рассчитывать в верхнем левом углу и с 0). Затем прибывает текст и немного иллюстрации того, что возможно. Наконец код \033[u откладывает курсор туда, где это был wenn \033[s испускался.

Этот пример перемещает курсор во вторую строку, потому что при издании новых строк команды 2 печатаются поэтому, что является текущей третьей строкой, будет первая строка.

Можно использовать это вместе с подписью сессии, которую можно уже получить объяснением, которое Вы уже связали.

3
27.01.2020, 20:13
  • 1
    Можно использовать tput сделать это независимым от терминала способом, не нуждаясь к hardcode в тех управляющих кодах. Например: echo -n "$(tput sc)$(tput cup 0 0)----Hello, world----$(tput rc)" –  Jim Paris 09.08.2012, 19:16
  • 2
    я уверен в каждой оболочке, имеет способ испустить эти символы, но я только знаю удар :-) Спасибо за вход tput я не знал об этом. примечание –  Bananguin 10.08.2012, 09:22
  • 3
    @user1129682: Я попробовал screen $SHELL -c 'echo -n "$(tput sc)$(tput cup 0 0)${STY}$(tput rc)"' и screen $SHELL -c 'screen -X caption always "$(tput sc)$(tput cup 0 0)${STY}$(tput rc)"' но ни один не работал. Какие-либо идеи? –  l0b0 21.08.2012, 15:42
  • 4
    Зависит от того, что Вы хотите. Если Вы просто хотите заголовок от текущей сессии в Вашей экранной подписи затем, Вы были бы screen -X caption always; screen -X caption string "%t". Если бы Вы хотите текущий заголовок в левом верхнем углу, необходимо было бы изменить Ваш PS1 переменная среды к invlude tput волшебство. –  Bananguin 22.08.2012, 10:10
  • 5
    @l0b0: и при чтении этого снова, tput чашка 0 0 мог иметь двойную проблему новой строки, которая является, почему я поместил свой текст в третью строку, не первое. имейте Вас, попробовал tput чашку 2 0, или 0 2... все еще не читали на tput... –  Bananguin 01.09.2014, 01:26

Теги

Похожие вопросы