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

use*_*858 2 bash shell sh

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

/etc/passwd file to display user home directory ownership:

ls -lLd /<usershomedirectory>
Run Code Online (Sandbox Code Playgroud)

我可以按照以下方式访问主路径,请根据使用单行脚本识别的用户主路径帮助我在主路径上运行ls.

grep "" /etc/passwd | cut -f 6 -d :
Run Code Online (Sandbox Code Playgroud)

更新

怎么做更多的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
Run Code Online (Sandbox Code Playgroud)

eck*_*kes 6

您可以使用反引号/命令输出替换:

ls -lLd "$(grep "^$username:" /etc/passwd | cut -f6 -d: )" 
Run Code Online (Sandbox Code Playgroud)

或管道到xargs:

grep "^$username:" /etc/passwd | cut -f 6 -d: | xargs -r ls -lLd
Run Code Online (Sandbox Code Playgroud)

(我还添加了一些更多的grep上下文,以确保用户完全匹配并支持文件名中的空格)

〜扩展可以与eval一起使用,不确定这是不是一个好主意:

eval "ls -lLd ~$username"
Run Code Online (Sandbox Code Playgroud)