为什么“xargs”不能与“echo”一起使用,但可以与“ls”一起使用?

为什么“xargs”不能与“echo”一起使用,但可以与“ls”一起使用?
root@home:~$ ls
root@home:~$ echo abc > z1
root@home:~$ echo xyz > z2
root@home:~$ ls
z1  z2
root@home:~$ ls | xargs -I{} cat {}
abc
xyz
root@home:~$ echo z1 z2 | xargs -I{} cat {}
cat: 'z1 z2': No such file or directory
root@home:~$ echo "z1 z2" | xargs -I{} cat {}
cat: 'z1 z2': No such file or directory

为什么 xargs 不适合 echo 但与 ls

答案1

echo "z1 z2"生成单行字符串:

z1 z2

ls生产两条生产线:

z1
z2

您可以使用 复制其行为echo -e,它将打印\n为换行符:

$ echo -e "z1\nz2" | xargs -I{} cat {}
abc
xyz

相关内容