Clásicamente, el comando es 'quién' en lugar de 'usuarios', pero 'quién' le brinda más información. Mirando hacia atrás en los artículos originales de Unix (mediados de los 70), el ejemplo habría sido:
who | wc -l
El uso de 'wc -l' cuenta líneas de salida; funciona con tanto 'usuarios' como 'quién'. El uso de '-w' solo funciona de manera confiable cuando hay una palabra por usuario (como con 'usuarios' pero no con 'quién').
Podrías usar 'grep -c' para contar las líneas. Dado que solo le interesan los nombres de usuario que no están en blanco, podría hacer lo siguiente:
who | grep -c .
Siempre hay al menos un carácter en cada línea.
Como se señaló en los comentarios de John T, el users
el comando difiere de who
en varios aspectos. La más importante es que, en lugar de dar un nombre por línea, distribuye los nombres en varios por línea:no tengo una máquina con suficientes usuarios diferentes conectados para probar qué sucede cuando la cantidad de usuarios aumenta. La otra diferencia es que 'who' informa sobre las conexiones de terminales en uso. Con múltiples ventanas de terminal abiertas, mostrará múltiples líneas para un solo usuario, mientras que 'usuarios' parece enumerar un usuario conectado solo una vez.
Como consecuencia de esta diferencia, el 'grep -c .
' la formulación no funcionará con el comando 'usuarios'; 'wc -w
' es necesario.
Estás buscando el wc
(recuento de palabras) comando.
Prueba esto:
users | wc -w
Abra un shell y escriba:
who -q
La última línea le dará un conteo.
EDITAR:
(suspiro) Entendí mal la pregunta. Aquí hay un enfoque algo de fuerza bruta:
Para ver nombres de usuario únicos:
who | awk '{ print $1 }' | sort | uniq
Para ver un recuento de usuarios únicos:
who | awk '{ print $1 }' | sort | uniq | wc -l