📅  最后修改于: 2023-12-03 15:35:51.227000             🧑  作者: Mango
xargs
是一个命令行工具,它允许用户将来自stdin的数据作为参数传递给其他命令。它也可以帮助用户构建复杂的管道,以将一系列命令链接起来。
xargs -0
是一个特殊的选项,它告诉 xargs
将输入解释为以NULL( \0)字节分隔的数据,而不是以空格分隔的数据。
xargs -0
有些时候, 传递给 xargs
的数据可能包含空格或其他特殊字符,这些字符可能导致 xargs
分隔不正确,从而破坏命令的正确性。
使用xargs -0
可以避免这种情况,它将数据解释为以NULL分隔的项,从而确保传递正确的参数。
例如,假设有一个目录,其中包含多个文件,文件名中包含空格。我们尝试在这个目录中查找文件名包含 "test" 的文件:
find . -name "*test*" | xargs rm -f
上面这个命令可能会导致误删除, 因为 xargs
假设文件名用空格分隔开。因此,可以改成以下命令,使用 -0
选项:
find . -name "*test*" -print0 | xargs -0 rm -f
这个命令将 $'\0'
用作文件名分隔符, 从而保证传递正确的参数。
xargs -0
使用 xargs -0
的方式与普通的 xargs
使用方式相同。
例如,假设有一个包含多条信息的文件data.txt
, 每个信息以空格或换行符分隔,并且以 NULL 分隔。
$ cat data.txt
foo bar
baz qux
quux
要将每条信息传递给命令 mycommand
,可以使用以下命令:
$ tr '\n' '\0' < data.txt | xargs -0 mycommand
上面的命令将换行符替换为 NULL, 并使用xargs -0
将每个信息传递给 mycommand
命令。
xargs -0
可以确保将数据解释为以NULL分隔的项,从而避免由特殊字符引起的问题,它与普通的 xargs
使用方式相同。如果您的数据包含空格或其他特殊字符,则应使用xargs -0
,以确保传递正确的参数。
参考链接