Строка состояния в оболочке Linux

3271
Alex

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

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

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

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

3
У bash нет строки состояния. Вы можете отобразить информацию, которую вы хотите в командной строке bash .... DavidPostill 9 лет назад 1

2 ответа на вопрос

2
Edward

Классный вопрос. Насколько мне известно, этого нельзя сделать только с Башом, как сказал Дэвид Постил. Но, как он предположил, вы можете (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. многострочные команды не отображаются должным образом (курсор перезапускается на первой строке)

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

Хорошо, и теперь для серьезного ответа ;-) (я обнаружил, что через несколько секунд после того, как у меня был плакат, мой оригинальный ответ. Но я все еще сохраняю старый ответ, просто для забавы.) Я думаю, вы могли бы использовать это: https: // powerline.readthedocs.org/en/latest/usage/shell-prompts.html#bash-prompt. Отказ от ответственности: я не проверял это! Edward 9 лет назад 0
0
neil

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>'

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

Не могли бы вы подробнее остановиться на этом? Toto 5 лет назад 0

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