Вы можете разобрать ls
как @Cyrus, упомянутый в комментариях. Тем не менее, я предлагаю простой скрипт для этого, который вы можете сделать как исполняемый файл:
while read -r line
do
user=`echo "$line" | awk '{print $3}'`
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
Обратите внимание, что это не самый лучший вывод, так как он не выровнен идеально, но все равно должен работать.