- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
为什么在 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/
如果我打开一个使用 apt 的 Linux shell包管理系统并执行 apt-cache search --names-only "(^man)+"为什么它匹配/输出如下内容: gman - X 的
我正在做一个本应帮助我们更好地在 Linux 系统上浏览命令行的实验室,但我却卡在了手册页上。 我们应该使用 man 命令来查找手册页部分的列表,但我似乎不知道该怎么做。我试过输入 man man 但
您好,我目前正在使用 Little Man Computer对于一个学校项目,我知道 LMC 有一个 ADD 和一个 SUB 功能。但是我知道 LMC 中没有乘法或除法函数,我想知道为什么会这样。 最
我想从字符串 '/?user=hello&user=man&user=' 中提取 'user=' 之后的任何字符串。在这种情况下,我会得到 'hello'、'man' 和 ''。 我被困在这里了: >
Haskell 中每个函数都有手册页吗?换句话说,我可以在某处输入 man fst 并获取有关该函数的手册或帮助页面吗?我发现大量的功能势不可挡! 我正在使用 GHC 和 GHCi。 最佳答案 我不知
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 这个问题似乎不是关于 a specific programming problem, a softwar
在 Git Bash 中,他们给我一个返回“man”命令的错误 $ man git bash: man: command not found 我的 Git 版本: $ git --version gi
今天我注意到我的一位主机被困在: systemd[1]: Starting Rotate log files... systemd[1]: Starting Daily man-db regenera
我只想在 shell(或 perl)脚本中获取 MAN 页面的特定部分并打印它。 例如:仅 MAN 页面的 SYNOPSIS 部分 有没有标准的方法来做到这一点? 问候, 阿南丹 最佳答案 据我所知,
一直在阅读 MitB 攻击,有些事情让我担心。 来自 WIKI : The use of strong authentication tools simply creates an increased
我有一个想法,但不知道是否可以这样做: 是否可以编写一个 USB 摄像头驱动程序,该驱动程序可以将视频源多路复用到任何需要它的软件? 一种“中间人”司机:) 最佳答案 如果需要 Linux 驱动程序,
我必须在OpenCV中执行此图像之间的圆形和矩形的检测以及检测: 我正在尝试: import cv2 import numpy as np cv2.namedWindow("jan", cv2.WIN
在我必须调整的软件中,man 文件位于 doc/ 下,还有一个简单的 Makefile.am 文件: man_MANS = software.1 EXTRA_DIST = $(man_MANS) 安装
我已经使用 android studio 开发了一个应用程序并生成了 sign apk 并放到了网络上,但是如果我在设备上下载 apk 文件将其重命名为 .apk 到 .man 并且在我将 .man
在 man git 页面中我读到了这个字符串: See gittutorial(7) to get started, then see Everyday Git[1] for a useful min
已关闭。此问题不符合Stack Overflow guidelines 。目前不接受答案。 这个问题似乎不是关于 a specific programming problem, a software
我正在尝试创建一个 man 脚本,但没有成功。我应该将 testScript.1 文件放在我的文件中的哪个位置,以便它可以作为手册页直观地工作? 到目前为止,我已经尝试将其存储在我的主目录中两个新创建
我认为问题已经很清楚了——是否有类似“man”的命令来列出结构成员? 例如“FILE”结构,我想知道包含文件描述符ID的FILE成员。 最佳答案 FILE 是不透明的。成员与你无关,除非你正在破解 C
我正在开展一个项目,该项目应使用从 iPhone 摄像头拍摄的视频或照片来检测人行横道上的“绿人”或“红人”是否亮起。 到目前为止,我已经尝试过图像 mask 、轮廓和特征检测。 我编写的最后一个程序
我正在为一个程序编写手册页,源代码如下所示: .TH prog 1 "26 AUG 2010" "Version 0.1" "Center header" .NAME prog \- runs a p
我是一名优秀的程序员,十分优秀!