考虑到命令行在开发人员工作流程中起着多么重要的作用,学习它不应该被认为是过于困难或乏味的。
我曾经也避免使用它,但有一天开始自学如何让困难变得尽可能容易。 我克服了障碍,你也可以。 投入时间提高我的命令行舒适度是值得的,我将在本文中分享一些我发现有用的提示和资源。
目标读者是那些通常避免使用命令行,或者偶尔使用但不是作为常规或基本工具的人。
提示 #1:保持务实的思维方式
掌握命令行的诀窍是:练习。 **你练习,你就会变得更好。** 没有秘诀;技能的学习和重复会转化为理解和掌握。 认为自己做不到这一点的想法毫无用处;它只会阻碍你达成目标。 你不妨抛弃这些想法,开始行动。
提示 #2:保留一份备忘清单
不要害怕保留一份备忘清单。 我发现一本放在键盘旁边的薄薄的螺旋装笔记本非常完美;写下命令有助于将其记住;将其放在我键入时可以参考的地方,对整个过程来说很方便。 不要仅仅复制粘贴;你不会这样学习。 在你了解命令之前,请自己输入。
提示 #3:浏览你平时不用的语言
- 花时间查看各种语言中的命令,即使你没有立即吸收、使用或记住它们,也要查看这些命令。 定期花点时间查看这些命令是值得的;最终会发现一些模式。 其中一些甚至可能会在某个意想不到的时间出现在你的脑海中,并给你带来额外的顿悟时刻!
- 浏览包含大量 CLI 命令的书籍可以证明对识别命令模式很有用。 我甚至更进一步,将我的收藏进行螺旋装订。 我非常喜欢螺旋装订;像 FedEx 这样的地方以令人惊讶的低成本提供螺旋装订服务。
提示 #4:练习……安全地练习
当我建议新手参与开源项目时,他们不可避免地会有点紧张。 我认为这完全是自然的,如果只是为了安慰我自己,我最初对它的紧张感是完全自然的。 不过,一个很好的练习方法是为你自己的项目建立一个仓库,并定期提交。 只需在终端窗口中使用常见的 Git 命令,将无关紧要的更改提交到自己的项目中,就可以建立“肌肉记忆”,这样当确实需要提交有意义的代码时,你不会因为仍然对命令本身感到紧张而被阻碍。
这些是我注意到在日常开发中使用最频繁的命令。 期待自己学会这些命令,并能够毫不犹豫地执行任何一项命令,这是完全可以接受的。 不要使用 GUI 工具(它们会做出奇怪的合并选择)。 学习如何自己编写这些命令。
- 检查状态
- 创建一个新分支并切换到它
- 添加文件
- 添加所有更改
- 只添加其中一个更改
- 提交
- 推送到远程分支
- 获取分支列表
- 检出分支
- 删除分支
- 即使有更改也要删除分支
- 获取并合并分支的更改
同步 fork 需要更长的时间来学习 - 我不常花工作时间编写我无权访问的仓库的代码。 然而,在为开源软件做贡献时,我不得不学习如何做到这一点。 GitHub 上关于此主题的文章就足够了;即使现在,我仍然将其添加为书签。
提示 #5:提升技能!
我真的很喜欢使用 Digital Ocean 来提升我的技能。 他们的分步指南非常有用,而且每月 5 美元, “Droplets” 是一种经济高效的方式。
以下是一个建议的自学路径(随意选择你自己的冒险!Digital Ocean 社区中有超过 1700 个教程)
- 创建一个预装 Ghost 的 Droplet。 完成安装需要进行一些命令行操作,这使其成为一个不错的选择。 它不是完全为你完成的,但要做的事情不多,不会让人不知所措。 甚至还有一篇 优秀的教程 由 Melissa Anderson 撰写。
- 设置一个 GitHub 仓库来处理 Ghost 的一些主题,进行小的更改并练习你的命令行操作。
如果我不提及 Ember,那将是我的疏忽,因为 ember-cli 无疑是最强大的 CLI 之一。 随意查看文档 并阅读该列表!
总结
有些人可能会觉得这份简短的指南过于简单。 然而,正如 S. Thompson 在《微积分入门》中所说:“一个傻瓜能做的事,其他傻瓜也能做。” 不要让其他人让你认为使用命令行非常困难,或者他们因为会使用而很聪明。 通过练习,你将能够做到,并且它很快就会变得很简单。
毫无疑问,命令行是开发人员最强大的工具之一,也是他(她)最好的朋友。 我推荐 Steve Parker 的书 - Shell 脚本教程。 这是一个很棒的 shell 命令行初学者教程。 我向我指导的所有初级开发人员推荐了这本书。
嗯,我一定是完全错过了重点。 但你到底想解决什么问题?
人们只是根据需要使用命令行而已。
例如,我只知道 Mongo DB 命令行界面的三个命令,而我知道几乎所有(>95%)的 Asterisk PBX CLI,以及大量的 Mac 和 Linux 命令行技巧。 我过去知道 Windows 命令行的所有单个命令,因为我逐个学习了它们,并且我过去还教过它。
如你所见,这与哪个命令行以及你想用它做什么有关。 不要太多仪式感。 它毕竟只是一个命令行。 而且更多的时候,命令行会不断被创建。
如果你的需求需要每周花费数小时进行命令行交互,那么你的大脑自然会帮助你优化你的工作流程。 当然,前提是你聪明且灵活,能够改进你的工作流程。
此外,你还可以考虑使用名为“Oh My Zsh”的 shell,可在 https://github.com/robbyrussell/oh-my-zsh 获取……它将极大地改善你的命令行体验。
哦,对于 git,只要有可能,请将命令留给真正需要命令行的任务。 使用 SourceTree 代替。 在我看来,你将获得更高的效率。
干杯
对我来说,一个很大的帮助是找到了避免使用 vim 的方法。(在你学会了其他内容之后再尝试使用它)
1. 将 nano 设置为默认终端编辑器(你也可以使用外部编辑器)
2. 对于提交,使用 -m 来编写简短的提交信息(大多数情况下,人们不会阅读超出简短信息的部分)。
除了列出的 Git 命令之外,您还可以通过命令行执行许多其他非常有用的操作,而这些操作在使用图形界面时会被错过。
最值得注意的是使用 SSH 在服务器上执行任何操作。这里还有很多其他内容可以列出,但可以留待更深入的文章进行介绍。
与其付费使用 DigitalOcean,您可以注册 https://tilde.town 的免费帐户并通过 SSH 连接到服务器。在这种环境中,您必须完全使用命令行。