Вы можете разобрать ls
как @Cyrus, упомянутый в комментариях. Тем не менее, я предлагаю простой скрипт для этого, который вы можете сделать как исполняемый файл:
while read -r line do user=`echo "$line" | awk ''` name=`getent passwd "$user" | cut -d ':' -f 5 | cut -d ',' -f 1` echo $line | sed "s/$user/$name/" done < <(ls -lh | tail -n +2)
user
Переменный получает имя владельца (с 3 - го столбца вывода LS), name
получает настоящее имя этого имени пользователя, а затем на выходе ls
мы просто заменить имя пользователя с реальным именем, используя sed
.
Я не использовал finger
в своем примере, так как разбор /etc/passwd
файла менее подвержен ошибкам, и вам также не нужен внешний инструмент. ( finger
по умолчанию не установлен в Debian / Ubuntu)
Пример вывода:
-rwxr-xr-x 1 Pavlin Nikolov fanatique 41 Aug 29 15:13 cpu.sh -rwxr-xr-x 1 Pavlin Nikolov fanatique 193 Aug 28 11:36 httpingwrap.sh -rwxr-xr-x 1 Pavlin Nikolov fanatique 3.8K Aug 14 15:36 imgconv.py -rwxr-xr-x 1 Pavlin Nikolov fanatique 504 Oct 19 16:04 lsp -rwxr-xr-x 1 Pavlin Nikolov fanatique 77 Aug 28 14:24 mg -rwxrwxrwx 1 Pavlin Nikolov fanatique 386 Sep 14 15:02 mon-install.sh -rwxr-xr-x 1 Pavlin Nikolov fanatique 589 Sep 11 11:55 ping-wrapper.py
Обратите внимание, что это не самый лучший вывод, так как он не выровнен идеально, но все равно должен работать.