Различные способы передать аргументы консольным приложениям

Если Вы приезжаете в Distrowatch, можно искать все доступные дистрибутивы на основе, которые категоризировали как являющийся "Научным". Вы могли бы хотеть включать "Образовательный" также в тот поиск.

Я поразил страницу результатов поиска здесь.

Это результаты того поиска:

  1. Научный Linux (40) Научный Linux является перекомпилированным Red Hat Enterprise Linux, совместно разработанный Ферми Национальная Лаборатория Акселератора и европейская Организация по Ядерным исследованиям (CERN). Хотя это имеет целью быть полностью совместимым с Red Hat Enterprise Linux, это также обеспечивает дополнительные пакеты, не найденные в восходящем продукте; самыми известными среди них являются различные файловые системы, включая Кластерный Комплект и Глобальную файловую систему (GFS), FUSE, OpenAFS, Squashfs и Unionfs, поддержку беспроводных сетей с беспроводным встроенным микропрограммным обеспечением Intel, MadWiFi и NDISwrapper, Java Sun и Комплектом разработчика для Java (JDK), легким менеджером окон IceWM, R - язык и среда для статистического расчета и альпийский почтовый клиент.

  2. Био-Linux (118) Био-Linux является полнофункциональной, мощной, настраиваемой и легко обслуживаемой рабочей станцией биоинформатики. Био-Linux предоставляет больше чем 500 программ биоинформатики на основе Ubuntu. Существует графическое меню для программ биоинформатики, а также легкий доступ к системе документации биоинформатики Био-Linux и демонстрационным данным, полезным для тестирования программ. Пакеты био-Linux, которые обрабатывают типы данных последовательности нового поколения, могут также быть установлены.

  3. Poseidon Linux (188) Poseidon Linux является GNU/дистрибутив Linux, разработанный, прежде всего, для академического и научного использования. Это основано на Ubuntu LTS, улучшая его родителя путем добавления большого количества приложений для GIS/карт, численного моделирования, 2D/3D/4D визуализация, статистика, генетика, создания простой и сложной графики и языков программирования. Обычное программное обеспечение для ежедневного использования, такого как комплект LibreOffice, интернет-браузеры, мгновенный обмен сообщениями и клиенты чата также включено.

  4. CAELinux (241) CAELinux является живым дистрибутивом Linux DVD, выделенным автоматизированной разработке (CAD) и анализ конечных элементов. На основе Ubuntu это показывает полный программный продукт для профессионального 3D анализа FE от геометрии CAD. Это включает Salome, 3D пред/сообщение процессор, решатель FE физики Code_Aster non-linear/multi-, Код-Saturne и решатели OpenFOAM CFD, комплект мультифизики Elmer, GMSH, Netgen и enGrid 3D meshers, Октава GNU, Rkward, wxMaxima, Scilab, и т.д.

