OS Xのコマンドラインからアクティブユーザーの名前を取得するにはどうすればよいですか?
「whoami」は廃止されているため、使用するのにおそらく上位互換性があります。
id -un
(ユーザー名ではなく)フルネームを表示する場合は、-F
フラグ:
$ id -F
Andrew Havens
[〜#〜] edit [〜#〜]
Whoamiユーティリティはid(1)ユーティリティによって廃止され、id -un
と同等です。コマンドid -p
は、通常のインタラクティブな使用に推奨されます。
OS Xのターミナルはunixに似ているので、コマンドは次のようになります。
whoami
現時点ではMacを使用していないので、間違っている場合は誰かが修正してくれます。
現在システムにログインしているユーザーを知りたい場合:
$ w 15:56:14まで5日間、20:58、6ユーザー、負荷平均:0.43、0.53、0.50 USER TTY LOGIN @ IDLE JCPU PCPU WHAT me pts/2 Fri19 1:03m 0.98s 0.98s-/ bin/bash me pts/3 09:55 6:00m 0.43s 0.43s/bin/bash me pts/5 15:56 0.00s 0.23s 0.00sw
(これはLinuxシステムのものです。OSXのフォーマットは若干異なる場合がありますが、情報はほぼ同じである必要があります。)
複数のログインセッションがある場合があります。結局のところ、UNIXはマルチユーザーシステムとして設計されています。
LinuxまたはMacOSのBSD General Commands Manualのlogname
コマンドを使用して、ユーザーがSudo
操作を実行している場合でも、現在ログインしているユーザーのユーザー名を確認することもできます。これは、たとえば、Sudoを使用してシステム全体のパッケージをインストールしているときにユーザーのcrontabを変更する場合に便利です:crontab -u $(logname)
man logname
:
LOGNAME(1)
NAME
logname -- display user's login name
質問は完全に答えられていません、私見。説明しようと思います:bashシェルコマンドプロシージャをスケジュールするcrontabエントリがあり、それがファイルのクリーンアップを行います。そして、完了したら、OS X通知センターを使用して(コマンド[osascript -e 'display notification ...
)で)to meを送信します。誰か(私の妻や娘など)がコンピューターの現在のユーザーを彼女に切り替えて、私をバックグラウンドのままにした場合、通知の送信時にcronスクリプトfailsが送信されます。
つまり、現在のユーザーは誰ですかは、他の人がバックグラウンドにいる効果的なユーザーになっているを意味しますか? stat -f "%Su" /dev/console
は現在のアクティブなユーザー名前を返しますか?
答えはイエスです。そのため、crontabシェルスクリプトが次のように変更されました。
...
if [ "$(/usr/bin/stat -f ""%Su"" /dev/console)" = "loreti" ]
then /usr/bin/osascript -e \
'display notification "Cleanup done" sound name "sosumi" with title "myCleanup"'
fi
「アクティブユーザー」を定義します。
「ログインしているユーザーは誰ですか」という質問の場合、「who am i」または「whoami」で問題ありません(ただし、「whoami」はユーザー名のみを報告し、「who am i」は端末で報告し、ログイン時間も)。
質問が「どのユーザーIDがシェルの有効なIDであるか」である場合、多くの場合、「id」を使用する方が適切です。これは、実際の有効なユーザーIDとグループID、および補足グループIDについても報告します。これは、シェルがSUIDまたはSGIDを実行している場合に問題になる場合があります。
環境変数から取得することもできますが、それはおそらく安全ではないので、Andrewの答えに行きます。
printenv USER
Nodeなどのアプリから取得する必要がある場合は、次のような環境変数から取得する方が簡単です。
process.env.USER
。