如何在当前 CLI 上下文中从 PHP 脚本执行命令?

How to action a command from a PHP script in the current CLI context?

假设我有一个 PHP 打印时间的脚本。

echo time() . "\r\n";

在 CLI 中多次执行此脚本将如下所示:

curiosity:bin gajus$ php -r 'echo time() . "\r\n";'
1434453316
curiosity:bin gajus$ php -r 'echo time() . "\r\n";'
1434453318
curiosity:bin gajus$ php -r 'echo time() . "\r\n";'
1434453319
curiosity:bin gajus$

我希望我的 PHP 脚本打印 printf '\e\]50;ClearScrollback\a' 序列以清除 iTerm2 回滚。我尝试了 php -r 'echo "\e\]50;ClearScrollback\a" .time() . "\r\n";' 的变体,但只是将字符串吐到 CLI 输出:

curiosity:bin gajus$ php -r 'echo "\e\]50;ClearScrollback\a" .time() . "\r\n";'
]50;ClearScrollback\a1434453543
curiosity:bin gajus$

有没有办法从 PHP 脚本中触发 CLI ClearScrollback

转义码 ^[]50;ClearScrollback^G 本身在 Proprietary Escape Codes iTerm2 文档中有描述。

A quick comment on notation: in this document, ^[ means "Escape" (hex code 0x1b) and ^G means "bel" (hex code 0x07).

您可以使用PHP chr()函数,例如

php -r 'echo chr(27) . "]50;ClearScrollback" . chr(7);'

chr函数returns一个特定的ascii字符。在此示例中,我使用 ASCII control characters "escape" (27) 和 "bell" (7)。描述ascii控制字符的跨平台安全方法。