<$()>
would be valid bash syntax for commands that read from a file
(<
part) where file names are created using command substitution
($()
part) that redirect output to some other file (>
part). Example:
$ echo text > FILE
$ wc < "$(echo FILE)" > WC_OUT
$ cat WC_OUT
1 1 5
However, in the answer you linked to <$()>
is used in the parameters
to debugfs
. In man debugfs
it says:
stat filespec
Display the contents of the inode structure of the inode filespec.
and:
The filespec argument may be specified in two forms. The first form
is an inode number surrounded by angle brackets, e.g., <2>
In that case:
sudo debugfs -R "stat <$(stat -c %i FILE)>" /dev/sda5
would be expanded by the shell to the equivalent of this:
sudo debugfs -R "stat <4476834>" /dev/sda5
which is a valid debugfs
command. Check it with echo
:
$ echo sudo debugfs -R "stat <$(stat -c %i FILE)>" /dev/sda5
sudo debugfs -R stat <4476834> /dev/sda5
< >
is being passed todebugfs
.<$(...)>
would be shell syntax (not meaningful or valid, but shell syntax nonetheless) -- but inside double quotes,<
and>
are literal characters; the shell leaves them alone.