答案1
很久很久以前,一些程序将命令行参数(例如)理解为“从行开始”+N
+42
氮”(不是“跳过氮行”,但是“跳过氮-1 行”,因为第一行是第 1 行)。我能找到的最古老的痕迹是tail
在Unix V7,但我不确定这是使用开始的地方。具有相同选项的重要程序是更多的。从 more 继承此语法的其他程序包括较少的,六,以及当今大多数其他文本编辑器。
随着时间的推移,这种语法逐渐被普遍化。到了 1980 年的 2.8BSD,更多的还支持从包含指定模式的第一行开始。到了 1985 年的 2.10BSD,+/PATTERN
六支持在启动时运行任意命令,泛化(并非所有版本的 vi 都支持这一点,例如+COMMAND
+/PATTERN
POSIX仅指定,但 nvi、Elvis 和 Vim 支持)。命令是-c COMMAND
前任命令,即您可以在 后键入的内容:
。
Less也支持广义(我不知道从什么时候开始,但那是在20世纪)。在 的情况下,就好像您在 less 开头后键入了字符作为输入,但在特殊情况下,它相当于并且您可以省略最后的。+COMMAND
+
+N
+g
+/PATTERN
Return
less '+>' /path/to/file
是该用法的一个示例:启动后执行命令>
(转到文件末尾)。你也可以写less +G
sinceG
和>
是同义词。您可以组合命令,例如less $'+>?foo\r' /path/to/file
转到最后一次出现的foo
。
让 Less 在启动时执行命令的另一种方法是将它们填充到LESS
环境变量中:LESS='+>' less /path/to/file
。如果less
由另一个程序调用,例如man
(例如:阅读和搜索长手册页)。
答案2
它是less
特定的(您可以通过运算符周围的引号来猜测这一点,以避免 shell 解释它)。参数+
告诉less
在打开文件后应用此命令,在本例中,>
这是转到文件末尾的击键。您可以通过打开一些(长)文件less
并点击 来尝试此操作>。 +>
只是一个捷径。您在野外会发现的一个相当常见的用例是调用less +## /path/to/file
where##
是您想要显示的行号less
。
至少+##
也适用于vi
和emacs
。