Byobu с tmux, как использовать F-ключи

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

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

first_byte=$(dd bs=1 count=1 2>/dev/null | od -t o1 -A n | tr -dc 0-9)
if [ -z "$first_byte" ]; then
  # stuff to do if the input is empty
else
  {
    printf "\\$first_byte"
    cat
  } | {
    # stuff to do if the input is not empty
  }      
fi

ifne утилита от moreutils Joey Hess выполняет команду, если ее вход не пуст. Это обычно не устанавливается по умолчанию, но это должно быть доступно или легко основываться на большинстве вариантов Unix. Если вход пуст, ifne ничего не делает и возвращает состояние 0, который нельзя отличить от команды, работающей успешно. Если Вы хотите сделать что-то, если вход пуст, необходимо принять меры, чтобы команда не возвратилась 0, который может быть сделан при наличии возврата случая успеха различимое ошибочное состояние:

ifne sh -c 'do_stuff_with_input && exit 255'
case $? in
  0) echo empty;;
  255) echo success;;
  *) echo failure;;
esac

test -t 0 не имеет никакого отношения к этому; это тестирует, является ли стандартный вход терминалом. Это ничего не говорит так или иначе относительно того, доступен ли какой-либо вход.

13
26.11.2018, 02:13
3 ответа

Я должен был сделать то же самое, нашел ключ зарегистрированным, как Dustin Kirkland заявил, но для меня, ctrlb shift-F12. Конечно, если Вы повторно отобразились, Ваш связывать-ключ к ctrla затем корректируются соответственно. Связывать-ключ не необходим, чтобы это работало.

Это - переключатель, таким образом, только необходимо переключить это однажды с shift-F12 и затем при необходимости в функциональных клавишах Byobu назад просто нажмите комбинацию снова.

Это является только персистентным для жизни сессии все же. Я должен был не забыть нажимать его снова, таким образом, это может закончиться в моем 'емкостно-резистивном' файле.

8
27.01.2020, 19:53
  • 1
    Это работает на меня на Ubuntu 12.04.2 при использовании PuTTY. Одна очень важная предпосылка, однако, должна удостовериться, что Вы используете последовательности функциональной клавиши XTerm R6, а не Esc по умолчанию [n ~ (настройте в меню Terminal-> Keyboard). Кроме того, я не выяснил, существует ли способ возвратить его к поведению по умолчанию. –  telotortium 07.02.2013, 07:22

Можно переключить использование Byobu F-ключей на и прочь путем нажатия:

ctrla-!

1
27.01.2020, 19:53
  • 1
    Это не работает при соединении от использования Windows 7 PuTTY к Ubuntu 16.04. Я пытаюсь отсортировать htop с F6, но он отсоединится вместо этого. –  Ismael 28.09.2016, 18:36

У меня были трудности с другими решениями. шифт-F12 не все отключает. F6 по-прежнему отключает сеанс. Также у меня, кажется, есть проблемы с тем, чтобы заставить F12 работать в Putty(F1-F10 в порядке ). И ctrla-! работает только с экраном в качестве серверной части, а не с tmux.

Другой способ — полностью отключить клавиши F -в привязках клавиш byobu вашего пользователя.

Если вы используете byobu с tmux , добавьте следующее в начале~/.byobu/keybindings.tmux:

source $BYOBU_PREFIX/share/byobu/keybindings/f-keys.tmux.disable

Если вы используете byobu с экраном , добавьте следующее в начале~/.byobu/keybindings:

source $BYOBU_PREFIX/share/byobu/keybindings/f-keys.screen.disable

ПРИМЕЧАНИЕ. :Посмотрите внимательно. В зависимости от вашего бэкэнда вам нужно изменить другой файл.

0
14.11.2020, 17:53

Теги

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