如何在当前CLI上下文中从PHP脚本执行命令?
假设我有一个打印时间的PHP脚本如何在当前CLI上下文中从PHP脚本执行命令?,php,command-line-interface,Php,Command Line Interface,假设我有一个打印时间的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 cu
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脚本打印序列,将清除iTerm2回滚。我尝试了php-r'echo“\e\]50;clearcrollback\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脚本中触发CLIclearcrollback
?转义代码^[]50;ClearScrollback ^G
本身在iTerm2文档中有描述
对注释的快速评论:在本文档中,^[表示“转义”(十六进制代码0x1b),而^G表示“贝尔”(十六进制代码0x07)
您可以使用函数,例如
php -r 'echo chr(27) . "]50;ClearScrollback" . chr(7);'
chr
函数返回一个特定的ascii字符。这是一种跨平台的安全方法,用于描述ascii控制字符。尝试以下操作:这将按应有的方式打印输出,但不会触发CLI中的命令。建议使用exec
执行外部程序,而不是触发当前CLI会话中的更改。好的,请检查修改后的命令answer@Samule这很有效放松点,你能解释一下为什么它能工作吗?像iTerm这样的终端会逐字解释所有的程序输出吗?假设它包含转义码,它会执行吗?我已经编辑了你的答案,以包括我理解的解释。我相信如果我有任何错误,你会纠正它。