命令行界面与 GUI

命令行界面与 GUI

这可能是一个相当简单的问题,但这里是。

我正在考虑学习使用 CLI,因为我被告知技术人员使用它比 GUI 更有效。有人可以概述一下为什么使用 CLI 会有好处吗?

答案1

这都是关于沟通的隐喻。 GUI 是图画书 - 它们可以让您将事物移动到其他事物,或者右键单击事物并选择选项。

但当您想提问时,您仍然可以输入帖子。

命令行几乎是一样的——它们是告诉计算机要做什么。如果你想做的事情很简单,那么图片和文字就差不多了。如果您想要做的事情很复杂,那么语言可以让您更好地解释。

我最喜欢的例子之一是find

find . -mtime -60 -name '*.txt' -exec sed -i.bak 's/fish/carrot/g' {} \;

这会:

  • 搜索当前目录结构
  • 对于过去 60 天内修改的所有文件,
  • 称为“*.txt”
  • 将所有这些中的“鱼”一词替换为“胡萝卜”。
  • 留下后缀为 . 的备份副本.bak

您将如何使用 GUI 以图形方式说明这一点?

(扩展它 - 命令行的下一阶段是学习脚本,它可以让您更详细地解释您希望计算机执行的操作)。

对于长时间运行且耗时的任务,这一原则更为重要。您编写命令来执行此操作,按“输入”并保存输出。 - 回家吧,让它继续。对于复杂的 GUI 命令,您必须一次运行一个。

在我看来,GUI 的核心优势是它们确实让您无需了解就能做一系列事情具体来说。当您想要“摆弄某些设置”时,您可以在 Windows 中的控制面板中查看 - 您可以快速浏览它们以查找合适的内容。我建议不常见的任务,很有好处。 (在我看来)在 Windows 上做到这一点可能仍然比在 Linux 上更容易。

但这其实是相同的一点——对于偶尔执行的不频繁任务,GUI 是不错的选择。对于复杂且常规的可重复命令,每次都使用 CLI。

答案2

CLI 相对于 GUI 的一个最重要的优点是,使用 CLI,您可以容易地将一个命令的输出连接到另一个命令的输入。该连接有一个简单直观的符号(管道,|),并且其实现非常高效。这使得人们可以通过将非常简单的构建块链接在一起来解决复杂的任务。

例如,这段代码从图像集合中删除重复项:

find ~/Images -type f -name '*.jpg' -print0 \
    xargs -0 shasum -a256 | \
    perl -l0ne 'm/^(\S+)\s.(.+)$/o and $a{$1} ? (print $2) : ($a{$1} = 1)' | \
    xargs -0 rm -f

涉及的每个命令都做一件非常简单的事情。每个命令都很容易理解,并且其功能的正确性也很容易验证。然而,将这些命令链接在一起的结果绝非微不足道。 GUI 不具备这种级别的模块化或灵活性。

相关内容