getent passwd "$USER" | cut -d: -f5 | cut -d, -f1
Сначала извлекается строка текущего пользователя из базы данных passwd
(которая также может храниться в NIS или LDAP )
Визвлеченная строка, поля разделяются :
разделителями.Запись GECOS является 5-м полем, поэтому первая cut
извлекает это.
Сама запись GECOS , возможно, состоит из нескольких элементов - разделенных ,
- полное имя которого является первым.Вот что извлекает второй cut
.Это также работает, если в записи GECOS отсутствуют запятые.В этом случае вся запись является первым элементом.
Вы также можете присвоить результат переменной:
fullname=$( getent passwd "$USER" | cut -d: -f5 | cut -d, -f1 )
или обработать ее напрямую напрямую:
echo "$( getent passwd "$USER" | cut -d: -f5 | cut -d, -f1 )'s home is $HOME."
cat <<EOF
Hello, $( getent passwd "$USER" | cut -d: -f5 | cut -d, -f1 ).
How are you doing?
EOF