Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/246.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在当前CLI上下文中从PHP脚本执行命令?_Php_Command Line Interface - Fatal编程技术网

如何在当前CLI上下文中从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

假设我有一个打印时间的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脚本打印序列,将清除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脚本中触发CLI
clearcrollback

转义代码
^[]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这样的终端会逐字解释所有的程序输出吗?假设它包含转义码,它会执行吗?我已经编辑了你的答案,以包括我理解的解释。我相信如果我有任何错误,你会纠正它。