我必须在一个脚本中执行以下操作。
/etc/passwd file to display user home directory ownership:
ls -lLd /<usershomedirectory>
我可以按如下方式 grep 主路径,请帮助我根据使用单行脚本标识的用户主路径在主路径上运行 ls。
grep "" /etc/passwd | cut -f 6 -d :
更新
如何做到这一点 更多 ls
# ls -al /<usershomedirectory>/.login
# ls -al /<usershomedirectory>/.cschrc
# ls -al /<usershomedirectory>/.logout
# ls -al /<usershomedirectory>/.profile
# ls -al /<usershomedirectory>/.bash_profile
# ls -al /<usershomedirectory>/.bashrc
# ls -al /<usershomedirectory>/.bash_logout
# ls -al /<usershomedirectory>/.env
# ls -al /<usershomedirectory>/.dtprofile
# ls -al /<usershomedirectory>/.dispatch
# ls -al /<usershomedirectory>/.emacs
# ls -al /<usershomedirectory>/.exrc
您可以使用反引号/命令输出替换:
ls -lLd "$(grep "^$username:" /etc/passwd | cut -f6 -d: )"
或管道到xargs:
grep "^$username:" /etc/passwd | cut -f 6 -d: | xargs -r ls -lLd
(我还添加了一些更多的 grep 上下文,以确保用户完全匹配并支持文件名中的空格)
~ 扩展可以与 eval 一起使用,不确定这是否是一个好主意:
eval "ls -lLd ~$username"
正如@EtanReisner评论的那样,通常的方法是:
ls -lLd ~user
但是,如果您必须使用/etc/passwd
解析和替换,我会推荐以下特定配方:
ls -lLd $(awk -v acct="user" -F: '$1 == acct { print $NF-1 }' /etc/passwd)
但是有很多方法,因为其他答案也将证明......