(双破折号)在SSH Shell命令中是什么意思?

时间:2020-01-09 10:44:09  来源:igfitidea点击:

有的脚本在shell中使用ssh client命令,如下所示:

ssh [email protected] --

这里的双"--"(破折号)是什么意思?

为什么在此shell命令中使用它,为什么不只使用以下命令?

ssh theitroad @ server1.theitroad.local

双破折号"-"表示命令行标志的结尾,即,它告诉ssh命令不要尝试解析命令行选项之后的内容。

使用gcutil ssh vmNameHere python包装器时,您将看到以下内容。它将显示并执行ssh,如下所示:

ssh -o UserKnownHostsFile=/dev/null -o CheckHostIP=no -o StrictHostKeyChecking=no -i /Users/Hyman/.ssh/google_compute_engine -A -p 22 [email protected] --

这种语法确保您无需ssh即可在远程服务器上运行命令:

ssh [email protected] -command1 --arg1 --arg2

上面的语法告诉ssh不要在--命令行选项后解析--arg1--arg2
这样可以确保command1将接受--arg1和--arg2作为参数。

#safe examples #
ssh [email protected] ---commandName --arg1 --arg2 

这种行为主要是由ssh命令定义和处理的,而不是由bash/ksh/csh shell定义和处理的。
许多其他命令也是如此。
例如,您不能使用cat命令创建或者查看名为--file或者-f的文件。

## fail ##
cat --file
cat -f

而是尝试传递双破折号'-'来指示cat命令不要尝试解析命令行选项之后的内容:

## works ##
cat -- --file
cat -- -f