
各ユーザーのデフォルト シェルを表示する単一のコマンドを作成しようとしています。 調査したところ、デフォルトのシェルを変更するコマンド ( など) がほとんど見つかりましたが、chsh -s /bin/ksh
手元のタスクを実行するためのコマンドは見つかりませんでした。
CentOS でこれを実現する方法を知っている人はいますか?
答え1
別の方法
getent passwd | cut -d: -f1,7
答え2
/etc/passwd
ユーザー名とログインシェルのリスト、およびシステムのすべてのユーザー アカウントに関するその他の関連情報を含むファイルを解析できます。
ユーザー名は:
分離された最初のフィールドに保存され、ログイン シェルは 7 番目 (最後) のフィールドに保存されます。
awk
したがって、見栄えを良くするために、間に少し書式を設定してフィールドを印刷するには、次のようにします。
awk -F':' '{ print $1 " " FS " " $NF }' /etc/passwd
ldap
ローカルファイルシステムを使用しないようなサービスを使用する場合は、getent passwd
次の手順に従ってnsswitch
情報を取得し、awk
それを使用して上書きすることができます。
getent passwd | awk -F':' '{ print $1 " " FS " " $NF }'
例:
% awk -F':' '{ print $1 " " FS " " $NF }' /etc/passwd
root : /bin/bash
daemon : /usr/sbin/nologin
bin : /usr/sbin/nologin
sys : /usr/sbin/nologin
sync : /bin/sync
games : /usr/sbin/nologin
man : /usr/sbin/nologin
lp : /usr/sbin/nologin
mail : /usr/sbin/nologin
答え3
その情報は /etc/passwd に保存されます。
cut -d: -f1,7 /etc/passwd