ReadonlyfdThe explicit source fd (2> f → 2), or null when omitted.
ReadonlyopThe operator as written: >, >>, >|, &>, &>>, <, <<, >&, …
ReadonlytargetThe redirection target, quote-unwrapped and $HOME-canonicalized like every
other word. null when the target is dynamic (> "$out", > $(f)) — present
but unresolvable, never silently dropped. For an fd-dup (2>&1) this is the
fd, not a path; for a heredoc it's the delimiter.
ReadonlywritesTrue iff this redirection CREATES OR MODIFIES the file named by target —
>, >>, >|, &>, &>>. False for input (<, <<, <<<) and for fd
duplication (2>&1), whose "target" is an fd, not a path.
One redirection attached to a simple command (
cmd > f,cmd 2>> log).The parser used to DROP these:
echo x > out.mdnormalized to a leaf whose every field (head/argv/args/flags/assigns) mentioned onlyechoandx, so the file the command actually WROTE appeared nowhere. That made the single most common write shape invisible to any matcher built on the leaf.