【生意多】-免费发布分类信息
当前位置: 首页 » 新闻 » 教程 » 正文

4 个拥有绝佳命令行界面的Linux终端程序

放大字体  缩小字体 发布日期:2020-06-24 23:10:17    浏览次数:4
导读

  在本文中,我会指出命令行界面的可发现性discoverability缺点以及克服这些问题的几种方法。  我喜欢命令行。我第一次接触命令行是在 1997 的 DOS 6.2 上。我学习了各种命令的语法,并展示了如何在目录中列出隐藏的文件(attrib)。我会每次仔细检查命令中的每个字符。 当我犯了一个错误,我会从头开始重新输入命令。

  在本文中,我会指出命令行界面的可发现性discoverability缺点以及克服这些问题的几种方法。

  我喜欢命令行。我第一次接触命令行是在 1997 的 DOS 6.2 上。我学习了各种命令的语法,并展示了如何在目录中列出隐藏的文件(attrib)。我会每次仔细检查命令中的每个字符。 当我犯了一个错误,我会从头开始重新输入命令。直到有一天,有人向我展示了如何使用向上和向下箭头按键遍历命令行历史,我被震惊了。

  后来当我接触到 Linux 时,让我感到惊喜的是,上下箭头保留了它们遍历历史记录的能力。我仍然很仔细地打字,但是现在,我了解如何盲打,并且我能打的很快,每分钟可以达到 55 个单词的速度。接着有人向我展示了 tab 补完,再一次改变了我的生活。

  在 GUI 应用程序中,菜单、工具提示和图标用于向用户展示功能。而命令行缺乏这种能力,但是有办法克服这个问题。在深入解决方案之前,我会来看看几个有问题的 CLI 程序:

  我们来看另一个例子,标准的 Python REPL。我开始输入命令,然后习惯按Tab键。瞧,插入了一个Tab字符,考虑到Tab在 Python 源代码中没有特定作用,这是一个问题。

  Bpython是对 Python REPL 的一个很好的替代。当我运行 bpython 并开始输入时,建议会立即出现。我没用通过特殊的键盘绑定触发它,甚至没有按下Tab键。

  当我出于习惯按下Tab键时,它会用列表中的第一个建议补全。这是给 CLI 设计带来可发现性性的一个很好的例子。

  bpython 的另一个方面是可以展示模块和函数的文档。当我输入一个函数的名字时,它会显示这个函数附带的签名以及文档字符串。这是一个多么令人难以置信的周到设计啊。

  mycli是默认的 MySQL 客户端的现代替代品。这个工具对 MySQL 来说就像 bpython 之于标准 Python REPL 一样。mycli 将在你输入时自动补全关键字、表名、列和函数。

  补全建议是上下文相关的。例如,在SELECt * FROM之后,只有来自当前数据库的表才会列出,而不是所有可能的关键字。

  如果您正在寻找 PostgreSQL 版本的 mycli,请看看pgcli。 与 mycli 一样,它提供了上下文感知的自动补全。菜单中的项目使用模糊搜索缩小范围。模糊搜索允许用户输入整体字符串中的任意子字符串来尝试找到正确的匹配项。

  pgcli 和 mycli 在其 CLI 中都实现了这个功能。斜杠命令的文档也作为补全菜单的一部分展示。

  在传统的 Unix shell(Bash、zsh 等)中,有一种搜索历史记录的方法。此搜索模式由Ctrl-R触发。当再次调用你上周运行过的命令时,例如ssh或docker,这是一个令人难以置信的有用的工具。 一旦你知道这个功能,你会发现自己经常会使用它。

  如果这个功能是如此有用,那为什么不每次都搜索呢?这正是fishshell所做的。一旦你开始输入命令,fish将开始建议与历史记录类似的命令。然后,你可以按右箭头键接受该建议。

  我已经回顾了一些解决可发现性的问题的创新方法,但也有一些基本的命令行功能应该作为每个 REPL 所实现基础功能的一部分:

  在第 2 节中,我将来看看 Python 中使你能够实现这些技术的特定库。同时,请查看其中一些精心设计的命令行应用程序:

  本站(LinuxIDC)所刊载文章不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。

 
关键词: linux命令行界面
(文/小编)
打赏
免责声明
• 
本文为小编原创作品,作者: 小编。欢迎转载,转载请注明原文出处:https://www.31duo.com/news/show-316967.html 。本文仅代表作者个人观点,本站未对其内容进行核实,请读者仅做参考,如若文中涉及有违公德、触犯法律的内容,一经发现,立即删除,作者需自行承担相应责任。涉及到版权或其他问题,请及时联系我们。
 

(c)2016-2019 31DUO.COM All Rights Reserved浙ICP备19001410号-4

浙ICP备19001410号-4