Klasicky je příkaz 'kdo' spíše než 'uživatelé', ale 'kdo' vám poskytuje více informací. Když se podíváme zpět na původní články o Unixu (polovina 70. let), příklad by byl:
who | wc -l
Použití 'wc -l' počítá řádky výstupu – funguje to s jak 'users', tak 'SZO'. Použití '-w' funguje spolehlivě pouze v případě, že na jednoho uživatele připadá jedno slovo (jako v případě 'users', ale ne v případě 'who').
K počítání řádků můžete použít 'grep -c'. Protože vás zajímají pouze uživatelská jména, která nejsou prázdná, můžete:
who | grep -c .
Na každém řádku je vždy alespoň jeden znak.
Jak poznamenal v komentářích John T, users
příkaz se liší od who
v řadě ohledů. Nejdůležitější je, že namísto uvedení jednoho jména na řádek rozloží několik jmen na řádek – nemám počítač s dostatečným počtem různých přihlášených uživatelů, abych mohl otestovat, co se stane, když se počet uživatelů zvětší. Dalším rozdílem je, že „kdo“ hlásí používaná připojení terminálu. Když je otevřeno více oken terminálu, zobrazí se více řádků pro jednoho uživatele, zatímco „users“ jakoby uvádí přihlášeného uživatele pouze jednou.
V důsledku tohoto rozdílu je 'grep -c .
' formulace nebude fungovat s příkazem 'users'; 'wc -w
' je nezbytné.
Hledáte wc
(počet slov) příkaz.
Zkuste toto:
users | wc -w
Otevřete shell a zadejte:
who -q
Poslední řádek vám poskytne počet.
EDIT:
(povzdech) Špatně jsem pochopil otázku. Zde je poněkud hrubý přístup:
Chcete-li zobrazit jedinečná uživatelská jména:
who | awk '{ print $1 }' | sort | uniq
Chcete-li zobrazit počet unikátních uživatelů:
who | awk '{ print $1 }' | sort | uniq | wc -l