gpt4 book ai didi

bash - 使用重定向标准输入调用 man 以在 BASH 脚本中显示帮助

转载 作者:行者123 更新时间:2023-11-29 09:32:47 26 4
gpt4 key购买 nike

为什么在 BASH 脚本中使用 man 和重定向的标准输入来显示帮助是一个坏主意或与所有(在合理范围内)版本的 BASH 不兼容?

该技术适用于我可以轻松访问的 2 个 BASH 版本:GNU BASH v. 4.3.11 和 4.3.30(均在 Linux 上)。在我看来,这是一种从脚本内部显示脚本帮助的优雅方式,下载它的人不太可能费心安装手册页,而且手册页已经写好了。

下面是我的意思的一个简单示例。当在命令行上使用帮助选项时,将调用 display_usage_message 函数,当函数返回时,脚本将调用 exit

#!/bin/bash

display_usage_message()
{
man /dev/stdin <<EOF

.TH SCRIPT 1 "01 Oct 2015" "1.0" "SCRIPT VERSION 1.0"

.SH NAME
Script \- whatever it does.

.SH SYNOPSIS
script options etc.

.SH DESCRIPTION
This is a description which is not very long. :)
EOF
}

display_usage_message
exit

谢谢。

编辑:根据 chepner 的评论,这种微小的变化是否可靠?

#!/bin/bash

display_usage_message()
{

temp_man_filename=$(mktemp -q -t "tmp.man.page.XXXXXX")

cat <<EOF >>$temp_man_filename

.TH SCRIPT 1 "01 Oct 2015" "1.0" "SCRIPT VERSION 1.0"

.SH NAME
Script \- whatever it does.

.SH SYNOPSIS
script options etc.

.SH DESCRIPTION
This is a description which is not very long. :)
EOF

man $temp_man_filename

rm $temp_man_filename
}

display_usage_message
exit

最佳答案

期望帮助消息是一个简短的——理想情况下,少于一屏——提醒可用的功能,而手册则相反,应该解释概念并记录错误消息、退出代码、操作限制、等等

更根本的是,将部分或全部文档嵌入源代码或与源代码结合是一种很好的做法,并积极推广,例如在 Knuth 的 Literate Programming和练习(可能不那么严格和正式)例如Perl POD和 Javadoc 作者。

顺便说一句,man 标记在当今时代感觉有些晦涩。也许您想要探索 POD 或 Markdown 作为更友好、更现代的替代品(尽管对于高级用途来说不是那么通用)。 POD 很容易嵌入到 shell 脚本中,格式化工具将安装在任何有 Perl 的地方。

关于bash - 使用重定向标准输入调用 man 以在 BASH 脚本中显示帮助,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32893076/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com