ユーザーの最後のログイン日時をISO 8601準拠の日付またはタイムスタンプで取得するには?

ユーザーの最後のログイン日時をISO 8601準拠の日付またはタイムスタンプで取得するには?

私はmacOS(Ventura 13.6.3)でzsh(バージョン5.9 x86_64-apple-darwin22.0)を実行しています。

特定のユーザーが過去X日以内にログインしたかどうかを知りたいです。これを達成するために、ユーザーの最後のログイン日時を取得するか、ログインしていない場合はnullを取得したいと思います。使ってみようlastこれを実行するコマンドです。私の問題は、私が実行しているとき

last -1 "john_smith"

私は次の文字列を取得します。

john_smith    ttys001    Wed Dec 17 19:19    still logged in

Dec 17を使用してこの文字列を削除できますlast -1 "john_smith" | awk '{print $4, $5}'。しかし、Dec 17年が含まれていないため、これは私の問題を解決しません。そうかなと思う2023-12-17または1971-12-17。

last一般的なISO 8601準拠の日付(またはタイムスタンプ)を強制的に生成するか、少なくとも標準出力に年を追加することによってこれを行う方法はありますかDec 17, 2023?または、last特定のユーザーに対してこのデータを取得するために代わりに使用できる他のコマンドはありますか?

修正する

lastzsh v. 5.9で完全なログイン日を取得する方法が見つからず、別のコマンドを使用するようになりました(/Users修正時間が123日以上の場合、そのコマンドの下のすべてのフォルダが見つかりました。クレジットは次のとおりです)。この記事):

find /Users -type d -maxdepth 1 -mindepth 1 -mtime +123d

ベストアンサー1

によるとman last

-y          Report the year in the session start time.

したがって、以下を実行できます。

last -1y "john_smith"

そして日付に年を表示してください。

おすすめ記事