Classicamente, il comando è 'chi' piuttosto che 'utenti', ma 'chi' fornisce maggiori informazioni. Guardando indietro agli articoli Unix originali (metà degli anni '70), l'esempio sarebbe stato:
who | wc -l
L'uso di 'wc -l' conta le righe di output - funziona con sia 'users' che 'chi'. L'uso di '-w' funziona in modo affidabile solo quando c'è una parola per utente (come con 'users' ma non con 'who').
Puoi usare 'grep -c' per contare le linee. Dato che sei interessato solo a nomi utente non vuoti, potresti fare:
who | grep -c .
C'è sempre almeno un carattere su ogni riga.
Come notato nei commenti di John T, il file users
comando differisce da who
sotto diversi aspetti. Il più importante è che invece di dare un nome per riga, distribuisce i nomi diversi per riga:non ho una macchina con un numero sufficiente di utenti diversi connessi per verificare cosa succede quando il numero di utenti aumenta. L'altra differenza è che "chi" segnala le connessioni terminali in uso. Con più finestre di terminale aperte, mostrerà più righe per un singolo utente, mentre "utenti" sembra elencare un utente che ha effettuato l'accesso solo una volta.
Come conseguenza di questa differenza, il file 'grep -c .
' la formulazione non funzionerà con il comando 'users'; 'wc -w
' è necessario.
Stai cercando il wc
(conteggio parole) comando.
Prova questo:
users | wc -w
Apri una shell e digita:
who -q
L'ultima riga ti darà un conteggio.
MODIFICA:
(sospiro) Ho frainteso la domanda. Ecco un approccio un po' forzato:
Per visualizzare i nomi utente univoci:
who | awk '{ print $1 }' | sort | uniq
Per vedere un conteggio di utenti unici:
who | awk '{ print $1 }' | sort | uniq | wc -l