我发现了两个命令的区别:
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/