php exec多条命令怎么拼接_PHP--手摸手,教你撸一个会自动补全的命令行工具1
前言
一次在使用symfony的时候,发现使用命令行的时候有些关键字会自动提示。
![](/assets/blank.gif)
介绍
随着laravel,symfony等框架的流行,命令行工具越来越流行,但是很多时候命令太多,根本无法记住所有参数,或者参数太长输入太不方便。
这时是否也想拥有一个像IDE中的自动补全功能?
手摸手,一起撸一个自动补全工具
获取命令行字符串
想自动补全,必须获取命令行输入的数据,那么如何获取数据呢?
具体可以参考官方文档 PHP获取命令输入,这里我们使用一种写法
$c = fread(STDIN, 1);
这样我们就可以获取每次输入的按键。
![](/assets/blank.gif)
获取单个字符
进行了上面的操作以后,我们已经可以获取到输入的内容,但是发现一个问题,我们必须按下回车以后才可以获取到输入的内容,即使我们设置了fread最大读取的长度,那么究竟是什么问题的?
原来Linux终端中,默认是必须按下回车的。那么我们必须关闭这个功能。为了防止我们使用其他软件出现问题,我们不需要该功能后需要将其关闭。
//执行如下命令后,就可以一个字符一个字符的获取了$sttyMode = shell_exec('stty -g');shell_exec('stty -icanon -echo');//恢复原来的状态shell_exec(sprintf('stty %s', $sttyMode));
这时,我们在进行测试
![](/assets/blank.gif)
$sttyMode = shell_exec('stty -g');shell_exec('stty -icanon -echo');$c = fread(STDIN, 1);var_dump($c);shell_exec(sprintf('stty %s', $sttyMode));
简易自动补全
php exec多条命令怎么拼接_PHP--手摸手,教你撸一个会自动补全的命令行工具1相关推荐
- 假装认真的LaTeX学习笔记(1)—— Sublime中自动补全LaTeX命令(LaTeX-cwl安装教程)
假装认真的LaTeX学习笔记(1)-- Sublime中自动补全LaTeX命令 简介 使用环境 如何在Sublime中获得LaTeX自动补全功能 安装Sublime插件--LaTeX-cwl 方法一: ...
- zsh 自动补全导致命令显示重复
关键字:autocomplete, zsh, backspace, securecrt, xterm, linux console 举个例子: 输入命令ls 然后按TAB补全试试,发现竟然是这样的 ...
- linux shell中的命令自动补全(compgen complete)与 命令行参数解析
linux shell中的命令自动补全(compgen complete)与 命令行参数解析 标签: shell脚本 2013-12-31 21:56 6661人阅读 评论(6) 收藏 举报 分类: ...
- linux的compgen命令,linux shell中的命令自动补全(compgen complete)与 命令行参数解析...
很多时候,当我们写一个脚本时,我们总会提供一些可选的命令选项.当可选项比较多的时候,比如git, 如果能够提供命令自动补全,无疑是锦上添花的事.而且个人认为,这种方式,比采用将命令做成选择菜单要更好一 ...
- Linux |奇怪的知识---complete命令---你不知道的命令参数补全---kubectl命令的参数补全
前言: linux下有非常多的命令,其中有一些命令是比较冷门的,但比较有意思,比如,这个complete命令. complete命令定义命令或者脚本内的方法的参数自动补全内容是什么(例如,定义某个命令 ...
- mac linux自动补全,MacOS 上使用docker命令补全功能
摘要 在CentOS系统上敲了很久的自动补全docker命令之后,在自己的mac系统里发现很不适应而且没什么效率,于是就google了一番查找. 1.安装brew ruby -e "$(cu ...
- 笔记:Docker命令自动补全
笔记:Docker命令自动补全 一 背景 作为一名 Linux 重度用户,每次敲命令总会情不自禁地按下 Tab 键.在键入 Docker 命令时也会出现类似的习惯性动作.那么是否 Docker 相关命 ...
- Docker 命令自动补全必须有
点击上方蓝色"程序猿DD",选择"设为星标" 回复"资源"获取独家整理的学习资料! 前言 不知道这个小伙伴有多久没用过 Docker 了, ...
- Matlab常用的11个快捷键【注释、自动对齐、跳转指定行、设置标签and断点、自动补全、历史命令、强制中断运行、退出、单行注释转多行】
在使用Matlab进行编程时,有时可能需要不少时间.花时间的地方主要有两点: (1) 一方面在于调试算法的脑力劳动,比如检查算法是否解决了实际问题.程序是否优化等: (2) 另一方面则在于操作软件的体 ...
最新文章
- centos 安装git_开源物联网MQTT 5.0服务器——EMQ安装及运行教程
- Java FAQ(slhynju 0.3版)
- 联想服务器DL388eu盘装系统,服务器价格指导 10月双路机架产品导购
- PAT (Basic Level) Practice (中文)1005 继续(3n+1)猜想 (25 分)
- 【POJ2387】Til the Cows Come Home (最短路)
- 无招胜有招之Java进阶JVM(一)
- 一文详解数据分析的 TGI 指数 | 技术头条
- Javascript归并排序
- django 获取环境变量_django 环境变量配置过程详解
- vnc远程桌面很慢_vnc远程桌面-桌面空白解决方案
- 猝死理赔年轻化,恶性肿瘤仍为头号健康“杀手”
- java 计算父亲节_java实现计算周期性提醒的示例
- FineBI 新增字段后 更新缓慢问题
- Windows系统安全检查脚本
- java三层架构实现登录_用户登录——三层架构
- 23位子网掩码是多少_23位子网掩码 网关计算
- 软件模拟SPI接口程序代码(4种模式)
- 在anaconda设置Python的IDEL编辑器
- 浏览器是怎么对html5的离线资源进行加载的呢
- Matlab设置双y轴特性