我发现查找手册的概要很难阅读替代文字http://files.getdropbox.com/u/175564/syntax_manual.png
假设您正在查找具有777权限的目录。 Pixelbeat的build议是
find -type d ! -perm -777
我的OS / X给出了以下内容
find: illegal option -- t find: illegal option -- y find: illegal option -- p find: illegal option -- e find: d: No such file or directory
使用简介作为帮助时,我不确定的事情
-type : 我可以清楚地testing这个,但我想学习阅读手册更好,使我不需要帮助。 我们再来看一个Grep手册的例子。
替代文字http://files.getdropbox.com/u/175564/grep_manual.png
它有一个明确的概要,虽然我只是用一条线。 我可以直接看到,我们可以通过
grep -r "masi" .
您如何阅读与查找手册类似的手册?
首先要意识到的是并不是所有的查找命令都是相同的。 在Linux系统上find的发现不同于那些基于BSD的系统(如OSX)。 你要引用的是Linux。
对于find命令,“-type”选项是一个expression式,并且必须位于path之后。 如果你进一步阅读手册页,它将描述哪些选项是expression式。
感叹号是否定的。 这是它返回除了权限为777的东西之外的所有东西。
命令“ find -type d!-perm -777 ”是无效的,因为在expression式之前没有包含path。 你可以使用一个path。 如果想要当前目录。
回到主要问题。 有时仅仅阅读手册页的摘要是不够的,其实你必须阅读其余部分。 有些命令非常强大,除非您阅读或至less浏览整个文档,否则您将无法了解如何使用该命令。 如果存在这些例子,或者如果他们不在线上去查找一些例子,这也是有帮助的。
你没有指定目录
find . -type d ! -perm -777
您引用的手册页指出, path名应该在expression之前。 所以在这种情况下,点“。” 出现在“ -type d … ”之前。 后者本身不是select。 实际上, -type和-perm是布尔expression式的一部分,它会查找每个文件。
无法看到在哪里放置选项types
-type不是一个选项,它是一个expression式。 所以它在参数列表的末尾。 如果向下滚动手册页,则会find一个标题为“expression式”的部分,其中详细介绍了此参数的所有可用选项。
不明白为什么我们需要两行来概要说明:似乎强调许多PATH是可选的
程序可以用参数pathname或-f pathname来调用。 根据经验,方括号内的任何参数都是可选的。 但那些不是,是强制性的。 这就是为什么你的查找命令不起作用 – 因为它有任何“path名”之前的“expression式”。 这些圆点表示可以使用多于一个的path名参数。
为什么Pixelbeat在命令中使用感叹号?
我看不到你给的链接中的指定命令。 但..
感叹号可以用来否定下面的expression式。 所以命令find . -type d find . -type d会查找目录并find . ! -type d find . ! -type d find . ! -type d会查找除目录外的所有内容。 尽pipe用前面的反斜杠来避开感叹号是可取的,所以你的shell不会解释它。 它也可以与-not交换。
在概要中,括号内的项目是可选的,替代项由pipe道字符(竖线)分隔。 如果选项是可选的,它们将出现在由pipe道分隔的双方括号中。 强制性参数不带任何括号。 可能重复的参数后跟椭圆( ... )。
有时概要太复杂,不能合并成一行。 而且,有时一个版本的结果与另一个版本的结果明显不同,或者是相互排斥的。 所以在你的grep的例子中:
grep [OPTIONS] PATTERN [FILE …]
grep [OPTIONS] [-e PATTERN | -f文件] [文件…]
OPTIONS和FILE是可选的。 第一个版本是比较常见的。 第二个版本适用于( -e )需要保护以模式开始的模式或-f模式在文件中的特殊情况。 正如你所看到的,这些不同于更基本的第一个版本。 简介可能是这样的:
grep [OPTIONS] [PATTERN | -e PATTERN | -f文件] [文件…]
但是,阅读起来比较困难,这只是一个简单的例子。 想象一下,比如mount更复杂。 而且,当然,还有没有概要的man页,因为它几乎是不可能的(例如bash )。
当我阅读一个man页时,我会寻找一个与我正在寻找的内容最相似的摘要。 如果有一个是明显的,那么我将扫描( vgrep )或者从简介或从我所知道的要完成的事情中search术语或关键词。 我作为我的读者less ,所以我使用/命令来启动search。 有时 ,我发现info文档是更完整或有用的,我用类似的方式。
是的我的Mac OS X安装find的手册页有点误导。 简介列出了expression式的结尾,但逻辑上以“expression式”开头的部分被分成两部分,以“主体”和“运算符”开头。 我总是阅读“说明”的前几行,所以应该注意的是他们在这里澄清了这个问题:
DESCRIPTION The find utility recursively descends the directory tree for each pathname listed, evaluating an expression (composed of the ``primaries'' and ``operands'' listed below) in terms of each file in the tree.
这最终应该会让你觉得很奇怪,因为它是以“ – ”开始的非选项参数,实际上是必须在path前面的expression式。
我对man page的最有帮助的build议是学习你的寻呼机的命令。 默认情况下似乎less ,在这里你可以用<去开始>去结束,和/或? 向前或向后search模式(如“/ -type”)。 Control-f和space前进一页, Control-b备份页面。 还有一个xman ,你可以inputControl-s来search你的标题为find的manpage。 我也喜欢apropos命令。