Làm cách nào để lấy tên của người dùng đang hoạt động thông qua dòng lệnh trong OS X?


Câu trả lời:


196

vì 'whoami' đã bị loại bỏ, nó có thể tương thích về phía trước hơn để sử dụng:

id -un

2
Theo nghĩa nào thì 'whoami' được viết tắt? Ai đã tuyên bố nó lỗi thời?
Jonathan Leffler, 09/07/09

2
@Jonathan: Trang người đàn ông cho whoamitrên Leopard xác nhận rằng nó đã được thay thế bằng id.
Naaff, 09/07/09

Agh! Tại sao họ thay đổi một cái gì đó đã tồn tại từ buổi bình minh của thời gian?
dmckee --- ex-moderator kitten

29
tôi là ai mà nói? <boom-chackosystem
kent

27

Nếu bạn muốn hiển thị tên đầy đủ (thay vì tên người dùng), hãy thêm -Fcờ:

$ id -F
Andrew Havens

1
-F là một lựa chọn bất hợp pháp trong Mavericks - điều này lần đầu tiên bắt đầu hoạt động khi nào?
Eli B.

11

tôi là ai

BIÊN TẬP

Tiện ích whoami đã bị ngăn chặn bởi tiện ích id (1) và tương đương với id -un. Lệnh id -pđược đề xuất để sử dụng tương tác bình thường.


11

Tôi khá chắc chắn rằng thiết bị đầu cuối trong OS X cũng giống như unix, vì vậy lệnh sẽ là:

whoami

Tôi không có một chiếc mac trên người vào lúc này nên ai đó sẽ sửa cho tôi nếu tôi sai.

LƯU Ý - whoamiTiện ích đã được xóa bỏ, và tương đương với id -un. Nó sẽ cung cấp cho bạn người dùng hiện tại


10

Qua đây

Kiểm tra chủ sở hữu của / dev / console có vẻ hoạt động tốt.

stat -f "%Su" /dev/console


1
Điều này hoạt động tốt nếu bạn đang sử dụng một máy và muốn xem liệu người dùng có đăng nhập cục bộ hay không. Nếu không, lệnh sẽ trả về "root".
Tim Dearborn

4

Nếu bạn muốn biết ai hiện đang đăng nhập vào hệ thống:

$ w
 15:56:14 trong 5 ngày, 20:58, 6 người dùng, tải trung bình: 0,43, 0,53, 0,50
NGƯỜI DÙNG TTY ĐĂNG NHẬP @ IDLE JCPU PCPU GÌ
tôi pts / 2 T619 1: 03 phút 0,98 giây 0,98 giây - / bin / bash
tôi pts / 3 09:55 6: 00 phút 0,43 giây 0,43 giây / bin / bash
tôi pts / 5 15:56 0,00 giây 0,23 giây 0,00 giây

(Đây là từ hệ thống Linux; định dạng trên OS X có thể hơi khác, nhưng thông tin phải giống nhau.)

Có thể có nhiều phiên đăng nhập; Xét cho cùng, UNIX được thiết kế để trở thành một hệ thống nhiều người dùng.


4

Bạn cũng có thể sử dụng lognamelệnh từ Sách hướng dẫn sử dụng lệnh chung BSD trong Linux hoặc MacOS để xem tên người dùng của người dùng hiện đang đăng nhập, ngay cả khi người dùng đang thực hiện một sudothao tác. Điều này rất hữu ích, chẳng hạn, khi sửa đổi crontab của người dùng trong khi cài đặt gói toàn hệ thống với sudo:crontab -u $(logname)

Per man logname:

LOGNAME(1)

NAME
    logname -- display user's login name

1
Đây chắc chắn là giải pháp sạch sẽ và dễ dàng nhất. Nó hoạt động bất kể người dùng đang thực hiện lệnh gì.
Maxime Viargues 21/02/19

2

Câu hỏi vẫn chưa được trả lời hoàn toàn, IMHO. Tôi sẽ cố gắng giải thích: Tôi có một mục crontab lên lịch cho một thủ tục lệnh bash shell, đến lượt nó thực hiện một số thao tác dọn dẹp các tệp của tôi; và khi hoàn tất, hãy gửi thông báo cho tôi bằng trung tâm thông báo OS X (kèm theo lệnh osascript -e 'display notification ...). Nếu ai đó (ví dụ như vợ tôi hoặc con gái tôi) chuyển người dùng hiện tại của máy tính sang cô ấy, để tôi ở chế độ nền, thì tập lệnh cron sẽ không thành công khi gửi thông báo.

Vì vậy, Ai là người dùng hiện tại có nghĩa là Có một số người khác trở thành người dùng hiệu quả để tôi ở chế độ nền không? Có stat -f "%Su" /dev/consoletrả về tên người dùng hoạt động hiện tại không?

Câu trả lời là có; vì vậy, bây giờ tập lệnh shell crontab của tôi đã được sửa đổi theo cách sau:

...
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

2

lấy tên người dùng trong MAC terminal thật dễ dàng ...

Tôi thường sử dụng whoamitrong thiết bị đầu cuối ...

Ví dụ, trong trường hợp này, tôi cần cài đặt Tomcat Server ...

nhập mô tả hình ảnh ở đây



1

Bạn cũng có thể truy xuất nó từ các biến môi trường, nhưng điều đó có lẽ không an toàn, vì vậy tôi sẽ đi với câu trả lời của Andrew.

printenv USER

Nếu bạn cần lấy nó từ một ứng dụng, chẳng hạn như Node, thì việc lấy nó từ các biến môi trường, chẳng hạn như

process.env.USER.


1

Xác định 'người dùng đang hoạt động'.

Nếu câu hỏi là 'ai là người dùng đã đăng nhập', thì 'tôi là ai' hoặc 'whoami' đều được (mặc dù họ đưa ra các câu trả lời khác nhau - 'whoami' chỉ báo cáo tên người dùng; 'tôi là ai' báo cáo trên thiết bị đầu cuối và thời gian đăng nhập quá).

Nếu câu hỏi là 'ID người dùng nào là ID hiệu quả cho trình bao', thì thường tốt hơn là sử dụng 'id'. Điều này báo cáo về ID người dùng và ID nhóm thực và hiệu quả, và cả ID nhóm bổ sung. Điều này có thể quan trọng nếu trình bao đang chạy SUID hoặc SGID.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.