Команда для перечисления всех пользователей с их UID?

Как я могу перечислить всех пользователей вместе с их идентификаторами? Я хочу сделать это из терминала.

Попробуй пройти бота-учителя. Он научит тебя Linux в виде игры: Курсы Linux и DevOPS Бесплатный урок

Перечислите всех пользователей с /home папка:

awk -F: '/\/home/ {printf "%s:%s\n",$1,$3}' /etc/passwd

или все пользователи с UID >= 1000:

awk -F: '($3 >= 1000) {printf "%s:%s\n",$1,$3}' /etc/passwd

комбинация

awk -F: '/\/home/ && ($3 >= 1000) {printf "%s:%s\n",$1,$3}' /etc/passwd

или для всех записей

awk -F: '{printf "%s:%s\n",$1,$3}' /etc/passwd

Дополнительная информация здесь

Попробуй пройти бота-учителя. Он научит тебя Linux в виде игры: Курсы Linux и DevOPS Бесплатный урок

Вы можете легко найти его, просто используя cut :

cut -d: -f1,3 /etc/passwd
  • -d: устанавливает разделитель как : для cut

  • -f1,3 извлекает только поля 1 и 3, разделенные символом : из /etc/passwd файл

Проверять man cut чтобы получить больше идей.

Пример :

$ cut -d: -f1,3 /etc/passwdroot:0daemon:1bin:2sys:3sync:4games:5......

Если у вас есть ldap сконфигурирован, чтобы включить ldap пользователей в выходных данных :

getent passwd | cut -d: -f1,3

В качестве альтернативы можно перечислить всех пользователей, включая информацию о UID и GID.

for user in $(cat /etc/passwd | cut -f1 -d":"); do id $user; done 

Овации,

Поскольку вы пытаетесь указать UID и имя пользователя, приведенная ниже команда лучше всего работает в Solaris. У них есть два awk

>awk -F: '($3 =1000) {printf "%s:%s",$1,$3}' / etc/passwd

>Я нахожу, что самый простой способ - это установить webmin на вашем сервере и просто перейти к системным пользователям и группам, и там у вас есть красиво отформатированный список со всеми именами пользователей и группами с их идентификаторами, домашним каталогом и т.д.

cat /etc/passwd