回答:
/ 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
n
オプションは好まれませんでした。 column -ts: /etc/passwd
うまくいきました。
マシンに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' -
次のようなものを試してください:
cut -d: -f1 /etc/passwd | sort | while read user; do id $user; done | sed 's/\(\()\|^\)[^(]*(\|)\)/ /g' | column -t
その出力は少し異なりますが、この答えの2つの部分を完全に仕事に合ったものにするための演習として読者に任せます。(あなたはただ愛していないのですsed
か?)
私はこれはと簡単だろうと思った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
)ファイル、出力一定の最初のファイルのフィールド(-o 1.1
)並びに第二(,2.1,2.3
)。
/tmp
FHS /var/tmp
が再起動時にワイプされないことを示しているため、これはより良いことに注意してください。これは実際には必要ありません。
cut
。アルファベット順にすると、がありsort
ます。グループ名が必要な場合は、結合を使用します(実際には列のサブセットのみを表示できる場合があります)。