OS Xのコマンドラインからアクティブユーザーの名前を取得するにはどうすればよいですか?
OS Xのコマンドラインからアクティブユーザーの名前を取得するにはどうすればよいですか?
回答:
'whoami'は廃止されたので、使用するのはおそらく上位互換性があります。
id -un
whoami
Leopard ののmanページで、に置き換えられたことが確認されていますid
。
現在システムにログインしているユーザーを知りたい場合:
$ w 15:56:14 up up 5 days、20:58、6 users、load average:0.43、0.53、0.50 ユーザーTTYログイン@ IDLE JCPU PCPU何 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はマルチユーザーシステムになるように設計されています。
あなたも使うことができます logname
LinuxまたはMacOSでBSD General Commands Manualコマンドを、ユーザーが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 ...
)。誰か(たとえば、妻や娘)がコンピューターの現在のユーザーを彼女に切り替え、バックグラウンドで私を残した場合、通知の送信時にcronスクリプトが失敗します。
では、現在のユーザーとは誰ですか?バックグラウンドで私を残して、他の何人かのユーザーが効果的なユーザーになっていますか?やる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を実行している場合、これが問題になることがあります。