Bagaimana cara mendapatkan nama pengguna aktif melalui baris perintah di OS X?

95

Bagaimana cara mendapatkan nama pengguna aktif melalui baris perintah di OS X?

Lawrence Johnston
sumber

Jawaban:

198

karena 'whoami' telah usang, mungkin lebih kompatibel untuk digunakan:

id -un
kent
sumber
2
Dalam arti apa 'whoami' sudah usang? Siapa yang menyatakannya usang?
Jonathan Leffler
2
@Jonathan: Halaman manual untuk whoamidi Leopard mengonfirmasi bahwa itu telah diganti oleh id.
Naaff
Agh! Mengapa mereka mengubah sesuatu yang telah ada sejak awal waktu?
dmckee --- mantan moderator kucing
29
whoami untuk mengatakan? <boom-chacki>
kent
27

Jika Anda ingin menampilkan nama lengkap (bukan nama pengguna), tambahkan -Fbendera:

$ id -F
Andrew Havens
Andrew
sumber
1
-F adalah opsi ilegal di Mavericks - kapan ini pertama kali mulai berfungsi?
Eli B.
11

siapa saya

EDIT

Utilitas whoami telah ditinggalkan oleh utilitas id (1), dan setara dengan id -un. Perintah id -pini disarankan untuk penggunaan interaktif normal.

dfa
sumber
11

Saya cukup yakin terminal di OS X sama seperti unix, jadi perintahnya adalah:

whoami

Saya tidak memiliki masalah pada saya saat ini jadi seseorang mengoreksi saya jika saya salah.

CATATAN - whoamiUtilitas telah usang, dan setara dengan id -un. Ini akan memberi Anda pengguna saat ini

Eric Koslow
sumber
10

Lewat sini

Memeriksa pemilik / dev / console tampaknya berfungsi dengan baik.

stat -f "%Su" /dev/console

Lawrence Johnston
sumber
1
Ini bekerja dengan baik jika Anda dimasukkan ke mesin dan ingin melihat apakah pengguna masuk secara lokal. Jika tidak, perintah akan mengembalikan "root".
Tim Dearborn
4

Jika Anda ingin mengetahui siapa yang saat ini masuk ke sistem:

$  w
 15:56:14 naik 5 hari, 20:58, 6 pengguna, rata-rata memuat: 0,43, 0,53, 0,50
USER TTY LOGIN @ IDLE JCPU PCPU APA
saya poin / 2 Jumat 1: 03m 0,98s 0,98s - / bin / bash
saya poin / 3 09:55 6:00m 0,43s 0,43s / bin / bash
saya poin / 5 15:56 0.00s 0.23s 0.00sw

(Ini dari sistem Linux; pemformatan pada OS X mungkin sedikit berbeda, tetapi informasinya harus hampir sama.)

Mungkin ada beberapa sesi login; UNIX dirancang untuk menjadi sistem multi-pengguna.

singkat
sumber
4

Anda juga dapat menggunakan lognameperintah dari BSD General Commands Manual di Linux atau MacOS untuk melihat nama pengguna pengguna yang saat ini masuk, bahkan jika pengguna sedang melakukan sudooperasi. Ini berguna, misalnya, saat memodifikasi crontab pengguna saat menginstal paket seluruh sistem dengan sudo:crontab -u $(logname)

Per man logname:

LOGNAME(1)

NAME
    logname -- display user's login name
Adam Link
sumber
1
Ini jelas merupakan solusi terbersih dan termudah. Ini berfungsi tidak peduli pengguna mana yang menjalankan perintah.
Maxime Viargues
2

Pertanyaannya belum sepenuhnya terjawab, IMHO. Saya akan mencoba menjelaskan: Saya memiliki entri crontab yang menjadwalkan prosedur perintah bash shell, yang pada gilirannya melakukan beberapa pembersihan file saya; dan, setelah selesai, mengirimkan notifikasi kepada saya menggunakan pusat notifikasi OS X (dengan perintah osascript -e 'display notification ...). Jika seseorang (misalnya istri atau anak perempuan saya) mengalihkan pengguna komputer saat ini ke dia, membiarkan saya di latar belakang, skrip cron gagal saat mengirim pemberitahuan.

Jadi, Siapa pengguna saat ini artinya Apakah beberapa orang lain menjadi pengguna yang efektif meninggalkan saya di latar belakang ? Apakah stat -f "%Su" /dev/consolemengembalikan nama pengguna aktif saat ini ?

Jawabannya iya; Jadi, sekarang skrip crontab shell saya telah dimodifikasi dengan cara berikut:

...
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
Maurizio Loreti
sumber
2

mendapatkan nama pengguna di terminal MAC itu mudah ...

Saya biasanya menggunakan whoamidi terminal ...

Misalnya, dalam kasus ini, saya memerlukannya untuk menginstal Server Tomcat ...

masukkan deskripsi gambar di sini

Alireza
sumber
2

Ada dua cara-

whoami

atau

echo $USER
Manas Sharma
sumber
1

Anda juga dapat mengambilnya dari variabel lingkungan, tetapi itu mungkin tidak aman, jadi saya akan menggunakan jawaban Andrew.

printenv USER

Jika Anda perlu mengambilnya dari aplikasi, seperti Node, lebih mudah mendapatkannya dari variabel lingkungan, seperti

process.env.USER.

Apa yang Akan Keren
sumber
1

Tentukan 'pengguna aktif'.

Jika pertanyaannya adalah 'siapa pengguna yang login', maka 'siapa saya' atau 'whoami' tidak masalah (meskipun jawaban mereka berbeda - 'whoami' hanya melaporkan nama pengguna; 'siapa saya' melaporkan di terminal dan waktu login juga).

Jika pertanyaannya adalah 'ID pengguna mana yang merupakan ID efektif untuk shell', maka lebih baik menggunakan 'id'. Ini melaporkan ID pengguna dan ID grup yang nyata dan efektif, dan ID grup tambahan juga. Ini mungkin masalah jika shell menjalankan SUID atau SGID.

Jonathan Leffler
sumber