Классически команда - это «кто», а не «пользователи», но «кто» дает вам больше информации. Оглядываясь назад на оригинальные статьи Unix (середина 70-х годов), можно привести следующий пример:
who | wc -l
Использование 'wc -l' подсчитывает количество строк вывода - оно работает как с 'users', так и с 'who'. Использование '-w' надежно работает только тогда, когда на пользователя приходится одно слово (как с 'пользователями', но не с 'кто')
Вы можете использовать 'grep -c' для подсчета строк. Поскольку вас интересуют только непустые имена пользователей, вы можете сделать:
who | grep -c .
В каждой строке всегда есть хотя бы один символ.
Как было отмечено в комментариях по John T , то usersкоманда отличается от whoв ряде отношений. Наиболее важным является то, что вместо того, чтобы давать одно имя на строку, оно распределяет имена по несколько на строку - у меня нет машины с достаточным количеством разных пользователей, вошедших в систему, чтобы проверить, что происходит, когда число пользователей становится большим. Другое отличие состоит в том, что «кто» сообщает об используемых терминальных соединениях. Если открыто несколько окон терминала, для одного пользователя будет отображаться несколько строк, тогда как «пользователи», по-видимому, выводят зарегистрированного пользователя только один раз.
Как следствие этого различия, grep -c .формулировка «не будет работать с командой« пользователи »; ' wc -w' необходимо.