Przyjazna dla użytkownika komenda, aby wyświetlić listę wszystkich użytkowników w systemie Ubuntu?


22

Czy istnieje przyjazne dla użytkownika polecenie, którego można użyć do wyświetlenia listy użytkowników konsoli w systemie Ubuntu?

Kiedy cat /etc/passwdotrzymuję trudną do odczytania listę użytkowników. Byłoby miło zobaczyć listę alfabetyczną z wpisami ułożonymi w kolumny i nazwami grup w nawiasach obok identyfikatorów grup.


2
cóż, / etc / passwd jest ułożone w kolumny ... jeśli chcesz zobaczyć tylko kilka kolumn, być może użyj cut. W przypadku alfabetu istnieje sort. Jeśli potrzebujesz nazw grup, graj z łączeniem (które może być w stanie pokazać tylko podzbiór kolumn, btw).
njsg

Odpowiedzi:


27

Dobry sposób na dobre wyjście pliku / etc / passwd:

$ column -nts: /etc/passwd

Teraz możesz to posortować:

$ column -nts: /etc/passwd | sort

Z nazwami grup w ostatniej kolumnie (bez nawiasów):

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

Dzięki, te polecenia robią, co chcę. Dla początkującego jest to jednak bardzo trudne ... Przypuszczam, że będę musiał nauczyć się, jak stworzyć dla nich alias.
M. Dudley,

W kolumnie Centos nie podobała się ta nopcja. column -ts: /etc/passwddziałało dobrze.
user1014251,

9

Jeśli masz dostęp do roota na komputerze, możesz wykonać następujące czynności:

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

Jak to działa

Zostań rootem, aby odczytać plik cienia. Wymagane są uprawnienia roota tylko wtedy, gdy chcesz sprawdzić, czy użytkownik ma ustawione hasło (użytkownik), w przeciwnym razie możesz cat /etc/passwdzamiast sudo grep ...:

sudo 

Pokaż tylko użytkowników, którzy mają ustawione hasło:

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

Sortuj według nazwy użytkownika:

sort 

Odrzuć wszystkie informacje oprócz nazwy użytkownika:

cut -d: -f1

Iteruj przez nazwy użytkowników i wzbogacaj je o informacje grupowe:

while read user; do id $user; done

Sformatuj dane wejściowe w kolumnach:

column -ts' ,'

Użyj vi, aby wyświetlić wynik:

vi '+set nowrap' - 

Jeśli nie masz dostępu do konta root,

spróbuj czegoś takiego:

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

Jego wyniki są nieco inne, ale pozostawiam to jako ćwiczenie dla czytelnika, aby połączyć dwie części w tej odpowiedzi w coś, co w pełni pasuje do zadania. (Czy po prostu nie kochasz sed?)


„Zostawiam to jako ćwiczenie dla czytelnika ...” :)
Emanuel Berg

1

W Ubuntu może wyglądać następująco:

siedem pól z / etc / passwd zapisanych w $ 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

Coś, co robię i działa dla moich celów, jest

ls /home

To prawda, że ​​tak naprawdę nie daje to listy użytkowników, a raczej katalogów domowych użytkownika i wcześniejszych katalogów użytkownika, ale każde polecenie, które chcesz wykonać na nieistniejącym terminalu, powie ci i może być wskazówką do usunięcia plik domowy, który nie ma użytkownika ani go nie przenosi!


Lubię to. Wykonuje pracę na poziomie podstawowym.
aalaap

0

Myślałem, że będzie to łatwe join, ale joinwymaga sortowania plików w polu łączenia . Wymagało to (?) Obejścia z plikami tymczasowymi. Dane wyjściowe są sortowane według użytkownika i wyświetlają identyfikator użytkownika, grupy i grupy.

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
}

Przetłumacz znak na inny za pomocą tr; sortzgodnie z kluczowym polem z -k, wyjście do pliku z -o; połącz w odniesieniu do pól w pierwszym ( -1) i drugim ( -2) pliku, wypisz pewne pola w pierwszym pliku ( -o 1.1), a także w drugim ( ,2.1,2.3).


zauważ, że /tmpbyłoby lepiej, ponieważ FHS stwierdza, że /var/tmpnie zostaną usunięte przy ponownym uruchomieniu, których tak naprawdę nie potrzebujemy.
strugee
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.