Как получить чье-то имя из /etc/passwd с помощью grep и whoami?

Наконец, я выполнил шаги, описанные в дубликате.:Как указать libgs использовать другую реализацию свободного типа?

Однако у меня не было файла libfreetype.so.6.14.0 для замены оригинального файла libfreetype.so.6, поэтому я просто удалил его (изменил его имя ), и это сработало. Не знаю, почему это сработало, но это сработало. Спасибо всем в любом случае!

-2
30.09.2020, 09:57
2 ответа

Я не уверен, что вы подразумеваете под first name, но если вы хотите получить настоящие имя и фамилию пользователя, хранящиеся в 5-м поле, вы можете:

grep "^$(whoami):" /etc/passwd | cut -d: -f5

А если очень нужно только имя:

grep "^$(whoami):" /etc/passwd | cut -d: -f5 | cut -d' ' -f1
1
18.03.2021, 23:01
getent passwd $(whoami) | cut -d: -f5 | cut -d, -f1 | cut '-d ' -f1

getent passwd, как правило, является лучшим способом получения информации о пользователе по сравнению с grep [pattern] /etc/passwd, поскольку getent также поддерживает LDAP или NIS, если система настроена на их использование для управления пользователями.

cut -d: -f5берет 5-е поле из ввода пароля, разделенного двоеточием -. Это поле традиционно называется gecos и содержит полное имя пользователя, а также другие данные.

Затем

cut -d, -f1берет первое подполе -поля gecos, разделенного запятыми -:, полное имя пользователя.

cut '-d ' -f1берет первое слово имени, которое должно быть именем пользователя.

Обратите внимание, что на последнем шаге фактически используется только первое слово имени, что на самом деле может быть неправильным. Подробнее об этом можно прочитать в популярном эссе Патрика Маккензи «Программисты верят в ложь, связанную с именами».

1
18.03.2021, 23:01

Теги

Похожие вопросы