Это неочевидно, даже если вы читаете некоторые стандарты (например, , или , ).
Часть args командной строки - почти универсально - входные файлы.
Лишь в очень редких нечетных случаях входной файл указывается в качестве опции. Это случается, но это очень редко.
Кроме того, выходные файлы никогда не называются args . Они почти всегда предоставляются в виде именованных опций.
Идея в том, что
Большинство программ могут (и должны) читать со стандартного ввода. Аргумент командной строки -
является кодом для "stdin". Если аргументы не указаны, stdin является запасным планом.
Если ваша программа открывает какие-либо файлы, она также может открывать неограниченное количество файлов, указанных в командной строке. Оболочка облегчает это, расширяя подстановочные знаки для вас. [Однако Windows не делает этого для вас.]
Ваша программа никогда не должна перезаписывать файл без явных параметров командной строки, таких как '-o somefile', для записи в файл.
Обратите внимание, что cp
, mv
, rm
являются большими примерами программ, которые не соответствуют этим стандартам.