Вопрос BASH: могу ли я, используя чтение, записать один символ или клавишу со стрелкой (на клавиатуре)

Итак, я столкнулся с той же проблемой, когда пытался заставить работать непривилегированные контейнеры LXC на CentOS 7. Я не хотел использовать cgmanager, потому что мне не нравится внедрять дополнительные службы, если они не требуются. В итоге я поставил исправления для systemd, используя некоторые исправления из пакета ubuntu и одно собственное исправление для расширения списка контроллеров cgroup. У меня есть исходники, необходимые для сборки RPM, на моем аккаунте GitHub по адресу https://github.com/CtrlC-Root/rpmdist. У меня также есть исправленные версии shadow-utils (для subuids и subgids) и pam (для loginuid). После установки этих RPM и настройки пользователя для запуска непривилегированных контейнеров (назначение subuids и subgids, распределение veth пар в lxc-usernet, создание .config/lxc/default.conf и т.д.) я могу запускать непривилегированные контейнеры LXC просто отлично.

EDIT: Еще одна причина, по которой я не хотел использовать cgmanager, заключается в том, что я не хотел, чтобы мои обычные пользователи вообще использовали sudo. Обычные пользователи должны иметь возможность войти в систему, и все должно "просто работать" из коробки.

3
07.11.2018, 04:50
1 ответ

Вы можете прочитать для -n 1и прочитать следующие два, если первый \033и реагировать соответствующим образом. В противном случае обработайте номер напрямую.

#!/bin/bash

read -n1 c
case "$c" in
    (1) echo One. ;;
    (2) echo Two. ;;
    ($'\033') 
        read -t.001 -n2 r
        case "$r" in
            ('[A') echo Up. ;;
            ('[B') echo Down. ;;
        esac
esac
3
27.01.2020, 21:17

Теги

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