Сценарии: Подсчет пользователей вошел в систему на систему

По умолчанию движок завершения zsh пытается добавить что-то только к тому, что вы набираете. Вы настроили его так, чтобы он также пытался добавить префикс. Простой интерактивный движок конфигурации завершения (compinstall

  • ) предлагает это под "контролем соответствия → завершение подстроки". Это вставляет подобную строку в ваш
  • .zshrc

  • :

    Настройки завершения

    ExportRows = Workbooks("Other").Sheets("Export").UsedRange.Rows.Count
    

    zstyle

    Sheets("Sheet1").Rows(ExportRows+1).Copy
    

    buildtin sets (в основном). Стиль завершения в стиле

    matcher-list

    - это список способов попробовать последовательно, останавливаясь, когда есть хотя бы одно совпадение. Пустая строка означает завершение по умолчанию (только суффиксы). Контроль соответствия

  • заклинание

    l:|=* r:|=* означает пробовать префикс соответствия * и суффикс соответствия *, т.е. любой префикс и суффикс.

    Вы можете запретить префиксы, которые начинаются с _ вообще. Это по-прежнему позволяет завершать слова, которые начинаются с _, и завершать их добавлением префикса, но префикс не может начинаться с _.

    :help :botright
    :help :saveas
    :help :split
    

    Это относится ко всем завершениям, а не только к завершающим именам команд. Я не знаю, как это ограничить именами команд.

    Должен быть способ более точно исключить имена команд, которые начинаются с _, но я не знаю, как. Первое начало - со стилем завершения

    игнорируемых шаблонов

    .

    Это исключает совпадения, которые начинаются с _

    ; однако, если совпадений нет, то zsh повторяет попытку без правил игнорирования. Хорошо то, что если команда начинается с символа подчеркивания, то она будет завершена во втором проходе. Плохо то, что zsh все равно попытается добавить подчеркивание, если совпадений нет, Таким образом, если у вас

    vi

    и

    вид, но не vim, то при нажатии Tab после vi будет предложен vi и вид
    , но не _vim, но если вы наберете vim, то в завершении будет предложен _vim.

    2
    17.11.2018, 02:21
    1 ответ

    Просто разберите вывод who:

    #!/usr/bin/env bash
    
    num=$(who | sort -uk1,1 | wc -l)
    date +"Today %d %B, there are $num users logged in onto the system"
    

    Объяснение

    sort -uk1,1 : -k1,1 означает "sort on the 1 field and only on the first field". -u означает "печатать только уникальные поля сортировки". Вместе они выведут по одной строке для каждого найденного пользователя.

    Подводя вышеперечисленное к wc -l, выведет количество строк, которое является количеством уникальных пользователей. Обратите внимание, что -u является расширением GNU, но поскольку вы используете дату -d, которая также является GNU, я предполагаю, что вы используете версии GNU.

    1
    27.01.2020, 22:21

    Теги

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