В чем разница между флагом, параметром и аргументом? [закрыто]

Чтобы удалить четвертый столбец,

$ cut -d, -f4 --complement example.csv > input.csv

Настройте параметр -f в соответствии с номером столбца.

Если файл CSV более сложен, вы можете использовать Perl и пакет Text :: CSV,

$ perl -MText::CSV -E '$csv = Text::CSV->new({binary=>1}); 
  while ($row = $csv->getline(STDIN)) 
  {
    print "$row->[0],$row->[1],$row->[2]\n"
  }' < example.csv > input.csv
14
05.09.2016, 10:36
2 ответа

Флаг - это тип опции, опция булева типа, по умолчанию всегда ложная (например, --verbose, --quiet, --all, --long и т.д.).

Опция указывает функции как действовать (например, -a, -l, --verbose, --output , -name , -c , etc), а аргументы указывают функции на что действовать (например, *, file1, hostname, database).

19
27.01.2020, 19:50

Не существует согласованных определений терминов "опция", "аргумент" и "флаг", и нет центрального органа в мире разработки программного обеспечения, который мог бы обеспечить их использование. Это происходит со многими терминами: после 30 с лишним лет использования слова "каталог" мне теперь приходится иметь дело с людьми, использующими слово "папка", которые были сбиты с толку новой терминологией Microsoft.

В программировании консенсусные определения терминов могут возникать по-разному. В случае с "аргументом"/"опцией"/"флагом" канонические руководства и учебники по языкам программирования помогли обеспечить использование, как и термины, используемые в общих библиотеках.

Например, то, что вы вводите в командную строку после команды, часто называют "аргументами" команды, по аналогии с аргументами вызова функции, и это, вероятно, отчасти потому, что в руководстве по Си они называются "аргументами" (отсюда argc и argv). Библиотека Python argparse также помогает применить термин "аргумент". Однако я также видел, что их называют "параметрами".

Термин "опция" происходит от "optional", что подразумевает, что их можно не указывать. Библиотека getopt C является одним из вариантов использования этого термина. Но есть прецедент для "опций", которые на самом деле не являются необязательными: например, в руководстве argparse говорится, что можно создать "обязательную опцию" (хотя там же говорится, что это "обычно считается плохой формой"). Перед опциями часто ставится одинарное (-) или двойное (--, long-option) тире, но есть известные команды, которые не требуют и не применяют тире для опций (например, tar, ps и dd). Опция может сама принимать аргумент (например, -w80 и --color=always) или иногда несколько аргументов.

"Флаги", по моему опыту, то же самое, что и опции, но обычно не принимают аргументов и по сути представляют собой булевы переключатели "вкл-выкл".

В более широком смысле, поскольку у каждого программиста есть возможность попытаться найти какой-то стандартный способ делать вещи и называть их, но он также может изобрести колесо без особых дополнительных затрат, именование никогда не будет последовательным. И как только вы задокументируете свой код, и станет ясно, какое новое значение вы придали этим словам, приведя примеры, эти названия и значения могут просто прилипнуть, если найдется достаточно людей, которые воспримут их из вашего кода.

28
27.01.2020, 19:50

Теги

Похожие вопросы