在外壳脚本中的管道输出上运行 ls



我必须在一个脚本中执行以下操作。

/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)

但是有很多方法,因为其他答案也将证明......

相关内容

  • 没有找到相关文章

最新更新