我发现了两个命令的区别:

echo sum.txt| xargs cat

这将输出sum.txt的内容
echo sum.txt| xargs -0 cat

这将显示错误:
cat: sum.txt
: No such file or directory

我知道-0将把空字节作为分隔符。我认为新行的开头是:因为echo命令产生新行。不会产生如下输出:
cat: sum.txt: No such file or directory

但是如果echo生成新的行,为什么第一个命令可以成功?因为xargs默认使用空格作为分隔符。

最佳答案

我认为,如果你把cat替换为echo -n作为一个实验,情况会变得更加清楚。

echo sum.txt| xargs  echo -n
echo sum.txt | xargs -0 echo -n

在第一个例子中,xargs在换行符上断开并丢弃换行符,只留下sum.txt
在第二个示例中,xargs在第一个echo的输出结束时在EOF的末尾断开,从而产生字符串'sum.txt\n'

关于linux - 使用xargs和xargs -0的Bash命令,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44513592/

10-13 09:26