开篇:是什么让我在2024年走上了学习 Linux 之路?

科技   2024-12-17 17:00   北京  
将 脚本之家 设为“星标
第一时间收到文章更新
来源 | dingtingli
在这个几乎一切都能用鼠标甚至手指完成操作的时代,程序员为什么还要回到冷冰冰的 Linux 命令行?
是图形化界面不够用吗?
究竟是什么让命令行重回开发者的视野?

01

从图形界面的世界走过

个人计算机发展的重要里程碑之一是苹果 Macintosh 的发布,从此计算机进入图形界面的时代,用户可以通过鼠标完成大部分操作,这样使计算机操作更加直观和便捷。

随后,微软 Windows 推动了这一趋势的发展,大大降低了用户的学习成本,用户不再需要记忆大量命令来操作计算机。

作为一个程序员,平时使用的大多数都是 Windows 或者 Mac 这类的操作系统。

所使用的开发环境(IDE),如 Visual Studio、Eclipse、IntelliJ,都是图形化应用程序。编译和调试等工作可以通过鼠标操作,偶尔使用相关的快捷键来提高效率。

尽管可以使用命令行,但日常工作可以完全依赖图形界面。

但在最近几年,如果不了解命令行甚至不了解 Linux,你可能会觉得难以跟上技术发展的步伐。

起初我对这种趋势持有抵触情绪,当年的操作系统课程中都很少用 Linux,为什么现在要学这远古时代的操作。但最终还是不得不接受并适应这种变化。

Windows Mac Linux

02

重回命令行的心路历程

这个过程主要经历了三个阶段。

第一阶段:版本控制(Git)- 回归命令行

在项目开发中,版本控制是不可或缺的工具。常用的功能包括提交代码和合并代码时的比较等。

早期的版本控制工具如 CVS、SVN、VSS、TFS 等,均采用图形化界面,学习成本低,所见即所得。

后来,Git 成为了主流的版本控制工具。这款由 Linux 作者开发的软件,安装后以命令行的形式呈现给用户。

相比之下,学习 Git 的时间成本较高,除了需要学习各种命令,还要掌握其结构和分支管理。

然而,作为版本控制,我们已经没有选择了。因为 Git 是最流行的版本控制工具。幸运的是,开发工具后来集成了常见的 Git 操作,回归了图形界面。

顺便吐槽一下,那些复杂的 Git 命令确实很难记住。

Git @bytebytego

第二阶段:开发环境(NodeJS,NPM)- 在命令行中配置环境

随着 NodeJS 的日益流行,它的配套包管理工具 NPM 已成为开发者的必备工具。

过去,创建新项目通常需要在集成开发环境(IDE)中通过菜单操作,之后通过右键菜单来添加所需组件。

而现在,需在命令行中输入一条命令 npx create-react-app myapp,完成项目文件的生成和 Git 仓库的初始化。

安装组件也需要命令 npm install react react-dom。启动项目还需要运行命令 npm start 命令,并通过浏览器访问来查看项目。

输入这些命令时,命令行会显示大量的执行信息,整个人突然有种影视剧中黑客的感觉。

然而,对于熟悉 Linux 系统的用户来说,命令行操作再自然不过了。

在 Linux 中,安装应用通过命令行完成,系统会从网络服务器上的软件仓库自动下载并安装应用,简单的 apt install 命令就能完成整个过程。

NPM 的操作逻辑是一模一样的,依赖于集中式的存储库,通过统一的命令行操作实现组件的下载和安装。

npm

第三阶段部署(Docker)- 最后一根稻草

之前的技术变革,虽然需要适应,但还算可控。然而,Docker 的出现成了压倒我的最后一根稻草。

Docker 作为一种部署工具,完美解决了“在我机器上可以运行”的经典问题,实现了开发和部署环境之间的高度一致性。

然而,好东西往往不是没有代价的。Docker 最初是专为 Linux 系统设计,依赖于 Linux 的核心特性如 cgroups 和 namespaces,这些特性支持操作系统级别的资源隔离和限制。

在其他平台上,要运行 Docker,必须借助轻量级虚拟机(VM)来模拟 Linux 环境。Docker 守护进程和容器将在这个 Linux VM 上运行。

这样一来,无论是个人电脑还是服务器,操作环境实际上都被转化为了 Linux。

Docker @bytebytego

03

为什么越来越 Linux?

经历这三个阶段之后,我不禁思考一个问题:为什么在图形界面流行多年之后,开发环境却逐渐回归于 Linux 化?

Linux 不仅是一个操作系统,它更是一种文化,在开源世界中占据了核心地位。这种文化影响了无数开源项目,使它们继承了 Linux 的许多习惯。

目前,开源项目已成为软件开发架构和工具的主导力量。

无论是 React、Vue、Next.js、MySQL、Nginx、PostgreSQL、TypeScript、VS Code 还是 Git,从前端到后端,从编程语言到开发工具,几乎都属于开源领域。

虽然开源项目很难直接盈利,但许多大公司的参与不仅稳固了这一趋势,还加速了其发展。

作为开发者,我们能做的就是顺应这种趋势,去适应这些变化。

这就是为什么现在要学习使用 Linux 的原因。

04

补上这一个课

这种趋势与教育也密切相关。

Linux 作为开源软件,在大学的计算机基础教育中扮演着重要角色,帮助学生更深入地理解计算机系统的工作原理。

回顾自己的学习历程,我发现在操作系统课程中缺乏实践是一个普遍现象。

麻省理工学院甚至推出了名为“The Missing Semester of Your CS Education”的系列教程,意在弥补这一缺失,其重点就是介绍 Linux 命令行的使用,以补充计算机教育中的这一空白。

痛定思痛,我决定不再将就,而是踏实地补上这一课。

在这个时间点学习,还是有一定优势的,至少对 Windows 上的一些操作系统概念和工具比较熟悉。

比起学会使用命令行,更重要的是从概念层面理解 Linux。我们可以借助这些经验,通过对比它跟 Linux 的不同,来快速上手,将之前的劣势,转换为学习上的优势。

在这个学习过程中,我参考了众多资料,并积累了一些心得体会。

  推荐阅读:
  1. 学习Linux有什么用?
  2. “上班睡觉1小时被开除”:辞退员工的理由越来越离谱了!
  3. 世界上最难的 5 种编程语言!网友看后惊讶道:竟不是C/C++?
  4. 为什么黑客喜欢攻击打印机?🧐

  5. Linux 中还有哆啦A梦中出现过的蒸汽机车呢

脚本之家
脚本之家(jb51.net)每天提供最新IT类资讯、原创内容、编程开发的教程与经验分享,送书福利天天在等你!
 最新文章