Название гласит все. Я единственный пользователь на своем компьютере, но когда я набираю, кто | wc -l, он отвечает 2. Почему это?
who дает подробную информацию о зарегистрированных пользователях по одной в каждой строке, как показано в
aditya@aditya-desktop:~$ who
aditya tty7 2014-03-31 16:45 (:0)
aditya pts/2 2014-03-31 17:51 (:0)
aditya@aditya-desktop:~$
wc -l, не дает строк. В who|wc -l мы выполнили команды. То есть, мы отправляем вывод команды who в wc -l. wc -l будет измерять количество строк на выходе, заданное командой who, которое равно 2.
aditya@aditya-desktop:~$ who|wc -l
2
aditya@aditya-desktop:~$
Для получения дополнительной информации вы можете прочитать руководства, набрав man who и
Из info coreutils 'who invocation':
If given no non-option arguments, `who' prints the following
information for each user currently logged on: login name, terminal
line, login time, and remote hostname or X display.
Итак, если вы вошли в более чем одно место, и никто не регистрируется, вывод who | wc -l будет количество мест, в которых вы зарегистрированы. Если вы откроете больше окон терминала, вы увидите, что это число увеличится. То же самое, если вы откроете больше вкладок в окне терминала.
Если вы единственный пользователь на вашем компьютере и хотите видеть количество уникальных пользователей, которые в настоящее время вошли в систему, вы можете использовать:
who is using_my_pc | wc -l
Нет, это шутка (что смешно, потому что она работает в этом случае). Смотрите info coreutils 'who invocation', чтобы увидеть, что именно. Правильный способ увидеть число уникальных пользователей, зарегистрированных в вашей системе:
who | cut -d' ' -f1 | uniq | wc -l
who показывает информацию о пользователях, которые в настоящее время вошли в систему.
avinash@avinash-Lenovo-IdeaPad-Z500:~$ who
avinash tty7 2014-03-31 16:52 (:0)
avinash pts/1 2014-03-31 17:59 (:0)
tty7 представляет вышеупомянутого пользователя, который запускает сеанс X GUI. А также второй, , указанный выше пользователь также запускает сеанс gnome-terminal.
Как и @Aditya, wc -l подсчитывает количество строк в стандартном входе. who | wc -l в этой команде, вывод команды who был подан как вход во вторую команду wc -l. Таким образом, inturn, wc -l вычисляет количество строк, присутствующих в стандартном вводе (2), и выводит (stdout) конечный результат.
Чтобы увидеть количество пользователей, которые вошли в систему, запустите команду who с параметром -q, как показано ниже.
avinash@avinash-Lenovo-IdeaPad-Z500:~$ who -q
avinash avinash avinash
# users=3
Из man who
-q, --count
all login names and number of users logged on