それマグで!

知識はカップより、マグでゆっくり頂きます。 takuya_1stのブログ

習慣に早くから配慮した者は、 おそらく人生の実りも大きい。

ユーザのUIDを数字だけ取り出す / id

id コマンドでユーザを調べると

$ id takuya
uid=1001(takuya) gid=1001(takuya) groups=1001(takuya),27(sudo)

この結果をついgrep / awk しちゃうが、ちゃんと id コマンドで取れますよ。ってことです。

int の数字だけがほしい

オプションを付けます。

UID (ユーザ番号) をダイレクトに取り出す。

$id -u takuya
1001

GID(グループ番号)を直接取り出す

$id -g takuya
1001

所属するグループIDを全部取り出す

$id -G takuya
1001 27 

何に使うの?

uid わかってどうするの?って思うんだけど、シェルスクリプトを書くときにUIDがわかってるとSUDOやLOGINを扱いやすいし、ファイルの所有者を調べやすいのです。

例えばLXCのコンテナで内部で、コマンドを指定ユーザで実行するとき

$ uid=$(lxc exec $NAME  -- id -u takuya)
$ lxc exec $NAME  --user $uid -- whoami
takuya

lxcのようにユーザ指定を番号でできるコマンドは多いのです。

参考資料

https://kb.iu.edu/d/adwf