Bash ls 和命令管道
Bash ls and command pipe
我正在尝试使用 /etc/passwd
文件列出系统中用户的主目录,进行排序且不重复,这样就不会打印不存在的目录。
这是我的命令:
cut -f 6 -d ':' /etc/passwd | sort -su | ls -ld
它就像我只是 运行 ls -ld
一样,根本没有来自命令管道的参数。
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
参数传递
你可以使用 xargs
cut -f 6 -d ':' /etc/passwd | sort -su | xargs ls
你离得不远,在ls前加上一个xargs就够了:
cut -f 6 -d ':' /etc/passwd | sort -u | xargs ls -ld
我正在尝试使用 /etc/passwd
文件列出系统中用户的主目录,进行排序且不重复,这样就不会打印不存在的目录。
这是我的命令:
cut -f 6 -d ':' /etc/passwd | sort -su | ls -ld
它就像我只是 运行 ls -ld
一样,根本没有来自命令管道的参数。
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
参数传递
你可以使用 xargs
cut -f 6 -d ':' /etc/passwd | sort -su | xargs ls
你离得不远,在ls前加上一个xargs就够了:
cut -f 6 -d ':' /etc/passwd | sort -u | xargs ls -ld