terminal(bash?)/ Docker:背后的逻辑 –

三天,我正在学习与Docker合作。 在这期间,我跑了类似的命令

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

  nc -lp 1234 

我想知道为什么我有时需要使用一个-和其他命令a --有没有逻辑?

关于我的问题:我知道这不是一个好主题。 我为此感到抱歉。 这个问题发生在使用Docker的时候,但是我不知道这个主题更多的是terminal还是docker主题。

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

在旧时代,选项是单个字母。 如果一个选项有一个参数,它可以跟随选项字母,有或没有中间空格( command -x foocommand -xfoo )。

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

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

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

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

单个短划线后可以跟多个单字符标志。 双短划线之后是单个多字符标志。

在你的情况

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

标志:

 rm (multi-character) t (single) i (single) net (multi-character) name (multi-character) 

 nc -lp 1234 

标志:

 l (single) p (single)