Зручна команда для списку всіх користувачів системи Ubuntu?


22

Чи є зручна команда, яку я можу використовувати, щоб перелічити користувачів у консолі системи Ubuntu?

Коли я cat /etc/passwdотримую важко читаний список користувачів. Було б непогано побачити алфавітний список із записами, розташованими у стовпцях, та з іменами груп у дужках поруч із ідентифікаторами групи.


2
ну, / і т.д. / пароль буде організований в стовпці ... якщо ви хочете побачити тільки кілька colums, можливо використовувати cut. Для алфавіту є sort. Якщо вам потрібні імена груп, пограйте з приєднанням (яке насправді може відображати лише підмножину стовпців, btw).
njsg

Відповіді:


27

Хороший спосіб гарного виводу файлу / etc / passwd:

$ column -nts: /etc/passwd

Тепер ви можете сортувати його:

$ column -nts: /etc/passwd | sort

Імена груп у останньому стовпчику (без дужок):

$ paste -d: /etc/passwd <(groups $(cut -d: -f1 /etc/passwd) | sed 's/.*: //') | column -nts: | sort

Дякую, ці команди виконують те, що я хочу. Для новачків це дуже непросто ... Думаю, мені доведеться навчитися створювати псевдонім для них.
М. Дадлі

У стовпці Centos ця nопція не сподобалась . column -ts: /etc/passwdдобре працював.
користувач1014251

9

Якщо у вас є кореневий доступ на машині, ви можете зробити наступне:

sudo grep -vE '^[^*!]+:[*!]:' /etc/shadow | sort | cut -d: -f1 | while read user; do id $user; done | column -ts' ,' | vi '+set nowrap' -

Як це працює

Станьте коренем, щоб прочитати тіньовий файл. Ви потребуєте кореневих привілеїв, лише якщо хочете перевірити, чи є у користувача встановлений пароль (користувачеві користувач), інакше ви можете просто cat /etc/passwdзамість sudo grep ...:

sudo 

Показуйте лише користувачам, які встановили пароль:

grep -vE '^[^*!]+:[*!]:' /etc/shadow

Сортувати за іменем користувача:

sort 

Відмовтеся від усієї інформації, крім імені користувача:

cut -d: -f1

Ітерайте через імена користувачів та збагатіть їх груповою інформацією:

while read user; do id $user; done

Відформатуйте вхід у стовпці:

column -ts' ,'

Використовуйте vi, щоб переглянути результат:

vi '+set nowrap' - 

Якщо у вас немає кореневого доступу,

спробуйте щось подібне:

cut -d: -f1 /etc/passwd | sort | while read user; do id $user; done | sed 's/\(\()\|^\)[^(]*(\|)\)/ /g' | column -t

Його результат дещо інший, але я залишаю це як вправу для читача, щоб поєднати дві частини у цій відповіді у щось, що повністю відповідає роботі. (Ви просто не любите sed?)


"Я залишаю це як вправу для читача ..." :)
Емануель Берг

1

У Ubuntu це може бути наступне:

сім полів з / etc / passwd, що зберігаються у $ f1, f2 ..., $ f7

while IFS=: read -r f1 f2 f3 f4 f5 f6 f7
do
 echo "User $f1 use $f7 shell and stores files in $f6 directory."
done < /etc/passwd

1

Щось я роблю, і це працює для моїх цілей

ls /home

Зрозуміло, це насправді не дає вам список користувачів, а перелік домашніх каталогів та каталогів попереднього користувача, але будь-яка команда, яку ви хочете виконати на користувачеві, який не існує терміналу, підкаже вам і може бути підказом для видалення домашній файл, у якого немає користувача, або перемістити його!


Мені подобається це. Це робить роботу на базовому рівні.
aalaap

0

Я думав, що це буде легко join, але joinвимагає сортування файлів у полі приєднання . Отже, це вимагало (?) Вирішення тимчасових файлів. Вихід сортується за користувачем та відображає ідентифікатор користувача, групи та групи.

uag () {
  TEMP_GROUPS=/var/tmp/sorted_groups
  TEMP_USERS=/var/tmp/sorted_users
  cat /etc/group  | tr ":" " " | sort -k 3 -o $TEMP_GROUPS
  cat /etc/passwd | tr ":" " " | sort -k 4 -o $TEMP_USERS
  join -1 4 -2 3 -o 1.1,2.1,2.3 $TEMP_USERS $TEMP_GROUPS | sort
  rm $TEMP_GROUPS $TEMP_USERS
}

Перекласти персонаж в інший за допомогою tr; sortвідповідно до ключового поля з -k, вихід у файл -o; приєднатись до полів у першому ( -1) та другому ( -2) файлах, вивести певні поля у першому файлі ( -o 1.1), а також у другому ( ,2.1,2.3).


зауважте, що /tmpбуло б краще, тому що FHS заявляє, що /var/tmpне буде видалено перезавантаження, що нам насправді не потрібно.
strugee
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.