Shell命令:相同的参数,不同的值

时间:2014-08-03 01:48:51

标签: shell

在Bash和其他shell中,许多命令可以使用执行不同操作的参数(实际上,"命令"是文件,但在这里请耐心等待)。例如,对于mongod -f ~/mongo.conf --quiet --port 8070 --bind_ip 127.0.0.2 --dbpath ~/data/db --ipv6,我们使用参数{{调用mongod命令(实际上是系统路径中某处的mongodmongod.exe文件) 1}},其中有Mongo守护程序使用-f ~/mongo.conf处的配置文件; ~/mongo.conf,它可以抑制错误和其他消息; --quiet,服务器使用端口8070; --port 8070,服务器使用IP地址127.0.0.2; --bind_ip 127.0.0.2,Mongo将其数据库存储在--dbpath ~/data/db~/data/db,其中Mongo广播在IPv6和IPv4上。

我要问的是shell通常如何处理使用多个参数的命令,这些参数相同但用户为每个副本输入不同的值? shell是使用第一个或最后一个副本还是中间的东西?它甚至允许多个相同的参数吗?例如,如果我尝试运行命令(再次,技术文件)--ipv6,告诉npm ls --depth 0 --depth 2 --depth 6 --depth 2包管理器最多列出依赖关系的深度级别,它是否会列出依赖关系最大值0,2或6级深?或者它会告诉我离开并停止浪费时间与轻浮?

我主要是针对基于UNIX的shell(例如bash,sh,csh和dash)提出这个问题,但欢迎提供有关cmd和Powershell等其他shell的信息。

1 个答案:

答案 0 :(得分:1)

  

“我要问的是shell通常如何使用命令来处理命令   多个参数“

举个例子:

npm ls --depth 0 --depth 2 --depth 6 --depth 2

shell将此视为命令名npm,后跟九个参数。 shell不知道或不关心那些论点是什么,或者人们可能会被那些不同的值“深度”混淆。 shell只接受这九个字符串并将它们作为参数传递给npm。这些值的解释完全取决于可执行文件中的代码。

某些可执行文件可能会返回错误消息。有些人可能会认为以后的值会更早覆盖。无论它做什么,都取决于编程可执行程序的人的心血来潮。这应该都在命令的文档中指定,而不是shell。