大约 22,000 名 CSS-Tricks 访客在 最近的投票 中投票,该投票询问
平均而言,您每天从命令行运行多少个命令?
结果是:各个水平的人数都很多。难怪它会成为一个热门话题。
以下是结果图表
查看 CodePen 上 Chris Coyier (@chriscoyier) 的 uJjyD 作品。
19% 的人从未使用过命令行。 27% 的人占最大比例,他们每天只运行少量命令。
18% 的人运行 10-50 个命令,15% 的人运行 50-100 个命令,15% 的人运行 100-1000 个命令。 我认为,将这三组人(每天运行 10-1000 个命令)加在一起,他们的人数最多(48%)。
人数最少的一组(6%)每天运行超过 1000 个命令。 有些人只是生活在 shell 中!
就我个人而言,我属于 10-50 组。 我通常会做一些事情,比如启动 Grunt、启动 Rails 服务器以及与设置开发环境相关的其他事情。
这个投票的灵感来自于人们在谈论命令行工具时总是会进行的常见旁谈。
假设出现了一种只能通过命令行使用的新工具。 无论它做什么,最终结果都是令人满意的。 有些人会感到兴奋并谈论它并使用它。 有些人会考虑使用它,但最终却不会使用它,因为这超出了他们的舒适区。 有些人会抱怨它是一个命令行工具,并完全放弃它。
然后就会有一些评论指责那些不使用命令行的人。 也会有一些评论告诉他们,没有什么好害怕的。 很难不同意这一点,因为学习更多东西当然总是一件好事。 但另一方面,并非每个人都需要了解所有东西,有些工具,无论多么令人兴奋,都可以从 UI 中获益。 像 CodeKit 这样的工具就是人们对它们的需求和使用程度高的证明。
我怀疑像 Grunt 这样的工具既
- 让更多人使用命令行
- 让命令行变得不再那么困难
- 让学习命令行变得更有价值
如今,如果出现一个能够完成酷炫任务的新命令行工具,那么它很可能已经是 Grunt 插件,或者有人会在短期内将其变成 Grunt 插件。 所以,现在您不必学习新的东西,只需包含 Grunt 插件并对其进行配置,这很可能您已经做过很多次了。
我个人认为,Grunt 可能永远不会有 GUI,至少不会出现一个好的 GUI,因为 Grunt 中重要的是插件的配置。 每个插件都非常不同,因此需要一个特殊的 UI,而这个 UI 必须是专门针对该插件的,而不是通用的。
我在这里学到的最有趣的一点是,命令行使用的范围有多广,从零经验到精通。 这与我们在网络技术中讨论的大多数事情大不相同,因此值得牢记这一点。
很快就会有新的投票。
我最近开始使用命令行(就在投票之后),用于 Git 版本控制和 SSH。
看起来现在改变我的投票已经太晚了。
我想经常使用命令行的人会使用 Grunt/Gulp/Yeoman/Bower/Git 之类的东西,而那些不使用命令行的人则会使用 CodeKit/Prepros/SourceTree/Github 之类的 UI 工具。
就我个人而言,当命令行彻底消失时,我会非常高兴。 它是糟糕 UX 的典型代表,如今制作一个简单的 GUI 太容易了,以至于软件开发人员没有理由不做。
我喜欢 Grunt,但我绝不会使用命令行来运行它。 我在 Sublime Text 中使用它。
我认为您忽略了命令行仍然存在的根本原因。 虽然这篇文章显然针对的是独立的实用程序套件(我对它们有 mixed feelings),但任何有相当多的 CLI 经验的人都会告诉您,为
grep
或wget
这样的工具编写 GUI 基本上是浪费时间。 就像理解 HTML 和 CSS 会带来更好的网站一样,理解命令行环境的语言和工具可以让开发人员更有效地使用它们(而且通常速度更快),而不是等效的纯图形选项。尤其是我这样大部分时间都在编写代码的人,我非常希望尽可能地将手指放在键盘上。 我甚至设置了一个单键快捷键,可以在我正在执行的其他任何操作之上打开我的系统终端模拟器,只是为了加快速度。 对于像我这样的人来说,CLI 通常是更好的选择。 将其称为“糟糕 UX 的典型代表”也许有点言过其实。
注意: 我主要是一名应用程序开发人员,只将 Web 开发作为爱好。 有点像加盐一样。
只要命令行比 GUI 快,我就不会改变!
为什么您要通过操作菜单,然后等待 3 秒才能创建新文件,当您可以使用单个命令在 100 毫秒内完成时? 为什么您要浪费一分钟时间尝试找到该文件夹以查看其中有哪些文件,当您可以使用单个命令在 100 毫秒内完成时?
命令行可能不像 GUI 那样直观(也许),但在某些情况下,它比任何 GUI 都快得多。 不要忘记,为了华丽,您需要付出 CPU 和内存的代价。
更不用说,当我们使用 GUI 工具时,实际上是在使用一个黑盒子。 当 eclipse 说“构建工作空间”时,您真的知道这意味着什么吗? 您无法知道! 您不知道 eclipse 实际上在做什么,只能猜测。 如果出现问题,另一方面,在命令行中,您无法猜测,因为它是由您运行的命令。 您知道您正在运行哪个命令,更重要的是,该命令会将错误直接输出到您的眼前。
我甚至不想开始谈论那些不了解最基本事物的人,比如 CVS 背后的基本概念(“什么是‘diff’?”),因为他们使用 GUI,从未真正理解那里发生了什么。
GUI 并非适合所有事情,命令行也并非如此。
两者各有优缺点。
启动应用程序? 我一直使用 Alfred/Spotlight/Launchy,因为只需键入…
Command+Space
'pho'
Enter
…比使用鼠标,点击应用程序,点击 Photoshop 更容易。
我知道这是在钻牛角尖,但应用程序启动器为所有内容提供了一个统一的界面,并且几乎不需要搜索。 我只需使用我的文字来找到我需要的东西,无论是我经常使用的东西(Sublime、Photoshop、Evernote),还是很少使用的东西(Camtasia、Illustrator、Suitcase)。 这些文字减少了搜索的认知开销。
那么键盘快捷键呢?
如果 GUI 是万能的答案,那么为人们提供机械快捷键来执行某件事就不会提高效率。
所以,说了这么多,GUI 很好,但它们并不适合所有任务。 有时候,使用古老的晦涩难懂的语言来完成任务更容易。
Jon,这就像说汽车的引擎盖应该焊死一样。
有些人就是喜欢在引擎盖下面做事情。
我不喜欢这样做,但我偶尔会发现它有用。
但是,我不想泛化,而且这确实是一种泛化,但我个人的经验是,一个人在命令行工作的时间越多,他们就越不可能尊重那些不使用命令行的人。 再次强调,这只是我个人的经验,我相信会有很多命令行高手并不像那样。
我属于 100-1000 组,根据我的工作内容,大多数情况下我可能处于该范围的低端。
我一直都在*nix 环境中工作,有些人可能会称之为“正统的”编程,我不得不质疑你的观点。
我们是做编码的,为了做到这一点,我们经常在不那么酷的旧东西的基础上构建很酷的新东西。 没有必要贬低不那么酷的旧东西;我们需要它们才能构建我们很酷的新东西。
说 CLI 从 UX 角度来说设计得很糟糕,就像抱怨电线杆的 UX 一样。 它存在是为了完成一项工作,而且它是很久以前为该目的设计和构建的,而不是为了提供现代的良好用户体验。
如果我说了太多,我表示歉意,我无意冒犯任何人,只是看到人们贬低他们可以选择使用的东西会让我很不爽。 归根结底,它是一个用来完成工作的工具,如果你不喜欢那个工具,你可以使用其他工具来完成那个任务。
就像抱怨你的镰刀看起来不好看,而你却在棚子里放着割草机一样。
Jon -
你完全没有道理。 命令行永远不会消失! 感谢像你这样的人,你们从未有足够的动力去学习它,从而比他们的 GUI 用户同行更有效率。
谢谢,
Cooper
AlanC -
我喜欢你的比喻:“说 CLI 从 UX 角度来说设计得很糟糕,就像抱怨电线杆的 UX 一样”。
完全正确。
Cp
我更倾向于这样认为
网页设计师是画家,命令行高手是作家。不过,两者都是艺术家。我猜想,主要是因为每个人思考、感受和感知的方式不同,所以并非所有人都使用相同的媒介和风格表达自己。因此,我希望命令行永远不会消失,更不要说以可怕的方式消失。闭嘴吧。
当我使用 Linux 或 OSX 时(几乎一直如此),除了浏览器外,我都会在 shell 中工作,而在 Windows 下,我从未需要打开控制台,真是奇怪。:)
我一直关注着这个问题,它让我感到困惑。我并不每天都在我的 Linux 机器上,但即使没有它,我也会将代码推送到 git,或通过 Windows 上的 Ruby 运行 Compass。
我关心的是工作流程,现在的 Compass 在 Ruby 上最适合我,所以当我犯错时,Compass Watch 就是我最好的朋友。
我喜欢命令行。
也许下一个调查应该关于具体性。我很想看看结果。
有了 Node.js 和大量的 Web 服务,创建 CLI 工具来做疯狂的事情太容易了。我有一个名为“upd”的复合脚本,我偶尔会在一天中运行它,它会检查我的 Gmail、日历、天气、包裹跟踪状态、新电影上映和我所在地区的房屋价格。试着用 GUI 应用程序(甚至浏览器)来做这些——至少需要 5 分钟!
我年纪大了,不得不使用命令行来操作电脑——在 MS-DOS 时代,我们称之为 DOS 提示符。我们没有 GUI,所以我们必须使用提示符——我们必须学习这些 DOS 命令才能使用我们的电脑——我记得这确实让人感觉很聪明。
我记得我第一次看到 GUI——那是苹果 Macintosh,我当时想:“哇”,你不再需要记住一大堆奇怪的命令,我可以像在现实世界中一样操作电脑(文件放在可视化的文件夹中,删除的项目放在垃圾桶形状的垃圾桶中……等等)——对于像我这样的视觉化的人来说,这使得电脑变得更容易使用——我可以把注意力集中在生产东西上,而不是记住诸如 move、make directory、change director 之类的底层操作系统命令——这是三十年前的事情。
三十年过去了,我感觉命令行又回来了,我不知道为什么。我猜我们是在电脑行业,我们可以让我们的 UI 更“极客”,这会让我们感觉更聪明——但我看不到任何逻辑——记住所有这些命令来执行基本的操作系统命令。
也许命令行对某些人来说是一种复古的新奇事物——但对我来说不是。
总之,每个人都有自己的选择——对于我的 UI 来说,我大多数时候更喜欢 GUI。
Michael!
在我投票的时候,我属于“少数命令”组。现在我开始下载并构建 Android 相关的东西(内核、ROM 等),我使用的命令变得多很多。
正如我在一个演讲幻灯片中所说:“我不是 CMD 专家,但 CMD 现在已经成为 Web 设计师的一部分”。
CMD 的问题不在于 CMD 本身,任何人都可以在上面输入文字。CMD 的问题在于,开发人员和程序员想出的用于执行基本操作的命令非常奇怪,而且很多时候,如果不是大多数,都没有任何意义。
git push origin master
,说真的。~/my-awesome-site jekyll serve
,真的。幸运的是,我已经克服了一些基于 CMD 的应用程序,但这只是因为我坚持不懈,而不是因为 CMD 命令直观。
sass --watch scss:css --compass --style compact --debug-info
,我花了几个月时间对着墙发呆才搞清楚这个命令。我现在用 Prepros App 来做这件事。browser-sync --config bs.js
,同样,我也对着墙发呆了几个星期才搞清楚。我今天仍然使用它。我会向我的 Web 专业同行推荐 CMD 吗?绝对不会。但是 **如果** 他们想在 Web 设计/开发方面做得很好,他们就必须在某个时刻使用它。
我最近第一次开始使用命令行,是在使用 Sass 的时候。
CLI 比 GUI 快得多,而且你可以用它做更多的事情。你如何在 Midnight Commander 中将 gitk 管道化,并将结果馈送到 Outlook Express?这甚至有意义吗?没有,你只能使用 GUI 提供的功能。
知道如何使用 CLI 就好比是在“口头交流者”中成为“心灵感应者”。他们甚至无法想象,如果他们有这种能力,他们能做些什么。在触屏速度下敲出一些神秘的命令,并立即得到结果,这真是太有趣了。GUI 用户只能张着嘴看着,假装没看见。
我使用命令行来操作 Git、Compass 和现在的 Grunt。它确实让我的工作速度加快,很多事情都可以自动化。我一直觉得 Git GUI 很困惑,这也是我开始远离 Windows 的原因之一。
我很早就开始使用 DOS,直到今天,我尽可能地远离绿色屏幕。我安装了 node.js 才能使用 Sublime Text 中的一些功能,但这只是我对命令行需求的程度。
我喜欢 CLI,只要它直观。我会拿 Linux 作为例子,我现在每天都使用 CLI,但我尝试切换到 Linux 时,发现要取得任何进展都太难了,所以我放弃了。
我完全理解对 GUI 或 CLI 的热爱,但对我来说,它们都是相似的,因为它们可能直观,也可能成为完成任何事情的噩梦。我只尝试过几个,但 Git GUI 一直让我跑回 CLI。
我主要使用 CLI 来操作 Grunt、SASS/Compass 和 Git,大多数情况下,这些命令都相当容易记住和使用,而且学习它们并不需要很长时间。关键在于此。
我认为很多刚入行的或处于中等水平的 Web 开发人员应该学习它——一个好的演示会让他们很快被它的强大功能征服。
我认为我一直都在使用命令行。我使用它太多了,以至于我不理解一些 GUI 中的一半内容。
CLI 使用:SASS、GRUNT、GIT。