日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > php >内容正文

php

php exec多条命令怎么拼接_PHP--手摸手,教你撸一个会自动补全的命令行工具1

發(fā)布時(shí)間:2025/3/20 php 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 php exec多条命令怎么拼接_PHP--手摸手,教你撸一个会自动补全的命令行工具1 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

前言

一次在使用symfony的時(shí)候,發(fā)現(xiàn)使用命令行的時(shí)候有些關(guān)鍵字會(huì)自動(dòng)提示。

介紹

隨著laravel,symfony等框架的流行,命令行工具越來(lái)越流行,但是很多時(shí)候命令太多,根本無(wú)法記住所有參數(shù),或者參數(shù)太長(zhǎng)輸入太不方便。

這時(shí)是否也想擁有一個(gè)像IDE中的自動(dòng)補(bǔ)全功能?

手摸手,一起擼一個(gè)自動(dòng)補(bǔ)全工具

獲取命令行字符串

想自動(dòng)補(bǔ)全,必須獲取命令行輸入的數(shù)據(jù),那么如何獲取數(shù)據(jù)呢?

具體可以參考官方文檔 PHP獲取命令輸入,這里我們使用一種寫(xiě)法

$c = fread(STDIN, 1);

這樣我們就可以獲取每次輸入的按鍵。

獲取單個(gè)字符

進(jìn)行了上面的操作以后,我們已經(jīng)可以獲取到輸入的內(nèi)容,但是發(fā)現(xiàn)一個(gè)問(wèn)題,我們必須按下回車(chē)以后才可以獲取到輸入的內(nèi)容,即使我們?cè)O(shè)置了fread最大讀取的長(zhǎng)度,那么究竟是什么問(wèn)題的?

原來(lái)Linux終端中,默認(rèn)是必須按下回車(chē)的。那么我們必須關(guān)閉這個(gè)功能。為了防止我們使用其他軟件出現(xiàn)問(wèn)題,我們不需要該功能后需要將其關(guān)閉。

//執(zhí)行如下命令后,就可以一個(gè)字符一個(gè)字符的獲取了$sttyMode = shell_exec('stty -g');shell_exec('stty -icanon -echo');//恢復(fù)原來(lái)的狀態(tài)shell_exec(sprintf('stty %s', $sttyMode));

這時(shí),我們?cè)谶M(jìn)行測(cè)試

$sttyMode = shell_exec('stty -g');shell_exec('stty -icanon -echo');$c = fread(STDIN, 1);var_dump($c);shell_exec(sprintf('stty %s', $sttyMode));

簡(jiǎn)易自動(dòng)補(bǔ)全

總結(jié)

以上是生活随笔為你收集整理的php exec多条命令怎么拼接_PHP--手摸手,教你撸一个会自动补全的命令行工具1的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。