Files along with their contents:-
~$cat a
aaa
aaa
aaa
~$cat b
bbb
bbb
bbb
~$cat c
ccc
ccc
ccc
Commands that I need explanation:-
~$cat 0< a
aaa
aaa
aaa
~$cat 0< a b
bbb
bbb
bbb
~$cat 0< a b c
bbb
bbb
bbb
ccc
ccc
ccc
I need an explanation as to why contents of file 'a' were printed when I executed ~$cat 0< a and why the contents of file 'a' were not printed when I executed ~$cat 0< a b or ~$cat 0< a b c.
0<is equivalent to just plain<, and so nobody ever says0<. (2) Nobody else seems to have explained the real answer to your question (or, at least, the entire answer), namely, your commands are equivalent tocat < a,cat b < a, andcat b c < a, because I/O redirection is not an argument, and is not visible directly to the command, and can be placed anywhere in the command line. So, in the first case,catis being run with no arguments, while in the other cases it is being run with filename argument(s).