带百分号的 RemoteCommand 不起作用

带百分号的 RemoteCommand 不起作用

以下命令

tmux new -A -s $(date +%Y%m%d%H%M%S)

工作并tmux从一个会话开始,该会话以当前日期时间命名(如预期)。

但是如果我在ssh配置中添加相同的内容

RemoteCommand tmux new -A -s $(date +%Y%m%d%H%M%S)

它说

percent_expand: unknown key %Y

为什么以及如何解决?


显然,ssh试图展开百分号. 如何禁用/退出此扩展?

答案1

%%在需要文字的地方使用%。这是非常常见的:在大多数具有单个转义字符的语法中,将该字符加倍会产生文字字符。例如,\\匹配正则表达式中的文字反斜杠、\\在 shell 不带引号或双引号的单词中获取文字反斜杠字符、在输出%%中获取文字百分号等。printf

RemoteCommand tmux new -A -s $(date +%Y%m%d%H%M%S)

你找到的汇总表并没有费心去列出%%,但是OpenSSH 手册确实如此

如果您希望在输出中使用字面百分号date(无论出于何种原因),您可以将 for 翻倍%datedate +%Y%m%d%%%H%M%S日期和时间之间放置一个百分号。在 SSH 远程命令中,您需要将dateSSH 的值加倍,将 SSH 的值加倍,因此 4%代表 1:RemoteCommand tmux new -A -s $(date +%Y%m%d%%%%%H%M%S)

相关内容