uidからユーザー名を取得する方法

uidからユーザー名を取得する方法

ユーザーが提供したuidに基づいてユーザー名を表示するbashスクリプトを作成しようとしています。

#!/bin/bash

read -p "donner l UID" cheruid

 if [ $(grep -w $cheruid) -n ]
 then
    grep -w $cheruid /etc/passwd | cut -d ":" -f "1" | xargs echo "user is : "
else
    echo "user not found"

fi

このコマンドを実行すると、端末にプロンプ​​トメッセージのみが表示され、動作が停止します。

私は何を逃したことがありませんか?

ベストアンサー1

GNUを使用すると、id次のことができます。

id -un -- "$cheruid"

次に、アカウントデータベース(/etc/passwdLDAP、NIS +、RDBMS ...に保存されているかどうか)を照会して、対応するuidを持つ最初のユーザー名を見つけます。

通常、uidごとに1つのユーザー名しかありませんが、これは保証されません。ユーザーアカウントデータベースのキーは、ユーザーIDではなくユーザー名です。

特定のuidのすべてのユーザー名を知りたい場合は、次のようにします。

getent passwd | ID=$cheruid awk -F: '$3 == ENVIRON["ID"] {print $1}'

ただし、サポートされていない一部のアカウントデータベースでは機能しない可能性があります。リストできる(時には大規模なLDAPベースの場合です)。

おすすめ記事