我必须在一个脚本中执行以下操作。
/etc/passwd file to display user home directory ownership:
ls -lLd /<usershomedirectory>
我可以按照以下方式访问主路径,请根据使用单行脚本识别的用户主路径帮助我在主路径上运行ls。
grep "" /etc/passwd | cut -f 6 -d :
如何做更多的事情
# 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
答案 0 :(得分:6)
您可以使用反引号/命令输出替换:
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"
答案 1 :(得分:2)
正如@EtanReisner评论的那样,通常的做法是:
ls -lLd ~user
但是,如果你必须使用/etc/passwd
的解析和替换,我会推荐这个特殊的配方:
ls -lLd $(awk -v acct="user" -F: '$1 == acct { print $NF-1 }' /etc/passwd)
但是有很多方法,其他答案也会证明......