使用 `ls` 显示文件所有者的真实姓名

使用 `ls` 显示文件所有者的真实姓名

Unix 用户可以在 中列出他们的真实姓名/etc/passwd/。该finger命令可以显示真实姓名。可以ls -l在文件旁边显示文件所有者的真实姓名吗?

如果不能直接做到这一点,那么通过ls管道传输输出以实现此结果的最佳方法是什么?听起来像一份工作- 用作查找表来覆盖的第三列。ls -lfingerawkls -l | fingerls -l

(如果真实姓名不在查找表中finger但在查找表中,则相关问题:Bash 中的查找表文本替换

答案1

您可以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变量获取所有者的用户名(从 ls 输出的第 3 列),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

请注意,这不是最好看的输出,因为它没有完美对齐,但它仍然可以工作。

相关内容