シェルで現在のユーザーID・グループIDを取得する方法 | Linux Fan

シェルで現在のユーザーID・グループIDを取得する方法

2017年10月2日

現在のユーザーID・グループIDは、「id」コマンドで取得することができます。

$ id
uid=1000(lintaro) gid=1000(lintaro) groups=1000(lintaro),4(adm),24(cdrom),27(sudo),30(dip),46(plugdev),118(lpadmin),128(sambashare)

これだとシェルスクリプトなどで使いにくいですね。ユーザーIDだけを取得するには、以下のように実行します。

$ id -u
1000

プライマリグループのIDを取得するオプションは「-g」です。

$ id -g
1000

変数に代入することもできます。

USER_ID=$(id -u)
GROUP_ID=$(id -g)

グループIDをすべて取得する場合は、「-G」をつけて実行します。

$ id -G
1000 4 24 27 30 46 118 128

なお、idコマンドを使ってユーザー名やグループ名を取得することもできます。

$ id -u -n
lintaro
$ id -g -n
lintaro

idコマンドのヘルプ

Usage: id [OPTION]... [USER]
Print user and group information for the specified USER,
or (when USER omitted) for the current user.

  -a             ignore, for compatibility with other versions
  -Z, --context  print only the security context of the process
  -g, --group    print only the effective group ID
  -G, --groups   print all group IDs
  -n, --name     print a name instead of a number, for -ugG
  -r, --real     print the real ID instead of the effective ID, with -ugG
  -u, --user     print only the effective user ID
  -z, --zero     delimit entries with NUL characters, not whitespace;
                   not permitted in default format
      --help     この使い方を表示して終了する
      --version  バージョン情報を表示して終了する

OPTION が指定されない場合、識別情報のうち有用な物を表示します。

GNU coreutils online help: <http://www.gnu.org/software/coreutils/>
id の翻訳に関するバグは <http://translationproject.org/team/ja.html> に連絡してください。
Full documentation at: <http://www.gnu.org/software/coreutils/id>
or available locally via: info '(coreutils) id invocation'