在 macOS 中通过 ssh 命令传递可读的标点符号文本?

Passing readable punctuated text through ssh commands in macOS?

我需要 "say" 向 shell 的人发送消息,并希望设置一个别名,以正确自动转义标点符号。

我目前有一个很好用的别名,除了问题、逗号等:

 tell_someone='ssh -e none username@hostname say'

但是当我运行tell_someone "can you hear me?"时,它returns:

zsh:1: no matches found: me?

虽然 tell_someone "can you hear me\?" 工作正常。如果可能的话,我想让它在有引号和无引号的情况下都能工作,但我需要它来明显地避开标点符号。

一个简单的别名可以完成这项工作,还是我需要编写一个脚本来以更稳健的方式处理这个问题?

注意:我的理由是,与我一起工作的每个人都戴着耳机并有多个显示器,因此几乎不可能引起注意,所以我经常不得不恢复到更隐蔽的方式,就像我们以前在大学恶作剧中的计算机实验室所做的那样在我们过去常常向人们播放音频的 Sun 系统上...:)

尝试使用此函数代替您的别名(别担心;它感觉与别名一样,只是以更灵活的方式处理参数):

tell_someone () { printf "%q" "$*" | ssh -x -e none someone@host say }

根据您的需要进行调整。