Bash ls和命令管道

时间:2016-03-04 11:55:08

标签: bash shell unix command-line-arguments ls

我正在尝试使用/etc/passwd文件列出系统中用户的主目录,已排序且无需重复,以便不会打印不存在的目录。 这是我的命令:

cut -f 6 -d ':' /etc/passwd | sort -su | ls -ld

就好像我只是在命令管道中没有参数的情况下运行ls -ld

4 个答案:

答案 0 :(得分:4)

ls不接受管道输出。但是,您可以使用前向引号在目录列表中执行它:

ls `cut -f 6 -d ':' /etc/passwd | sort -su `

答案 1 :(得分:4)

您无法将内容传递到ls ..您可以执行以下操作:

ls -ld $(cut -f 6 -d ':' /etc/passwd | sort -su)

通过生成一个新的bash来执行cut | sort并将其作为ls参数传递

答案 2 :(得分:2)

您可以使用xargs

cut -f 6 -d ':' /etc/passwd | sort -su | xargs ls

答案 3 :(得分:2)

你并不遥远,只需在ls:

之前添加一个xargs
cut -f 6 -d ':' /etc/passwd | sort -u | xargs ls -ld