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