グループ名を示すグループID GIDを取得する方法。
出力は次のようになります。
Group adm with GID=4
必要なものに対するハック:(まだもっと良い答えがあるかもしれません)
awk -F\: '{print "Group " $1 " with GID=" $3}' /etc/group | grep "group-name"
よりシンプルなバージョン(@ A.Bに感謝):
awk -F\: '/Sudo/ {print "Group " $1 " with GID=" $3}' /etc/group
例:
$ awk -F\: '{print "Group " $1 " with GID=" $3}' /etc/group | grep Sudo
Group Sudo with GID=27
/etc/passwd
、/etc/groups
などを手動で読み取る代わりに、グループとユーザー情報を処理するには getent
コマンドを使用します。システム自体は /etc/nsswitch.conf
を使用して、情報の取得元と設定を決定しますファイル内の他のソースによってオーバーライドされる場合があります。 getent
はこの構成に従います。 getent
は、ソースに関係なく、ファイルと同じ形式でデータを出力するため、/etc/passwd
を解析するのと同じ方法で出力を解析できます。
getent group Sudo | awk -F: '{printf "Group %s with GID=%d\n", $1, $3}'
ユーザー名については、これがはるかに簡単であることに注意してください。 id
を使用します。
$ id -u lightdm
105
これはcut
で簡単に行えます:
$ cut -d: -f3 < <(getent group Sudo)
27
getent group Sudo
は、/etc/group
ファイルからSudo
グループに関する行を取得します。
$ getent group Sudo
sudo:x:27:foobar
次に、:
で区切られた3番目のフィールドを取得します。
それに応じて出力文字列が必要な場合は、echo
内でコマンド置換を使用します。
$ echo "Group Sudo with GID="$(cut -d: -f3 < <(getent group Sudo))""
Group Sudo with GID=27
Perl
ワンライナーを使用:
% Perl -ne '@elements=(split /:/); printf "Group %s with GID=%s\n",$elements[0],$elements[2]' <<< $(getent group Sudo)
Group Sudo with GID=27
またはそれより短い(より良い)
% Perl -F/:/ -ane 'printf "Group %s with GID=%s\n",$F[0],$F[2]' <<< $(getent group Sudo)
Group Sudo with GID=27