回答:
使用するgetent
代わりに、手動で読み取りを、グループ及びユーザー情報を処理するためのコマンドを/etc/passwd
、/etc/groups
システム自体が使用するなど/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
ファイルsudo
からグループに関する行を取得し/etc/group
ます:
$ 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
% echo "Group cdrom with GID="$(cut -d: -f3 < <(getent group sudo))"" Group cdrom with GID=27
、もう少し一般的なものにしてください=)
GID="$(getent group cdrom | cut -d: -f3)"
ですか?
より複雑な答えは常に歓迎されます-私はそれらを非常に正直に読むことから多くを学びます。
メールグループのグループIDを探していて、その情報が保存されている場所を知らなかったため、このページを見つけました。
あなたの答えは素晴らしいです-ここに私が思いついた簡単なものがあります
def @ fourof4:/ home $ cat / etc / group | grepメール
mail:x:8:
私はそれがIDを整理しないことを知っていますが、それは私の目的を果たしました。
Blockquote試してみる:awk -F: '/ sudo / {print "Group" $ 1 "with GID =" $ 3}' / etc / group-AB Jun 23 '15 at 15:51 Blockquote
私は引用したもののほかにこれも言及されていることを見る....誰もが私の愛を得る-あなたがいなくてすみません
これが私をそのファイルに導いたものです。
感謝し、あなたが望むどんな形でも優れたものを私に与え続けてください!def
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
-F
か、-l
オプションのことを行います。
必要なものに対するハック:(まだもっと良い答えがあるかもしれません)
awk -F\: '{print "Group " $1 " with GID=" $3}' /etc/group | grep "group-name"
よりシンプルなバージョン(@ABのおかげ):
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
awk -F\: '/sudo/ {print "Group " $1 " with GID=" $3}' /etc/group
awk
より短いperl
)=