string-join0 - join strings with zero bytes
string join [(-q | --quiet)] SEP [STRING...]
string join0 [(-q | --quiet)] [STRING...]
string join joins its STRING arguments into a single string separated by
SEP, which can be an empty string. Exit status: 0 if at least one join was
performed, or 1 otherwise.
string join0 joins its STRING arguments into a single
string separated by the zero byte (NUL), and adds a trailing NUL. This is
most useful in conjunction with tools that accept NUL-delimited input, such
as sort -z. Exit status: 0 if at least one join was performed, or 1
otherwise.
Because Unix uses NUL as the string terminator, passing the output
of string join0 as an argument to a command (via a command
substitution) won't actually work. Fish will pass the correct bytes along,
but the command won't be able to tell where the argument ends. This is a
limitation of Unix' argument passing.
>_ seq 3 | string join ...
1...2...3
# Give a list of NUL-separated filenames to du (this is a GNU extension)
>_ string join0 file1 file2 file\nwith\nmultiple\nlines | du --files0-from=-
# Just put the strings together without a separator
>_ string join '' a b c
abc
2021, fish-shell developers