如何从命令提示符打印/回显“警报”07

问题描述

在python中发出哔哔声我打印控制字符07。例如:

>>> print('\x07')
# <beep>

是否可以从 shell 执行此操作?我一直在尝试这样的事情:

david$ echo \x07
x07
david$ echo '\x07'
\x07
david$ echo "\x07"
\x07

但只是从字面上打印出来。除了做以下事情之外,如何做到这一点:

$ python -c "print('\x07')"

似乎 printf 有效:

$ printf '\a'

还有什么办法可以用 echo 做到这一点吗?

解决方法

其实很简单:

printf "\a"

打印闹钟/铃声字符。

echo 的问题在于 POSIX 说

如果第一个操作数是 -n,或者任何一个操作数包含一个字符,则结果是实现定义的。

而且,事实上,如果使用内置版本(以及哪个 shell),或者您的操作系统(如果使用独立的echo),有些人会解释默认情况下反斜杠转义,有些需要特定的选项(通常是 -e)才能这样做,有些(zsh)取决于 shell 选项的设置……使用 {{1 }},对于像 printf 这样的转义序列,它的行为总是相同的。

,

对于 Bash,内置的 echo 命令支持转义:

echo -ne '\a'

对于符合 POSIX 的 shell,printf 是更好的选择:

printf '\a'

或者使用 GNU 核心实用程序:

/bin/echo -ne '\a'