我正在运行 tcsh shell。
-l
我对中的选项有疑问set -l
。
当我查看 man 的命令时set
,我没有看到-l
参数。
使用 tcsh shell 时,-l
参数的含义是什么?
在哪里以及如何找到此信息?
答案1
你看错地方了。这是来自tcsh(1)
手册页:
set set name ... set name=word ... set [-r] [-f|-l] name=(wordlist) ... (+) set name[index]=word ... set -r (+) set -r name ... (+) set -r name=word ... (+) The first form of the command prints the value of all shell variables. Variables which contain more than a single word print as a parenthesized word list. The second form sets name to the null string. The third form sets name to the single word. The fourth form sets name to the list of words in wordlist. In all cases the value is command and filename expanded. If -r is specified, the value is set read-only. If -f or -l are specified, set only unique words keeping their order. -f prefers the first occurrence of a word, and -l the last.
所以set -f list=(foo bar baz foo)
将设置list
为(foo bar baz)
,
但set -l list=(foo bar baz foo)
将设置list
为(bar baz foo)
,
并将set list=(foo bar baz foo)
其设置为(foo bar baz foo
),保留重复项。
唯一的区别是它如何处理单词列表中的重复项。这个功能在 classic/real 中不存在csh
,它现在本身是不受阻碍的开源,并且(如果我没记错的话)是csh
许多系统上的默认功能。
答案2
在 TENEX C shell 的手册中,而不是set
. TENEX C shell 手册的相关部分-l
在其命令概要中具有第四个set
:
放 设置名称... 设置名称=单词... 设置 [-r] [-f|-l] 名称=(单词列表) ... (+) 设置名称[索引]=单词... 设置-r (+) 设置 -r 名称 ... (+) 设置 -r 名称=单词 ... (+)并在下面的描述中讨论它。
在手册中查找 shell 内置命令,了解它们内置于的 shell。您查看的手册页set
可能已经告诉您这样做。 FreeBSD 的手册set
确实做到了:
概要 请参阅相应 shell 手册页中的内置命令说明。