bash - 终端(bash?)/Docker:背后的逻辑-和-

标签 bash docker terminal

三天以来,我正在学习与Docker合作。
在此期间,我执行了以下命令

sudo docker run --rm -ti --net=example --name server ubuntu:14.04 bash 


 nc -lp 1234

我想知道为什么有时必须使用-,而对于其他命令则使用--有逻辑吗?

关于我的问题的主题:我知道这不是一个好话题。我对此感到抱歉。这个问题是在使用Docker时发生的,但我不知道---主题是否更是终端或Docker主题。

最佳答案

这取决于命令。有约定,但没有一个是普遍遵循的。

在过去,选项是单个字母。如果一个选项带有一个参数,则它可以跟在选项字母后面,中间可以有空格,也可以不带空格(command -x foocommand -xfoo)。

不带参数的选项可以 bundle 在一起,因此command -x -y可以写为command -xy。对于许多命令,甚至可以 bundle 确实带有参数的选项,最后指定的选项带有参数:command -x -y foocommand -xy foo。您问题中的nc -lp 1234就是一个例子。 lp是两个不同的选项。那也可以写成nc -l -p 1234

来自GNU项目的命令通常可以接受传统的短格式和长格式的选项,其中选项名称是一个完整的单词,只要缩写是唯一的即可。例如,ls具有-F选项,可将/附加到目录名称等等。 Gnu ls可以将其指定为--classify或缩写为--cl。为了避免歧义并向后兼容,旧式的单字母选项使用单个-,长格式的选项使用--

最后,某些命令采用由单个-引入的长名称选项; find命令就是一个例子。

唯一真正的解决方案是阅读您正在运行的特定命令的手册页。

关于bash - 终端(bash?)/Docker:背后的逻辑-和-,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42753103/

相关文章:

linux - 在特定键后输出下一个字符(正则表达式)

linux - 如何在 Fedora 中通过终端查找特定文件夹

shell - 如何通过终端将本地MySQL数据转储到远程MySQL服务器?

bash - 如何让 fish shell 像 bash 一样删除单词

php - PHP脚本中的错误不会传递回CRON

打开新终端时bash别名消失

django - 在Docker容器中看不到Django

docker - docker-compose 的两个 `command` 形式的行为是否不同?

bash - 在命令执行时间未结束时从命令跳转

node.js - 为 GKE kubernetes 集群选择 Node 大小