3

Я использую Windows и Putty для удаленного подключения (ssh) к некоторым серверам Linux. Я установил свой hardstatus в своем файле .screenrc, чтобы я мог отслеживать некоторую полезную информацию. Но это работает только когда я на экране.

Я хотел бы использовать то же самое за пределами экрана. Итак, в основном, я хочу иметь строку состояния (аналогично строке состояния экрана), когда я нахожусь на моей оболочке bash за пределами экрана.

Это вообще возможно? Как мне это сделать? Если нет, есть ли альтернатива?

PS: Моя цель - показать текущее время и крайний срок для возобновления моего доступа к серверу в строке состояния.

2 ответа2

2

Классный вопрос. Насколько мне известно, этого нельзя сделать только с Башом, как сказал Дэвид Постил. Но, как он предположил, вы можете (ab) использовать подсказку для этой цели. Вот пример использования escape-последовательностей ANSI для достижения эффекта строки состояния :-)

PS1='\[\e[s\e[1;1H\e[41;1m\e[K\e[33;1m\][ *** \t *** ]\[\e[0m\e[u\]\w> '

Этот просто отображает текущее время в «строке состояния», а также отображает обычное приглашение. Пара заметок:

  • \e[ вводит большинство специальных команд
  • \e[s сохраняет текущую позицию курсора
  • \e[1;1H позиционирует курсор в строке 1, столбце 1
  • \e[...m изменить (передний и задний) цвета
  • \e[K очищает до конца строки
  • \e[u восстанавливает позицию курсора
  • \[ и \] разделяют непечатаемые символы в приглашении; они позволяют Bash вычислить точную длину подсказки. В принципе, вы могли бы обойтись без них, но тогда подсказка не будет корректно обновляться в многострочной команде (но недостатки видны ниже)

Я не предлагаю вам серьезно относиться к этому решению. У него есть серьезные недостатки:

  1. трудно читать и хрупко
  2. строка состояния обновляется только при обновлении приглашения; т.е. когда управление возвращается в оболочку (как я прочитал ваш вопрос, очень большой недостаток)
  3. многострочные команды не отображаются должным образом (курсор перезапускается на первой строке)

Но, тем не менее, я надеюсь, вам понравится! :)

0

cyberninja216:

PS1 = '[\e [s\e [1; 1H\e [41; 1m\e [K\e [33; 1m] [backtickhere curl ipinfo.io 2> /dev /null | grep -m 1' " ip "'backtickhere] [\e [0m\e [u]\w>'

обратите внимание на галочки, чтобы проанализировать вывод команды. "использовать для живого корма"

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .