複数のファイルで操作を実行する一般的な方法は次のとおりです。これについて私を非難しないでください。
for f in $(ls); do …
スペースやその他の奇妙な文字を含むファイルから安全にするには、次の簡単な方法に従ってください。
find . -type f -print0 | while IFS= read -r -d '' file; …
ここ-d ''
に図のようにASCII NUL設定の略語を示します-d $'\0'
。
ところで、なぜそうなのか?なぜ''
そして$'\0'
同じですか? Bash Cルートの空の文字列は常にnullで終わるからですか?
ベストアンサー1
これman page of bash
内容は次のとおりです。
-d delim
The first character of delim is used to terminate the
input line, rather than newline.
文字列は通常 null で終わるため、空の文字列の最初の文字は null バイトです。 - 合理的だと思います。 :)
ソースは次のように書きました。
static unsigned char delim;
[...]
case 'd':
delim = *list_optarg;
break;
空の文字列の場合はdelim
null バイトです。