Vivarium · Layer 2 · Docker (catalogue)

find … | xargs cmd はファイル名中の空白に対して安全でない

xargs は既定で stdin を空白で分割する。パイプライン find . -name '*.txt' | xargs grep -l 'secret' は、パスに空白・タブ・改行を含むファイルをすべて黙って取りこぼす。xargs が空白区切りの各トークンを別々の引数として grep に渡すため。対処である find … -print0 | xargs -0 … は NUL バイトを区切りに使う——NUL はファイル名に決して現れない。

CI verdict スナップショット

verdict スナップショットを読み込み中…

自分で再現する

docker run --rm ghcr.io/aletheia-works/vivarium-find-xargs-whitespace:latest

初回 pull は約 10 MB (alpine:3.19 + GNU findutils)。実行は 1 秒未満。Dockerfile と repro.sh は レシピディレクトリ にある。

CI スナップショットの出力

Initialising…
(読み込み中…)