5
30.06.2016, 08:31
2 ответа
[118310]Dashes используются для обозначения [118791]опций[118792], которые изменяют поведение команды. Аргументы без тире обозначают основные параметры команды, часто это имена файлов.[12137]Одиночные дефисы обычно вводят опции, состоящие только из одной буквы. Несколько таких опций можно сгруппировать вместе, поэтому [118793]ls -a -l[118794] можно сократить как [118795]ls -al[118796]. Это была стандартная конвенция для большинства ранних команд Unix.[12138]Двойные дефисы вводят опции, которые являются целыми словами. Эта конвенция необходима для того, чтобы отличить их от описанной выше группировки. Этот стиль вариантов был популярен в версиях утилит GNU, потому что у них часто было так много возможностей, что у них заканчивались мнемонические одинарные буквы.[12139]Иногда вариант требует своего собственного параметра. Стили этого различаются: некоторые команды используют [118797]-o parameter[118798], некоторые используют [118799]-oparameter[118800], некоторые используют [118801]--option=parameter[118802], а некоторые допускают множественные формы.[12140]Есть также горстка команд, которые изобрели свои собственные, идеосинкратические стили аргументов. Обычно это очень старые команды, до того, как существовал консенсус по соглашениям об аргументах. Примерами этого являются [118803]tar[118804] и [118805]dd[118806]. [118807] find[118808] также необычно то, что это старая команда, которая использовала полные опции слова до создания конвенции [118809] --[118810]; ее аргументы практически являются собственным языком, так как ее потребности не вписываются в типичную парадигму [118811]command -options parameters[118812].[12141] Другая причина различий между командами заключается в том, что в Unix изначально не было функции библиотеки разбора аргументов. Лишь хорошо зарекомендовавшие себя функции [118813]getopt[118814] и [118815]getopts[118816] были созданы. Использование этих библиотек, по сути, заставляет следовать общепринятой практике. Но старые программы делали свой собственный, специальный разбор аргументов, и разные программисты принимали разные решения.[118321].
13
27.01.2020, 20:32
[118426]@Barmar правильный, но не хватает нескольких пунктов информации. Почему это происходит на самом деле только из-за того, как был написан код программы, а точнее, из-за того, что использовалось для разбора аргументов.[12192]Прежде чем я расскажу об этом подробнее, я хочу прояснить некоторую терминологию. Прежде всего, то, что вы называете "опциями", на самом деле тоже является аргументами. На самом деле все, что Вы вводите в командной строке, является аргументом (включая имя программы). Затем эти аргументы обычно хранятся в массиве (называемом [118938]argv[118939] на языке C). Затем программа выбирает, как (или если нужно) разобрать эти аргументы и вести себя соответственно. Теперь аргументы обычно принимают одну из трёх форм:[12193]флаги (не принимать аргумент; просто включать или выключать поведение)[12194]переключатели (принимать аргумент; изменять поведение на основе аргумента)[12195]параметры (простые данные не предназначены для изменения поведения)[12196]1[118947] и [118948]2[118949] часто называются [118950]Опции[118951] и предназначены для изменения поведения программы, но оба появляются в разных стилях (о чём также упоминал Бармар). Библиотека C [118952]getopt[118953] на самом деле позволяет проявлять большую гибкость в этой области. Несмотря на то, что в конвенции должны быть указаны опции либо в виде одной буквы, которой предшествует один дефис, либо в виде полного слова, которому предшествуют два дефиса, программы, написанные с помощью [118954]getopt[118955], на самом деле допускают эквивалентность (предполагая, что [118956]help[118957] в качестве индекса дана [118958]h[118959]):[12197]-h[119107], [119108]-h[119109], [119110]--help[12198] Однако, [118962]-help[118963] на самом деле не разрешено [118964]- getopt[118965] (поэтому, если инструмент использует [118966]-help[118967] для своего флага использования, то вы можете быть уверены, что он не был написан с помощью библиотеки [118968]- getopt[118969]). Это связано с тем, что [118970]getopt[118971] интерпретирует одиночный hypen для сигнализации списка комбинированных опций, поэтому он интерпретирует [118972]-help[118973] как [118974]-h -e -l -p[118975].[12199]Дополнительно, когда опции принимают аргументы (условно называемые "optargs"), есть несколько способов их задания. Далее следует, что индекс для [118976] opt[118977] является [118978]o[118979], [118980] и что [119112]opt[119113] требует оптарги [118981]¹- все они также эквивалентны: [12200]-о Параметр[119115], [119116]-о Параметр[119117], [119118] --опт=Параметр[119119], [119120]--опт Параметр[12201] Хотя библиотека [118984]getopt[118985] в настоящее время является широко используемым стандартом, Многие инструменты, которые существовали до этого (такие как [118986]tar[118987]), все еще используют свою собственную настройку разбора, поэтому [118988]tar -xjf[118989] эквивалентна [118990]tar xjf[118991]. [12202]TL;DR[118993]: [118994]getopt[118995] не всегда был рядом, поэтому программисты должны были разбирать аргументы по-своему. Но более новые инструменты, как правило, используют его, чтобы их поведение было вменяемым и предсказуемым.[12203]1 Существует не очень хорошо документированная возможность иметь опции, способные принимать опцию, но не [118996]требовать [118997]. Необязательные оптарги вызывают всевозможные раздражители и приводят к тому, что некоторые из наиболее распространенных способов указания опций недействительны (так как они были бы двусмысленны). К счастью, аргументы, которые принимают необязательный аргумент, не слишком распространены.[118449].
5
27.01.2020, 20:32

Теги

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