従来、このコマンドは「users」ではなく「who」ですが、「who」を使用するとより多くの情報が得られます。元の Unix の記事 (70 年代半ば) を振り返ると、その例は次のようになります:
who | wc -l
「wc -l」を使用すると、出力の行数がカウントされます - 「users」との両方で機能します '誰'。 '-w' の使用は、ユーザーごとに 1 つの単語がある場合にのみ確実に機能します ('users' と同様に、'who' とは異なります)。
「grep -c」を使用して行を数えることができます。空白でないユーザー名のみに関心があるため、次のようにすることができます:
who | grep -c .
各行には常に少なくとも 1 文字があります。
John T のコメントにあるように、 users
コマンドは who
とは異なります 多くの点で。最も重要なのは、1 行に 1 つの名前を付ける代わりに、1 行に複数の名前を付けることです。ユーザー数が多くなったときに何が起こるかをテストするのに十分な数の異なるユーザーがログインしているマシンがありません。もう 1 つの違いは、'who' が使用中の端末接続を報告することです。複数のターミナル ウィンドウが開いていると、1 人のユーザーに対して複数の行が表示されますが、'users' にはログインしているユーザーが 1 回だけ表示されます。
この違いの結果として、'grep -c .
' users' コマンドでは定式化は機能しません。 'wc -w
' が必要です。
wc
を探しています (単語カウント) コマンド。
これを試してください:
users | wc -w
シェルを開いて次のように入力します:
who -q
最後の行にカウントが表示されます。
編集:
(ため息) 質問を誤解していました。これはやや強引なアプローチです:
一意のユーザー名を表示するには:
who | awk '{ print $1 }' | sort | uniq
ユニーク ユーザー数を確認するには:
who | awk '{ print $1 }' | sort | uniq | wc -l