Удобная для пользователя команда для списка всех пользователей в системе Ubuntu?

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

Вы могли использовать что-то как dump и restore (или tar, действительно), все из которых используют формат потоковой передачи..., таким образом, можно получить доступ к invidividual файлам путем эффективного сканирования через несжатый поток. Это означает, ли файл, который Вы хотите, в конце сжатого архива, у Вас может быть долгое время для ожидания, но это не требует, чтобы Вы на самом деле распаковали все на диск.

Используя tar поскольку резервные копии могут казаться немного старомодными, но Вы получаете большую гибкость.

22
04.02.2013, 01:31
5 ответов

Хороший путь к хорошему выводу/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
27
27.01.2020, 19:42
  • 1
    Спасибо, эти команды делают то, что я хочу. Новичку это является очень пугающим хотя... Я предполагаю, что должен буду изучить, как создать псевдоним для них. –  M. Dudley 03.02.2013, 19:07
  • 2
    On Centos не нравилось n опция. column -ts: /etc/passwd хорошо работавший. имена файлов –  user1014251 10.11.2015, 15:19

Если у Вас есть корневой доступ на машине, можно сделать следующее:

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

Как это работает

Станьте корнем для чтения теневого файла. Вы только требуете полномочий пользователя root, если Вы хотите проверить, есть ли у пользователя набор пароля (пользователь - человек), иначе Вы можете просто cat /etc/passwd вместо sudo grep ...:

sudo 

Только покажите пользователям, которым установили пароль:

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

Вид именем пользователя:

sort 

Отбросьте всю информацию за исключением имени пользователя:

cut -d: -f1

Выполните итерации через имена пользователей и обогатите его группой infomration:

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?)

9
27.01.2020, 19:42
  • 1
    , "Я оставляю его как осуществление читателю..." :) –  Emanuel Berg 03.02.2013, 23:13

Я думал, что это будет легко с 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).

0
27.01.2020, 19:42
  • 1
    это /tmp было бы лучше, потому что FHS указывает это /var/tmp не будет вытерт на перезагрузках, в которых мы действительно не нуждаемся. –  strugee 09.09.2013, 06:25

В 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
27.01.2020, 19:42

Что-то, что я делаю, и он работает для моих целей, - это предоставлено

ls /home

, это не дает вам список пользователей скорее в список каталогов домашних директоров пользователя и прошедших каталогов, но любой Команда, которую вы хотите сделать на пользователя, который не существует терминала, скажет вам и может быть подсказкой для удаления домашнего файла, который не имеет пользователя или не перемещать его!

1
27.01.2020, 19:42

Теги

Похожие вопросы