Класично команда - це "хто", а не "користувачі", але "хто" дає більше інформації. Оглянувшись на оригінальні статті Unix (середина 70-х років), прикладом цього було б:
who | wc -l
Використання 'wc -l' підраховує рядки виводу - воно працює як з 'користувачами', так і з 'хто'. Використання '-w' надійно працює лише тоді, коли на кожного користувача є одне слово (як у випадку "користувачів", але не з "хто").
Ви можете використовувати 'grep -c' для підрахунку рядків. Оскільки вас цікавлять лише порожні імена користувачів, ви можете зробити:
who | grep -c .
Завжди є щонайменше один символ у кожному рядку.
Як було відзначено в коментарі по John T , то usersкоманда відрізняється від whoв ряді відносин. Найголовніше - це те, що замість того, щоб давати одне ім’я на рядок, він поширює імена на кілька рядків - у мене немає машини з достатньою кількістю користувачів, щоб увійти, щоб перевірити, що відбувається, коли кількість користувачів стане великою. Інша відмінність полягає в тому, що "хто" звітує про використовувані термінальні з'єднання. Якщо відкрито декілька вікон терміналів, він відображатиме кілька рядків для одного користувача, тоді як "користувачі", схоже, перераховують користувача, який увійшов у систему лише один раз.
Як наслідок цієї різниці, grep -c .формулювання ' ' не працюватиме з командою 'users'; ' wc -w' необхідно.