Unix 用户可以在 中列出他们的真实姓名/etc/passwd/
。该finger
命令可以显示真实姓名。可以ls -l
在文件旁边显示文件所有者的真实姓名吗?
如果不能直接做到这一点,那么通过ls
管道传输输出以实现此结果的最佳方法是什么?听起来像一份工作- 用作查找表来覆盖的第三列。ls -l
finger
awk
ls -l | finger
ls -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
请注意,这不是最好看的输出,因为它没有完美对齐,但它仍然可以工作。