【发布时间】:2016-06-18 03:36:13
【问题描述】:
我正在尝试使用/etc/passwd 文件列出系统中用户的主目录,并排序且不重复,这样不存在的目录就不会被打印出来。
这是我的命令:
cut -f 6 -d ':' /etc/passwd | sort -su | ls -ld
就好像我只是运行ls -ld,根本没有来自命令管道的参数。
【问题讨论】:
标签: bash shell unix command-line-arguments ls
我正在尝试使用/etc/passwd 文件列出系统中用户的主目录,并排序且不重复,这样不存在的目录就不会被打印出来。
这是我的命令:
cut -f 6 -d ':' /etc/passwd | sort -su | ls -ld
就好像我只是运行ls -ld,根本没有来自命令管道的参数。
【问题讨论】:
标签: bash shell unix command-line-arguments ls
ls 不采用管道输出。但是,您可以使用前向引号在目录列表上执行它:
ls `cut -f 6 -d ':' /etc/passwd | sort -su `
【讨论】:
您不能将内容通过管道传输到 ls.. 您可以执行以下操作:
ls -ld $(cut -f 6 -d ':' /etc/passwd | sort -su)
通过生成一个新的 bash 来执行 cut | sort 并将其作为 ls 参数传递
【讨论】:
ls -ld $("cut -f 6 -d ':' /etc/passwd | sort -su") 并且bash 说它是一个未知命令,为什么?
" " 中的$( )。您应该直接传递命令;)
你可以使用xargs
cut -f 6 -d ':' /etc/passwd | sort -su | xargs ls
【讨论】:
你不远了,在ls前加个xargs就够了:
cut -f 6 -d ':' /etc/passwd | sort -u | xargs ls -ld
【讨论】: