前言

一次在使用symfony的时候,发现使用命令行的时候有些关键字会自动提示。

介绍

随着laravel,symfony等框架的流行,命令行工具越来越流行,但是很多时候命令太多,根本无法记住所有参数,或者参数太长输入太不方便。

这时是否也想拥有一个像IDE中的自动补全功能?

手摸手,一起撸一个自动补全工具

获取命令行字符串

想自动补全,必须获取命令行输入的数据,那么如何获取数据呢?

具体可以参考官方文档 PHP获取命令输入,这里我们使用一种写法

$c = fread(STDIN, 1);

这样我们就可以获取每次输入的按键。

获取单个字符

进行了上面的操作以后,我们已经可以获取到输入的内容,但是发现一个问题,我们必须按下回车以后才可以获取到输入的内容,即使我们设置了fread最大读取的长度,那么究竟是什么问题的?

原来Linux终端中,默认是必须按下回车的。那么我们必须关闭这个功能。为了防止我们使用其他软件出现问题,我们不需要该功能后需要将其关闭。

//执行如下命令后,就可以一个字符一个字符的获取了$sttyMode = shell_exec('stty -g');shell_exec('stty -icanon -echo');//恢复原来的状态shell_exec(sprintf('stty %s', $sttyMode));

这时,我们在进行测试

$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相关推荐

  1. 假装认真的LaTeX学习笔记(1)—— Sublime中自动补全LaTeX命令(LaTeX-cwl安装教程)

    假装认真的LaTeX学习笔记(1)-- Sublime中自动补全LaTeX命令 简介 使用环境 如何在Sublime中获得LaTeX自动补全功能 安装Sublime插件--LaTeX-cwl 方法一: ...

  2. zsh 自动补全导致命令显示重复

    关键字:autocomplete, zsh, backspace, securecrt, xterm, linux console 举个例子: 输入命令ls  然后按TAB补全试试,发现竟然是这样的 ...

  3. linux shell中的命令自动补全(compgen complete)与 命令行参数解析

    linux shell中的命令自动补全(compgen complete)与 命令行参数解析 标签: shell脚本 2013-12-31 21:56 6661人阅读 评论(6) 收藏 举报 分类: ...

  4. linux的compgen命令,linux shell中的命令自动补全(compgen complete)与 命令行参数解析...

    很多时候,当我们写一个脚本时,我们总会提供一些可选的命令选项.当可选项比较多的时候,比如git, 如果能够提供命令自动补全,无疑是锦上添花的事.而且个人认为,这种方式,比采用将命令做成选择菜单要更好一 ...

  5. Linux |奇怪的知识---complete命令---你不知道的命令参数补全---kubectl命令的参数补全

    前言: linux下有非常多的命令,其中有一些命令是比较冷门的,但比较有意思,比如,这个complete命令. complete命令定义命令或者脚本内的方法的参数自动补全内容是什么(例如,定义某个命令 ...

  6. mac linux自动补全,MacOS 上使用docker命令补全功能

    摘要 在CentOS系统上敲了很久的自动补全docker命令之后,在自己的mac系统里发现很不适应而且没什么效率,于是就google了一番查找. 1.安装brew ruby -e "$(cu ...

  7. 笔记:Docker命令自动补全

    笔记:Docker命令自动补全 一 背景 作为一名 Linux 重度用户,每次敲命令总会情不自禁地按下 Tab 键.在键入 Docker 命令时也会出现类似的习惯性动作.那么是否 Docker 相关命 ...

  8. Docker 命令自动补全必须有

    点击上方蓝色"程序猿DD",选择"设为星标" 回复"资源"获取独家整理的学习资料! 前言 不知道这个小伙伴有多久没用过 Docker 了, ...

  9. Matlab常用的11个快捷键【注释、自动对齐、跳转指定行、设置标签and断点、自动补全、历史命令、强制中断运行、退出、单行注释转多行】

    在使用Matlab进行编程时,有时可能需要不少时间.花时间的地方主要有两点: (1) 一方面在于调试算法的脑力劳动,比如检查算法是否解决了实际问题.程序是否优化等: (2) 另一方面则在于操作软件的体 ...

最新文章

  1. centos 安装git_开源物联网MQTT 5.0服务器——EMQ安装及运行教程
  2. Java FAQ(slhynju 0.3版)
  3. 联想服务器DL388eu盘装系统,服务器价格指导 10月双路机架产品导购
  4. PAT (Basic Level) Practice (中文)1005 继续(3n+1)猜想 (25 分)
  5. 【POJ2387】Til the Cows Come Home (最短路)
  6. 无招胜有招之Java进阶JVM(一)
  7. 一文详解数据分析的 TGI 指数 | 技术头条
  8. Javascript归并排序
  9. django 获取环境变量_django 环境变量配置过程详解
  10. vnc远程桌面很慢_vnc远程桌面-桌面空白解决方案
  11. 猝死理赔年轻化,恶性肿瘤仍为头号健康“杀手”
  12. java 计算父亲节_java实现计算周期性提醒的示例
  13. FineBI 新增字段后 更新缓慢问题
  14. Windows系统安全检查脚本
  15. java三层架构实现登录_用户登录——三层架构
  16. 23位子网掩码是多少_23位子网掩码 网关计算
  17. 软件模拟SPI接口程序代码(4种模式)
  18. 在anaconda设置Python的IDEL编辑器
  19. 浏览器是怎么对html5的离线资源进行加载的呢
  20. Matlab设置双y轴特性

热门文章

  1. Android使用SAX解析XML(6)
  2. Strophe的示例程序运行
  3. XML中的CDATA是什么
  4. 点站点链接出现短时间白屏或闪屏现象
  5. oracle 删除表从回收站恢复
  6. js 获取中文的拼音
  7. PHPExcel 常用方法
  8. 《暗时间》的笔记-我在南大的七年
  9. 回调函数 相当于线程_Java中的回调机制,这篇给你整的明明白白的
  10. 【学习笔记】JS进阶语法一事件进阶