我目前正在参加Unix / Linux课程的介绍,我们遇到了一个问题,导师和我不同意。
cp -i file1 file2
前面的命令是哪个?
我坚持认为它是 E 。上述所有的。教练已经确定了 D 。
很明显, A , B 和 D 都是正确的。挂断是 C 以及-i
标志是否都是选项和参数。
我的逻辑是所有选项都是参数,但并非所有参数都是选项,因为列出了多个真实答案,那么在多选问题传统中答案很可能是 E 所有以上。
我无法在这个问题上找到吸烟枪,并认为我会把它扔给主人。
答案 0 :(得分:10)
我知道这是一个旧帖子,但我想为其他可能会遇到类似分歧的人添加以下内容。
$ ls -l junk
-rw-r--r-- 1 you 19 Sep 26 16:25 junk
"命令行上程序名称后面的字符串,例如-l
上例中的junk
被称为程序的参数。参数通常是命令使用的文件的选项或名称。"
Brian W. Kernighan& Rob Pike," UNIX编程环境"
答案 1 :(得分:2)
长期权的强制性参数对于空头期权也是强制性的。
这似乎意味着在这个特定问题的背景下,至少,你应该不认为选项是参数。否则它变得非常递归并且毫无意义。
我认为教练应该接受你的解释,这对于大多数典型案例来说真的是分裂。
答案 2 :(得分:0)
嗯......我个人喜欢区分选项和参数,但是,技术上可以说选项是参数。我会说你是对的,但我认为你的导师决定 D ,因为他不希望你让他们感到困惑。例如,以下命令等同于上面的命令...:
ARG1="-i" ; ARG2="file1" ; ARG3="file2" ; cp $ARG1 $ARG2 $ARG3
ARG1="-i" ; ARG2="file1" ; ARG3="file2" ; cp $ARG2 $ARG1 $ARG3
ARG1="-i" ; ARG2="file1" ; ARG3="file2" ; cp $ARG2 $ARG3 $ARG1
......而cp $ARG1 $ARG3 $ARG2
则不一样。我会说选项是一种特殊的参数。
答案 3 :(得分:0)
这就是我的教学方式,在这种情况下说:
cp -i file1 file2
正确答案是A B和D,但不是C.
由于-i
是一个选项,file1
和file2
是参数。通常,选项被视为更改应用程序或命令的行为,而不作为参数。
我认为由于它是-i
的行为更改选项(或参数),您是否将cp
视为原始应用程序的参数,这取决于语义,但它在英语中被认为是选项不是争论。
这就是我如何定义差异并保持命令的两个部分之间的差异。
作为另一个命令示例,cronjobs。我经常使用PHP cronjobs,我通常都有与命令相关的选项和参数。总是使用选项(在我看来)来定义额外的行为,而参数旨在为应用程序及其行为提供完成操作所需的数据。
我同意@unwind这是分裂的事实,实际上很多时候归结为情景和观点。他甚至真的标记它真是太糟糕了,他应该知道这是一个主观问题。当充满主观问题时,测试是完全不公平的。
答案 4 :(得分:0)
我认为“论据”一词在不同的语境中以不同的方式使用,这似乎是分歧的根源。但是,为了支持你的立场,请注意最有可能编写cp
的C运行时将程序入口点声明为main(argc, argv)
(类型省略),这似乎至少表明那些设计了C架构/库/等。将选项视为参数的子集。当然,选项可以有自己的参数(不同的上下文)等等。