Применение искинов - шоссе империализма (Стенгазета русификаторов ИТ)

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.



Параметры командной строки

Сообщений 1 страница 4 из 4

1

Кодировка в линуксе UTF-8 (часто, как правило).

Есть стандарт IEEE Std 1003.1™-2017 (он же POSIX.1), который описывает что
у программ вообще бывают аргументы командной строки. Это цепочки символов, разделённых пробелами.
Там ещё надо поразбираться что и как, и обязательно ли именно пробелами, но это всё детали bash и неважно.

Есть более специфичный стандарт System V 64 ABI, в котором написано всё то же самое, но более конкретно.

Есть стандарт на язык Си (это для красоты):
https://en.cppreference.com/w/c/language/main_function

И есть документация к конкретным реализациям (gcc или clang),
которые так или иначе должны опираться на System V 64 ABI, как должен это делать и ассемблерный код.

Что в этом хорошого, или наблюдаемого:
1) теперь мы точно знаем, что такое "аргумент" (и если это не то же самое, что "параметр", то надо искать определение параметра)
2) мы видим, что англоговорящие не ленятся переписать документы по несколько раз для каждого из применений.
Мы не пишем документы вообще (не странно ли?)

Ну так вот. Раз эти самые аргументы могут быть мультибайтными, и могут быть в UTF-8, они могут быть из русских букв.
Поэтому глядя на GNU Guidelines с его --help возникают вопросы:
1) а как это по-нашему:
--справка
или
--помощь
2) почему они это не интернационализировали
3) что будет если выводить страницы man в зависимости от локали (вместо того, чтобы зашивать в программу копию текста),
какие при этом минусы?

Кто вообще видел опыт подобной русификации аргументов?

0

2

«A parameter of a command line argument is a flag or option that
provides additional information about how the argument should be interpreted.
Parameters are usually preceded by a hyphen or slash in the command line.»

Т.е. и ключи и имена файлов - они все аргументы. Но параметры не все из них, а только ключи.

Отредактировано Лис (2024-10-14 21:24:52)

0

3

В сях есть две библиотеки для этого дела - argp и getopt.
первая более функциональная (и сложная),
поддерживает более сложные типы аргументов, обязательные и необязательные, со значением по умолчанию, аргументы, которые могут принимать несколько значений, и т. д. Предоставляет подробную и гибкую обратную связь о неверно указанных аргументах.

Обе библиотеки являются частью GNU проекта, поддерживают стандартные флаги GNU, такие как "--help" и "--version".

Видите, видите, тут они не аргументы, не параметры, не ключи. Они ФЛАГИ.
а ещё они бывают опциями. Тут без составления словаря (онтологии) не обойтись.

https://www.gnu.org/software/libc/manua … /Argp.html

https://www.gnu.org/software/libc/manua … etopt.html

You are correct that the option names (help and version) are presented only in one language,
which is a limitation of the current implementation.
This is because the option names are typically used as short flags (e.g., -h and -v) and are not intended to be user-facing.

However, if you still want to provide localized option names,
you can create custom wrapper functions around argp_parse()
to handle localized option names based on the user's locale.

Отредактировано Лис (2024-10-14 21:57:28)

0

4

Лис написал(а):

Поэтому глядя на GNU Guidelines с его --help возникают вопросы:
1) а как это по-нашему:
--справка
или
--помощь

Можно поступить проще.
В командной строке Windows для вывода справки по команде обычно используется ключ /?.
А т.к. в качестве разделителя директорий прямой слэш подходит лучше, чем обратный (имхо), то для вывода справки я бы последовал Unix-way и заменил / на -, т.е. использовал бы ключ -?.

Отредактировано alextretyak (Вчера 14:05:10)

0