Kubernetes 中尾随“-”的目的是什么 apply -f -

Chr*_*row 3 linux options flags kubernetes

我通过了以下内容,它对从appsettings.json文件中创建 kubernetes 机密进行了试运行,然后将其通过管道传输到 kubernetes apply。我认为-f将采用--dry-run创建的秘密的文件名并在应用秘密时使用它,但我想知道尾随-是否有任何意义,或者它只是一个错字?

kubectl create secret generic test --from-file=appsettings.json --dry-run -oyaml | kubectl apply -f -

Mic*_*ton 16

-是对的参数-f选项,这意味着接受从标准输入,而不是一个名为输入。数百个 UNIX/Linux 命令都有这样的选项。

  • 不要将`-`(单破折号)与`--`(双破折号)混淆。正如这个答案所说,单破折号经常使用,用于指导应用程序使用`stdin`。双破折号如注释所说的那样工作,告诉应用程序不要将任何剩余的参数视为选项。适用于以破折号开头的文件,或者当应用程序可能将更多参数传递给它正在运行的任何内容时(例如,读取命令参数的脚本语言。) (5认同)

mar*_*rio 6

-字符可被理解为一个占位符针对其(利用管道输送的命令的输出|字符)。通过使用它,我们非常具体地指示后续命令(输出通过管道传输到该命令),第一个命令的标准输出(它的执行结果)应该放置在哪里,换句话说,应该如何获取或解析它

因此,而不是管道的结果:

kubectl create secret generic test --from-file=appsettings.json --dry-run -oyaml
Run Code Online (Sandbox Code Playgroud)

(这恰好是一个 yaml 清单)

直接到:

kubectl apply -f

它不知道如何处理这样的输入(因为它需要一个-f标志后的文件),我们非常精确地指出它适合的位置:

                
kubectl apply -f -
Run Code Online (Sandbox Code Playgroud)

在这种情况下,我们指示kubectl applycommand 应该采用前一个命令的管道输出而不是文件,这是在提供-f标志后预期的。

  • 它不是占位符。按照 Unix 惯例,它的意思是“从标准输入读取” (4认同)