在联机帮助页中xclip
-selection
specify which X selection to use, options are
"primary" to use XA_PRIMARY (default),
"secondary" for XA_SECONDARY or
"clipboard" for XA_CLIPBOARD
Note that only the first character of the selection specified with the -selection option is important.
This means that "p", "sec" and "clip" would
have the same effect as using "primary", "secondary" or "clipboard" respectively.
以下为使用剪贴板选择的工作原理
xclip -sel clip < ~/.ssh/id_rsa.pub
联机帮助页说clipboard
可以缩短为clip
,但没有说-selection
可以缩短为-sel
。
那么为什么它有效呢?用于指定选项的此功能是否属于xclip
或除此之外还属于许多其他应用程序xclip
?
答案1
xclip
使用 X Toolkit 库来进行选项解析。所有选项都可以缩写。如果存在歧义,该库只会给出错误。
当然,选项是-select
可以缩写为-sel
(甚至可能-s
)之类的东西。
xterm
使用相同的库,相同的行为。它使用特殊情况(库外)使-v
命令成为 等的唯一缩写-version
。
X Toolkit 使用单个破折号-
作为选项,并且不区分“短”和“长”,因为它不是getopt
.正如我在中指出的-
单字符选项用单破折号,--
单词用双破折号?,它与 GNU getopt 大约在同一时间引入,它做过延长getopt
。这是在 POSIX 出现之前,但是AT&T
getopt
经过多年的使用,确立了其在单字符选项中的作用。 GNUgetopt
使用双破折号--
来表示长的选项。
xclip
注意一个很长的题外话,您可以从其阅读 GNU getopt 的源代码(与 无关)git 存储库,例如,
369 Long-named options begin with `--' instead of `-'.
370 Their names may be abbreviated as long as the abbreviation is unique
371 or is an exact match for some defined option. If they have an
372 argument, it follows the option name in the same ARGV-element, separated
373 from the option name by a `=', or else the in next ARGV-element.
374 When `getopt' finds a long-named option, it returns 0 if that option's
375 `flag' field is nonzero, the value of the option's `val' field
376 if the `flag' field is zero.
答案2
最近的联机帮助页(至少)说:
只要选项保持明确,就可以缩写。例如,可以使用-d或者-显示代替-展示。然而,-v无法使用,因为它不明确(它可能是缩写-详细或者-版本),因此它将被解释为文件名。
这意味着-se
对于 来说 足够了-selection
,但从助记角度来看,它不如-sel
。