У меня есть несколько функций, определенных в моем .bashrc
, предназначенных для интерактивного использования в терминале. Я обычно предшествовал им с комментарием, описывающим его предполагаемое использование:
# Usage: foo [bar]
# Foo's a bar into a baz
foo() {
...
}
Это хорошо, если вы просматриваете исходный код, но приятно запускать type
в терминале, чтобы получить быстрое напоминание о том, что делает функция. Однако это (понятно) не включает комментарии:
$ type foo
foo is a function
foo ()
{
...
}
Что заставило меня задуматься: "Не было бы неплохо, если бы такие комментарии сохранялись, чтобы их type
можно было отображать?" И в духе строк документации Python я придумал это:
foo() {
: Usage: foo [bar]
: "Foo's a bar into a baz"
...
}
$ type foo
foo is a function
foo ()
{
: Usage: foo [bar];
: "Foo's a bar into a baz";
...
}
Теперь использование включено прямо в type
вывод! Конечно, как вы можете видеть, цитирование становится проблемой, которая может быть подвержена ошибкам, но это приятнее для пользователя, когда оно работает.
Итак, мой вопрос, это ужасная идея? Существуют ли лучшие альтернативы (например, функции man
/ info
для) для предоставления пользователям функций Bash дополнительного контекста?
В идеале мне бы хотелось, чтобы инструкции по использованию располагались рядом с определением функции, чтобы люди, просматривающие исходный код, также получали выгоду, но если есть «правильный» способ сделать это, я открыт для альтернатив.
Отредактируйте все эти довольно простые вспомогательные функции, и я просто хочу получить немного дополнительного контекста в интерактивном режиме. Конечно, для более сложных скриптов, которые разбирают флаги, я бы добавил --help
опцию, но для них было бы несколько обременительно добавлять флаги помощи ко всему. Возможно, это просто цена, которую я должен принять, но этот :
хак, кажется, работает достаточно хорошо, не делая исходный текст намного сложнее для чтения нашего редактирования.
источник
--help
опцию.--help
также неинвазивна, что, я думаю, является моим основным критерием в этом случае. Я могу в конечном итоге использовать этот:
трюк, поскольку он более точно соответствует моему сценарию использования, но я благодарен вам за то, что вы указали, что его не сложно поддержать--help
и что большинство пользователей ожидают этого.getopts
.