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

时间:2017-03-12 21:01:30

标签: bash docker terminal

我正在学习使用Docker三天。 在此期间我运行了像

这样的命令
var image1 = "images/image1.png";
var image2 = "images/image2.png";
var image3 = "images/image3.png";
var image4 = "images/image4.png";

var imageURLs = [
  image1,
  image2,
  image3,
  image4
];

function getImageTag() {
  var img = '<div class="pdiv2" style="background-image: url(';
  var randomIndex = Math.floor(Math.random() * imageURLs.length);
  img += imageURLs[randomIndex];
  img += ')"></div>';
  return img;
}

console.log(getImageTag()); // For StackOverflow output

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

我想知道为什么我必须有时使用 nc -lp 1234 而其他命令- 有什么逻辑吗?

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

2 个答案:

答案 0 :(得分:3)

单个破折号后面可以跟多个单字符标记。双破折号后跟一个多字符标记。

在你的情况下

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)

答案 1 :(得分:2)

这取决于命令。有些惯例,但没有一个被普遍遵循。

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

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

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

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

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