web-dev-qa-db-ja.com

Ubuntuシステム上のすべてのユーザーをリストするユーザーフレンドリーなコマンド?

Ubuntuシステムのコンソールでユーザーを一覧表示するために使用できるユーザーフレンドリーなコマンドはありますか?

cat /etc/passwd読みにくいユーザーリストが表示されます。エントリが列に配置され、グループIDの横にかっこ内にグループ名があるアルファベット順のリストを表示すると便利です。

22
M. Dudley

/ 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
Nykakin

マシンにrootアクセス権がある場合、次のことができます。

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

使い方

Rootになって、シャドウファイルを読み取ります。ユーザーにパスワードが設定されているかどうか(人間のユーザー)を確認する場合にのみ、root権限が必要です。それ以外の場合は、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' - 

Rootアクセス権がない場合は、

このようなことを試してください:

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

その出力は少し異なりますが、この答えの2つの部分を仕事に完全に適合するものに組み合わせるための演習として残しておきます。 (あなたはsedだけが好きではありませんか?)

9
jippie

Ubuntuでは次のようになります。

$ f1、f2 ...、$ f7に格納された/ etc/passwdの7つのフィールド

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
Fatima Zohra

私がすることとそれが私の目的のために機能することは

ls /home

確かに、これは実際にはユーザーのリストではなく、ユーザーのホームディレクトリと過去のユーザーのディレクトリのリストを提供しますが、ターミナルが存在しないユーザーに対して実行したいコマンドは、通知を表示し、削除のヒントになる可能性がありますユーザーがいない、または移動しないホームファイル!

1
Sam Hamblin

これはjoinで簡単だと思いましたが、joinではファイルをソートする必要があります結合フィールドで。したがって、一時ファイルを使用した回避策(?)が必要でした。出力はユーザーごとにソートされ、ユーザー、グループ、およびグループIDが表示されます。

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番目の(-2)ファイルのフィールドに関して結合し、最初のファイル(-o 1.1)および2番目の(,2.1,2.3)の特定のフィールドを出力します。

0
Emanuel Berg