我有预感,CSS-Tricks 的读者代表着相当广泛的职业类型和技能水平。 了解一般网页工作者中命令行使用频率会很有趣。
随便你怎么称呼它
“Shell”
“终端”
“命令行”
或诸如 Bash/Dash/Zsh/等等之类的具体名称。 在此调查中,为了保持一致性,我们只称其为命令行。 它就是您输入文本命令,计算机执行操作的地方。

我认为最容易收集的指标可能是人们使用它的频率。 所以让我们把问题改成
平均而言,您每天在命令行中运行多少条命令?
请在网站本身的小部件中投票。 我将答案细分为从“从未”到“几乎是您的全部工作”的范围——但指定了实际数字。 随意猜测,但据称有一种方法可以获得准确的计数
@chriscoyier 快速简便的计数方法:export HISTTIMEFORMAT="%d/%m/%y %T"; history | grep -c `date "+%d/%m/%y"`
— Brian McAllister (@brianmcallister) 2013 年 12 月 12 日
请随时在评论区讨论您喜欢的任何内容,但调查本身将专注于使用数量。
很想知道您有多喜欢使用它,使用它时感觉有多舒服,可以做些什么来提升水平,您是否认为您(或普遍)的使用频率在上升还是下降,等等。
调查想法不错。 我经常使用终端,在工作中和个人项目中。 我认为熟悉该环境很重要。
我下一步可能是编写一些我自己的 bash 实用程序,在 Linux 上(主要是 Debian 版本),尽管主要是为了学习,因为大多数东西都存在,而且相当成熟。
我从命令行是唯一选择的时候就开始编程了。 我认为即使当我每天在真正的 ASCII 终端上花费数小时的时候,我也不会每天输入数千条命令; 那太疯狂了,或者可能说明有人可能不明白 shell 脚本的整个概念。 即使在 30 年前,大量时间都花在了文本编辑器中。
如果您每 10 秒输入一次 CLI 命令,那么您需要花费将近 3 个小时才能达到 1000 条。 这些命令都做了些什么?
对于那些认为自己每天运行数千条 CLI 命令的人——它们到底是什么?
我假设我每天的数字会超过 1000; 我的 HISTFILESIZE 设置为 1000,而且目前其中几乎所有命令都来自今天。
不过,很多命令实际上并不是从命令行运行的——我认为大约三分之一的命令是在 Vim 中运行的——其中很多命令是通过键盘映射或 autocmd 运行的。 其余的则分布在导航、使用 grep 和搜索文件、git/ssh/ftp/管理项目,以及少量从 shell 提示符执行的实际功能性数据处理。
每天不多:compass watch、compass clean,有时是 guard 或 git status、git commit、git pull、git push,以及偶尔更新系统、移动/删除文件、安装/删除软件包的命令。
我和你一样,Mike,我真的不明白命令行都用在哪儿了。 我也曾在一些规模相当大的公司工作过,他们也同意我的观点,git、sass 之类的东西(虽然有用)肯定会降低生产力。 我几乎认为这更像是一种“身份象征”,而不是必需品。
同意……我认为命令行已经成为一种极客身份象征……我们 50 年前发明了 GUI,因为它们更易于使用,对大多数用户和许多用例来说更有效率……但现在在命令提示符中输入文本命令却酷多了……
终端/命令提示符有其存在的价值,但它不是万能的……
我对此绝对不同意。 我想您可能指的是学习阶段的下降生产力。 就我个人而言,通过学习 Sass 和 Git 之类的东西,我的生产力得到了极大的提升。 我认为“身份象征”来自您驾驭了这些工具的力量并体验到生产力提升的满足感。 能够克服学习这些工具的痛苦确实让我感到自豪。
我不确定 GUI 在所有情况下都能提高生产力。 它们是为了帮助普通人驾驭计算机的力量,使它们更易于使用而发明的,但我现在发现它们经常会妨碍工作——如果我的手不必离开键盘去触碰鼠标,我的速度会快得多。 问题在于,要做到这一点需要大量的培训和练习。
我也不同意。 GUI 更易于使用,但不一定更快……学习命令可能需要一些时间,但您很快就会收回这些时间。 释放您内在的力量! ;-)
在我看来,今天在如此大程度上使用命令行是一种时尚。
您实际上可以使用 SASS、Git 等,而无需手动编写任何命令,只需使用一个不错的 IDE 即可。
例如,当我创建 PHPStorm 项目中的第一个 sass 文件时,这个 IDE 会问我是否要编译 SASS 文件,我只需要点击一次即可完成。
我在 Windows 出现之前就开始使用计算机了,我知道如何在需要时使用命令行。 但 GUI 的发明是有原因的,它们绝对可以提高生产力,让我们的生活更轻松。
我也必须不同意。 每当我与不使用命令行/不知道键盘快捷键的同事结对编程时,感觉他们就像在慢动作中移动。 一切都需要停止,找到鼠标,导航到正确的菜单或对话框,等等,而只需输入几个词就可以完成……当然,并非所有任务都适合命令行,如果您打字速度很慢,那可能会是个问题。
Sass 完全是另一回事。 无论您如何编译它(从命令行或 GUI),在生产力/可维护性方面都是一个巨大的胜利……
哦,天哪,您怎么如此固执……
命令行不仅仅是“git 和 sass”(顺便说一下,您也可以通过 gui 运行它们)。 我们都曾在规模相当大的公司工作过,我们知道生产力不是他们最擅长的。 另外,它们是由人组成的,很多人,你肯定会在一家公司里找到所有阵营的支持者吧?
话说到这——命令行可以让你更快地完成操作,还可以将命令串联起来,让你将长命令存储在别名或脚本文件中。
例如,我今天使用的最后一个命令是
ag -i -G “scss$” –ignore “**/target” “inline-image” path/ | awk “{ print $3 }” | sort
用于在继承的项目中查找有关哪些路径包含图像的信息。 除非您能给我展示一种更快的使用带 GUI 的程序来完成此操作的方法,否则我将坚持使用 shell,非常感谢。
不多,但必须不时使用。 最近是 grunt 和 npm install,但几天前我发现 ST3 的 grunt 插件,现在我主要使用命令行来执行 Composer 任务。
哈哈,几乎不使用。 以前在 GIT 不工作时使用它,用于重置 –hard(不太清楚它是做什么的),哦,我还喜欢使用 sudo(???)。
有时我用它来执行 ipconfig /flushdns
我喜欢您关于 Grunt 的视频,但除此之外我很少使用它。
我似乎找到了使用 GUI 完成我想要做的大部分事情的方法。 在我以前的公司,所有 GIT 工作都是通过终端进行的,将代码拉取和推送至不同的暂存站点。
现在使用 BitBucket,我可以随时创建分支并将其拉取下来。 使用 MediaTemple,我可以随时创建站点。 一切都变得越来越容易了。
我很少使用命令行。 我过去曾使用 bash 来执行 git 操作,而且我很快就会尝试使用 grunt(所以我会更多地使用它……但仍然很少使用)。 然而,我非常喜欢尽可能地使用键盘而不是鼠标。 我想如果我对命令行或如何利用它有更多了解,我肯定会使用它——特别是在遍历文件夹目录、打开和关闭文件时。 说实话,我甚至不知道它能够做到的一切。 有没有关于如何使用它或如何学习的教程/文章?
我每天都会在一定程度上使用它。 去年我不得不学习 Drupal,它实际上是用于生产的,而不仅仅是找到 emacs 游戏! 现在,在捷豹/路虎,我使用 Linux/Ubuntu,发现自己经常使用命令行,即使我主要做的是 UX/UI 图形设计。
每天 1000 多条命令? 在 2013 年? 对我来说,这看起来像是开发过程中出现了问题。
我每天都使用命令行,但不是很多。可能是因为我不使用强制我使用命令行的工具。而且我不是害怕命令——我从 80 年代末就开始接触计算机,DOS 当时是首选——但为什么我们必须仅仅因为可以就使用不友好的界面呢?这不是为了节省资源,你知道的。
我同意,我觉得近年来,终端使用的整体趋势有所上升(至少在前端开发领域),感觉我们在某些方面倒退了……(不是抱怨,只是观察)。
也许这与越来越重视“前端开发人员”角色以及前端工具的增加有关,这些工具现在是通用 Web 开发不可或缺的一部分?(git、node、sass、JS 开发工具等)
我喜欢命令行,用你的小脚本 Chris 我拿到了 500 分。我希望更多,但我还在学习。我用 Tower 来管理 git,我知道它会拖慢我,但我对 git 的了解还不够,无法做更多事情。我确实会在两者之间切换,因为 Tower 对于某些事情并不合适。
我还使用 Vagrant 安装进行本地开发,并会经常使用 ssh 连接到它。我认为我的分数不高的唯一原因是我现在不是全职开发者。
我仍然使用 Codekit 来处理 Sass,无法超越它 :)
我获得了 500 分,因为这就是我历史记录的存储量。
我在看到用于计算终端历史记录的代码片段之前就参加了投票,显示了 499 分。我从未想过这个数字会接近这么高,所以我猜测大部分来自使用 Grunt 和 watch。
命令行的问题在于它需要键盘,而我更像个鼠标操作的人。我正在寻找一种方法让自己成为键盘操作者。
对于任何使用预处理器或其他节省时间工具的 Web 开发人员来说,这至少应该每天超过 500 次。
我无法想象没有终端来开发网站。
像大多数在这里评论过的人一样,我也是个键盘操作者,并且发现使用 Terminal/命令行来管理 Git 比使用 GUI 要快得多。此外,你实际上可以了解你在做什么以及为什么要这样做。我还整天在 Terminal 中使用它来遍历文件夹、创建/删除文件、Compass clean/compile、Sass watch 等。并不难;我不确定为什么有些人害怕使用它。
Git、Grunt、Guard、静态网站生成器、Sass + Compass 以及大量其他用于更紧凑工作流程的工具意味着我实际上是住在我的终端里。一旦我意识到可以用脚本做什么,这一点就变得更加真实。终端让我变得非常懒惰,但这是好事。我认为当我意识到终端内的生产力只受打字速度限制时,我开始喜欢它。部分原因是我的鼠标是目前精度较低的周边设备。
即便如此,一个好的 GUI 也是赏心悦目的。我选择 Sublime Text 作为我的主要编辑器部分原因是它 **非常漂亮**。
一个月前,我开始在 Web 开发领域的第一份工作,之前从未使用过命令行。现在我可能每天使用它 100 次甚至更多。在 Git 和 Rails 之间,我的电脑上整天都开着 iTerm。
今天只有四次。但我刚刚打开了电脑。:)
我的历史记录显示典型情况下每天 40-80 次。但我我知道我可能经常会达到 1000+ 次。
我每天使用命令行几次,有时每天输入几百行代码。我是一个老家伙,第一次在玻璃 TTY 上学习 UNIX,我一直都很乐意在提示符处测试和使用像 vi 和 emacs 这样的文本编辑器,并且一直在做系统管理工作,在那里,对于远程系统,你只有 shell 登录,至今如此。
我现在运行 Ubuntu 12.04,我知道所有关于文件管理器和 GUI 应用程序的知识,我喜欢你可以可靠地在网页、样式、布局中看到字体,但实际上,在许多情况下,命令行可以更好地完成工作。如果任务涉及将模式(正则表达式)应用于大量文件,我将打开一个终端。例如,要移动文件名的字符串相同的文件。如果我需要源文件中的模式,我将使用命令行中的 grep 和 more。
对于像更改网站配置或使用脚本语言或框架配置这样的管理任务,终端非常有用,尤其是在你因为视力问题需要使用大字体时。
不多——但我的 Sass 窗口整天都很忙,通常都是这样。
实际上从来没有,如果需要做任何繁重的工作或快速获取信息,我会使用 PHP 来生成诸如列表之类的内容。
再说一次,我所有的 Web 开发都是作为正在进行的业余爱好项目完成的。
命令行太难看了。我为什么要用这个?可以完全不用它。
你用什么来管理 Git/SVN、Grunt 等?只需稍微学习一下,你就能通过学习简单的命令来提高在这些方面的工作效率。不要因为它的不同而轻易否定它,它不同于你的常用工作流程……人们使用它是有原因的。
而且“它很丑”并不是不尝试它的好理由。
我每天都使用 Terminal。我来自 GNU/Linux 背景,尽管我现在是 Mac OS X 用户。
我有一个非常定制的设置。我使用 **fish** 作为我的 shell,大量别名,并且一直编写自己的 shell 脚本,既用 **fish** 也用 **bash**。
每天几次。
这是管理 Linux 服务器的重要组成部分,而且像 GitHub 这样的网站需要使用 CLI 命令。
如果你问我?我不相信 CLI 会很快消失,它仍然是一个非常有用的界面,尤其是在网络方面。
作为一名主要从事 .Net Web 开发的开发者,我无法告诉你我上次触摸命令行是什么时候。我认为我在构建脚本中添加了一行来预编译我的 CSS 来自 SASS/Less,如果有的话,我就完成了。事实上,我看到所有这些谈论命令行的人,我完全无法理解它在服务器或计算机上的配置之外有什么用。
CLI 真正地改善了工作流程。它可能看起来不性感,但它可以非常快地完成所有肮脏的工作。我刚刚从 GUI 切换到 CLI,我的效率以一种荒谬的方式提高了。
我绝不会再回到 GUI 了。我不会再浪费时间在鼠标和点击上……
每天十几次——我只用它通过 ssh 管理远程服务器,过去用它来运行 SASS/Compass,但现在我使用 Hammer for Mac,这只需要在 Dock 中点击一个图标,而不是打开一个终端,找到文件路径,然后输入 watch 或 build 或任何命令。
GUI 对于某些工作更快,而终端对于其他工作更快。同样,一些用户更喜欢 GUI,而一些用户更喜欢 CLI。
谁在乎呢?无论对你来说什么最有效……
好问题。我从未使用过命令行,但我有一种奇怪的自卑感,觉得我不能称自己为真正的开发者,除非我精通它!虽然我现在正在使用 Grunt,并且可以看到自己越来越深入地使用它,并期待它成为第二天性……在那之前,我会回到黑暗的房间里,像《大西洋帝国》里的那个人一样鞭打自己。
我得到的数字奇怪地很低,但因为我在多台机器上的多个终端中工作,所以很难获得准确的计数。
for 1 in {1..20} ; do something ; done
算 1 个命令还是 20 个?你认为用“1”作为变量名很酷吗?你可以试试字母……
你的服务器到底发生了什么事?
我以前不知道我每天运行多少命令!看来我每天运行大约 1000 次。O.o
我一定会学习Grunt和所有命令行的东西……但现在,我上班,打开终端,运行compass watch……就这样……8小时后……command c(或者其他什么)……然后回家!
ZSH FTW!!!
简单来说……我不知道你怎么能不用终端。
我用它来导航目录,告诉Compass进行监视,执行git任务,更新和安装新软件等。
我甚至用它来执行简单的Python脚本!
我今天已经用了1016次了 :)
其中很多是
ls
cd
git status
和git log
等等。@CrisCoyier……我在你的GitHub视频中听到你说,你认为命令行/Shell“很奇怪且未完成”。我明白你的意思。但是,你必须记住,它没有花哨的功能,只有强大的功能。
通过编写你自己的Shell脚本,你可以自动化你机器上的任何东西。
想要自动在每个星期三将特定目录中的所有内容
git commit
吗?用一个简单的脚本就可以做到。我用终端做很多事情:Rails命令,Rails控制台,运行测试,Silverstripe测试和命令,git,sass,导航等等。还不确定每天使用超过几百次。可能需要减少茶歇时间……
我是终端命令的粉丝,当我空闲时,我会玩它,尝试在它下面发明更多技巧!我最喜欢的命令是grep,find,运行测试和最强大的Git命令!
哦,我每天都使用命令行。它真的很有趣,一旦你掌握了它,就能让很多事情做起来更快。Vim也是一个非常有趣的文本编辑器,加载速度非常快,可以快速编辑简单的文件。(不过我的心仍然属于Sublime Text项目)
大多数时候,只是:
sass --watch style.scss:style.css --style compressed
但是你们中有多少人在TELNET中查看邮件?
就像固定电话、黑胶唱片和录像机一样,进步已经使它们成为了一种非主流/极客的象征。虽然你拥有更强大的潜力,但你需要更多的时间来让用户适应你的系统,更多的困惑,更大的错误率,以及更慢的整体进度。
在我的企业客户(雅虎、NFL、沃尔玛、福克斯、红牛、DirecTV)中,它很少超过“ant clean deploy”,对于像我这样的前端/UX人员来说,它真的不应该超过这个,如果你希望普通用户能够工作,并且能够智能地将错误传达给管理员。
在做“web stuffs”的18年后,我只想看一眼,而不是筛选。
我经常使用CLI - http://hackertyper.com/
每次我不得不使用命令行时,我都会想“为它做一个GUI有多难?”事实上,有很多软件可以重现你在命令行上做的绝大多数事情,所以很多时候这是一个偏好问题。我担心用错误的方式使用sudo,或者删除那些奇怪的目录会弄乱我的系统,所以是的,我希望我少用它一些。
我认为Codekit解决了我在命令行上要做的事情的80%。我希望看到一个可以完成另外20%的新版本。
我指的是以最不冒犯的方式,但如果你发现自己每天使用命令行数百(数千)次(对于像CD这样简单的事情除外),你需要专注于自动化或改进。
例如,我们必须在我的老地方的ubuntu下在CLI中运行大量命令,所以我编写了一堆Shell脚本,并将它们附加到事件/cronjobs上,以自动化大约25%的工作 - 这只是一次快速修补工作!
我并不想冒犯任何人,但是:对于我在命令行上执行的工作,几乎没有自动化选项。你不能简单地假设CLI = 无处不在的相同工作环境。在大型公司中只做特定任务的人员,像我这样的全职自由职业者,中小型网络公司/ISP的系统管理员等等,等等,等等,之间存在巨大的差异!这只是冰山一角!
cu, w0lf.
alias ag=’alias | grep’
有人还记得并使用过这颗小宝石吗?
按照预期,它为我节省了大量输入。
我的.bashrc & .bash_aliases文件* 非常庞大,上面的“ag”示例帮助我在同一个列表中找到那些生疏的快捷方式,我已将其#— 按类别— 按字母顺序分组,并按命令和函数分组……包括脚本的快捷方式。
(*redhats & debians –分别)
啊,好吧……上面的那条推特确实派上了用场……虽然我正在使用Guake(Yakuake的Gnome衍生版,一个Quake风格的终端/命令行),这意味着我至少打开了两个终端窗口,所有这些窗口都可以在你按下其中一个手指(在我的情况下,是F12)的情况下轻松获得。
大多数时候,我只是用命令行查看Clementine中当前正在运行的内容,因为在“np [enter]”中输入比将鼠标移动到面板上,等待它出现,单击托盘栏中的播放器图标,等待它打开,然后查看当前正在播放的内容要容易得多。
从一开始,我就基本上是一个TUI = 文本用户界面的人。最初的系统是80年代后期的Commodore 128D,后来是DOS,然后是Windows,Windows只是一些点击式的彩色资产……所以,在2001年偶然发现Linux(除了在1994年已经略微接触过SLS/Slackware)之后,习惯它的命令行并没有那么困难。
因此,在使用Unix衍生版作为主要操作系统和开发环境近8年后,GUI仍然是一个不错的选择,但TUI可以更快更轻松地完成大部分日常工作。当然,需要花一些精力去挖掘所有RTFM负载,但是……其他复杂的系统,比如Photoshop、Javascript,或者你选择的IDE(例如Visual Studio、Eclipse,甚至Geany),都需要花费相同的时间去学习,而且你可能永远不会完全了解它……
cu, w0lf.
对于所有说使用bash是身份象征或类似的人,我想问问你们对文本编辑器中的键盘快捷键了解多少。你每天使用这些快捷键多少次?和bash一样,这些快捷键需要时间学习,但现在你效率提高了X倍。一切都有学习曲线。
通常情况下,完成一项任务有更好的/更有效的方法,关键是找到这种工作流程或工具集,无论是GUI、CLI还是浓缩咖啡。
这只是我个人的观点。我不喜欢那些因为认为它是身份象征而随意否定事物的人。或者,也许我只是对这件事太强迫症了:)
499
我爱终端,它是所有魔法发生的地方。