写在最前头
我强烈不建议使用Termux等应用,在Android上运行GNU/Linux,你是在折磨自己。手机的定位是轻便的工具,这与GNU/Linux以及围绕它开发的应用的理念不相符。
选择
我们的人生充满了选择,是选择相对难开但控制性更好的手动档汽车,还是选择比较方便但较费油的自动档汽车;是直接用手机插上耳机听歌,还是去买专业的Hi-Fi设备;是选择在方便快捷的在线视频平台看电影,还是去买昂贵的蓝光光碟。
或专业硬核,或方便快捷,在大部分领域我会选择后者,我相信大多数人也是如此。我偶尔会读读古书权当消遣,但我从不会买竖排繁体版;我下载过一些无损音乐,但我不会去买索尼的“金砖”;不是这些东西不好,而是术业有专攻,专业的东西还是留给专业的人吧。
但简单方便很多时候意味着平凡无趣,意味着妥协。当然此事并不绝对,例如苹果的iPhone,索尼、微软、任天堂的游戏机,它们既操作简单又足够专业体验良好,不过这也很大程度上因为这些设备功能较单一。
要想体验更好,要想功能丰富,就得要折腾。我是很赞赏大家去折腾的,每天生活在别人无端定下的条条框框里生活又有什么意思。每个人都应该在学习工作之余捣鼓点什么东西,你不是音乐发烧友但你root刷机玩得贼溜,你从没买过唱片但家里却有专业的无线电设配,你可能对网上的这些都不感兴趣但却是一位运动达人。
学习Linux的好处
同样相较于使用Windows、macOS,去学习使用GNU/Linux(以下简称Linux)也是一种很不错的折腾。而且折腾电脑操作系统相较于折腾其他东西还有不少额外的优点。
只要你有电脑,你不需要额外的花费你就能拥有完整的Linux,最基础的和最专业的功能都在那里,而不是像很多东西越专业也就意味着越高的开销,硬件设备如此,手机、电脑上一些相对专业的软件不少都需要花钱购买。即使是Windows,你要去用组策略管理器、Hyper-V这些稍专业的功能,都需要另购专业版的系统。
学习Linux可以让你在多方面长久的受益。随着社会的发展电子设备的使用会越来越多,Linux由于其自由开放的协议,在未来的使用场景肯定会越来越多。而且Unix、Linux对程序设计的影响是深远的,你会在很多地方看见它们的影子。
举个简单的例子,你在MT文件管理器查看一个文件或文件夹的属性,在权限那一栏会看到一串像"drwxrwx---"这样的东西,这是什么意思,只要你稍稍学过一点Linux你就会明白,当然这也是因为Android使用的是Linux内核。
电子设备天然可玩性就比较高,电脑更是其中的佼佼者。因为电脑有着更大的屏幕可以同一时间展示更多的信息,有着最强大的人机交互接口(你的键盘)。Windows尚有不少可以折腾的地方,运行于电脑上的Linux操作系统能玩的地方更是多了去了。
一个很值得一试的应用,就是使用Linux作为你的路由系统。现在我们每个人的电子设备越来越多,对应的网络环境也越来越复杂。这时候不去用那些专门的路由系统(那些操作系统中常常有着种种烦人的限制,而且性能不好)而是直接使用Linux作为你的路由系统,作为你的网络控制中心,是一个很好的选择。
Linux与Windows,macOS比较
如果说Windows,macOS代表着对一般用户友好,Linux代表着专业,那它的专业之处具体展现在哪里呢?在我看来,就是对程序的精准控制,学习过编程的人都应该体会过精准操纵一件事物的快感。想批量的修改一些文件的名字,只需要编写一个简单的shell脚本;想单单禁止电脑上的一个应用联网,更进一步只是想屏蔽某个特定的网站,nftables/iptables能够轻松胜任;想让我电脑上的某些特定的程序在某个特定的时间自动去执行某些动作,cron和systemd能让你很方便的制定规则。
尽管这些事情在Windows上也能做到,但往往你要花费很多的精力,你往往需要下载一些不知名的软件,冒着感染病毒的风险整上半天,最终效果还很不好。Windows为了对一般用户友好,进行了很多封装,这导致编写一个好的Windows的程序是一件费力的事,也使得Windows上缺少一些与Linux上的程序相对应的东西,或者虽有相似功能程序但体验非常不好。
其实说句公道话Windows对开发者也提供了足够的空间,但微软频繁更改接口,同时为了极高的兼容性整得系统太复杂,再加上微软的一些其他的黑历史,使开发者们心生厌恶。当然也有不少东西是Windows独一份的,比如微软的集成开发环境Visual Studio,它可是宇宙最强IDE。
而对Linux来说一切都展现在你面前。这并不意味着你要去详细地了解操作系统底层的知识,开发者们早就做出了一个个功能强大的程序,你只需要简单的学习就能让电脑遵照你的意愿做出复杂的动作。
macOS是很好的操作系统,它拥有漂亮的用户界面,又因为macOS兼容POSIX标准,Linux上那些强大的应用在macOS上大部分都有不错的移植。
如果你已经有了MacBook,那Linux的学习的很多东西,你可以直接在macOS上使用,真的是很方便。
可macOS与苹果家的硬件深度绑定,MacBook Air价格相对便宜,但硬件配置在各个方面都很差,而MacBook Pro是在是太贵了。对很多人来说macOS是可望而不可求的。
另外我是强烈不推荐大家用黑苹果的,版权法律问题暂且不说,私下移植的又没有源代码的黑苹果,安全性、稳定性方面都有着极大的潜在的风险。如果你真的很想体验macOS,或许可以尝试购买一台二手的苹果设备。
另外从MacBook过于追求轻薄就可以看出,MacBook的第一目标客户是普通用户,在折腾操作系统方面macOS比不过Linux。而且未来MacBook切换到ARM架构以后,黑苹果估计要绝迹了。。。
Linux让你的电脑不仅仅是一台电脑
你可能还接触过以下操作系统或电子设备:群晖(硬件与软件),OpenWrt,routerOS,梅林,潘多拉,NAS,花生棒,蒲公英(天猫链接预警)以及一些上千块的昂贵的专业路由器。这些东西里面真的有一些黑魔法吗?没有,一台安装有Linux的普通电脑就轻松超越了上面的所有东西。nftables/iptables的强大的网络控制,zfs一骑绝尘的快照功能,想要内网穿透frps就很好还没有那些莫名的限制(知乎链接预警)。这些你都可以在Linux上自由学习使用。再看一下那些所谓的专业的设备,它们很多都只是在用信息不对称收智商税而已。
诚然在Linux上学会使用上面提到的那些工具,学习成本是很高。没办法想要自由强大就需要学习,简单方便就容易被人喂屎。群晖设备价格高昂,OpenWrt要么自己编译要么被人恶心。以上两者在用户友好方面尚有可取之处,其他的那几个真的劝大家不要浪费时间和精力去折腾了,你得到一点好处的同时要承受到一堆坏处,不如去学习使用Linux。
Linux用户友好而又功能强大
命令行是Linux的精髓,当你用过各种应用以后会发现Linux的命令行才是真正做到了兼顾用户友好和功能强大。
能实现别的程序做不到的功能的程序,我们可以称之为强大的程序。那什么才是对用户友好的程序?王垠的一篇文章对此有不错的解释。要点在于对用户隐藏不必要的细节,不需要用户去关心底层,以及每个程序尽力做好一件事,程序之间可以互相交互。
这恰恰是命令行的优点,又是图形界面的缺陷。在图形化界面上越多的功能同时也意味着越复杂的设置界面,而命令行却同时做到功能强大和界面清爽。

visual studio复杂的设置界面
这似乎是一种必然的矛盾,功能越强界面也就越乱,体验越不友好。然而仔细思考我们会发现,实际上更改设置大致只有两种情形:1.我只是想临时更改某个设置,用过一次我就会改回默认值,为此我要在一个庞大混乱的列表里改上两次。2.我常修改的配置就那么几个,但大量的配置混杂在一起,惹的人心生厌烦。
以命令行里的下载器wget为例,通常情况下在终端里输入 wget <下载链接>即可。突然我要用一下ipv6,我需要去设置里改一下用完再改回去吗?不用,我只需要wget -6 <下载链接>。有一天我突然要用一下ftp,我需要转到专门的界面里吗?不用我只需要wget --ftp-user=USER --ftp-password=PASS <下载链接>即可。如果我有一些常用的选项我需要天天敲吗?不必,你在shell里简单的设置一下即可。
当你想要一个wget的图形化界面时,看看你会得到什么

又如Linux命令行里的种子下载器rtorrent,我只需要让它监听我浏览器默认的下载地址,每次我下载了一个新的种子,我只需要在命令行里敲入rtorrent,回车,它会帮我做好一切。

诚然命令行/终端里的好东西数不胜数,命令行里也有不少缺陷,Linux再好,终端再怎么高效,终究只是工具,不要迷信工具,合适的场景选择合适的工具,学会让工具更好的服务生活才是目的。
Linux的缺陷
没有东西是完美的,Linux同样满是缺陷。Unix/Linux设计逻辑上的缺陷,这种一般用户感知不强的东西暂且不提。由于种种原因,它那里没有国人常用的QQ,微信,钉钉以及Office套件,当然QQ其实是有的,其他的东西也有解决方法,你能借助wine使用QQ、微信、钉钉,Linux上你可以使用WPS,但体验都不是很好,总有这样那样的小毛病。
再者我们每个人至少都接触过Windows,初次使用Linux必然有很多不适。Linux下的图形界面不是不好,它的图形界面同样很优秀,它的中文字体渲染碾压Windows比肩macOS,它的桌面环境同样很流畅,Linux上还用层叠式窗口管理器这种在别处没有的好东西。只是你需要时间去适应。然而大部分情况下在你熟悉Linux的桌面环境之前,你就已经放弃了。(因为Linux的桌面环境在虚拟机里很卡顿,就去批评Linux的桌面环境性能差,对Linux的桌面环境来说是很不公平的。)

国产Linux deepin精美的用户界面
但是不要想着完全只用Linux,这对大多数人都是不切实际的,Linux可以成为解决很多问题的神器,尤其是在网络方面,但它不是唯一。
Linux与编程
有些人有一些偏见认为“Linux是给程序员用的,我从没学过编程是很难学会使用Linux的”。其实不是那么绝对,一些程序员从没正经学习过Linux,使他们眼界思路都很大程度地受限;一些人它们从没写过程序,但他们能很熟练地使用Linux。
其实使用Linux只是按照说明去使用,仅此而已,不要有畏惧心理。
该如何学习Linux
对于完全的新人,我不建议在虚拟机里安装带有图形界面的Linux,虚拟机里跑图形系统必然会带来大量性能损失,卡顿的感觉谁也不会喜欢。我更不建议你去折腾双系统,这太耗费精力了,而且你从中其实学不到什么。你只你在按着一些教程亦步亦趋,根本不知道自己在干什么。
我更建议你去用Windows下的WSL2(Windows的Linux子系统),它提供了一个完整的Linux内核在你的Windows上,你可以在那你学习Linux的基础,去学习使用包管理器,shell,vim,iptables等等好东西。使用WSL还有一个好处是WSL里你的硬盘就是挂载在 /mnt/目录下的,这让你可以用Linux的工具去操纵Windows的文件。

在WSL下你能用Linux的shell访问Windows里的文件
更进一步你可以去买一块树莓派去体验更加完整的Linux,尝试拿它去作为路由器,尝试搭建一个简易的ftp服务器。树莓派的性能可能满足不了你的需求,你不必真的一直使用它,但它是一个很好的学习用具。
等到你对一切都比较熟悉以后,你可以去买一台迷你主机,作为你网络环境的中心,你会体验到一种控制一切的快感。又或者经过上述两个阶段的学习,此时你已经有能力将带有图形桌面Linux放在你的电脑里,而将Windows放在虚拟机里了,那就赶快去试试看吧。
这是我认为比较好的学习路径。
Linux的学习资料
我是一个比较复古的人,我觉得学一样东西一定是要看书的。
中文世界最好的Linux入门是大抵是《鸟哥的Linux私房菜》(可以在官网免费看),如果你英文不错可以看看 The Linux Command Line(以cc-by-na-nd-3.0协议发布)。
鸟哥的书读起来有点啰嗦,你不必全部读完,看完前十三章挑选一些感兴趣的部分来读即可。鸟哥的书面向运维人员他书中介绍的Linux版本大概率和你使用的不一样,不过没关系Linux不同发行版的差异没那么大。
另外读的时候一定要配合在WSL上实际操作一下。
另外随着学习的深入,或多或少需要网络方面的知识。《鸟哥的Linux私房菜》的服务器篇虽有介绍,但不够详细不适合学习。如果可以的话建议你去读 Computer Networking: A Top-down Approach 这部英文的网络方面的大学入门教材,这本书虽有中文版但翻译很不好。然而我也是找不到其他什么网络方面入门好书,实在是很抱歉。
附注
1.Linux其实只是一个内核,我们在使用Linux时,使用到的很多软件与库(如bash,glibc)都来自GNU计划,因此Linux更确切的称呼应该是GNU/Linux。GNU计划的发起人理查德 · 斯修曼一生致力于自由软件运动(请注意与开源软件区分),想要了解更多可以阅读由BLUG翻译的斯修曼的著作选集《自由软件,自由社会》。
写在最后
我本来是想写一本面向新人的Linux的小册子,开始写才发现自己懂得还是太少,需要边写边查证很多东西,因此进展很慢。这篇文章本是我那本小册子的前言,现在提前分享出来,希望能有更多的人对Linux感兴趣。行文仓促,欢迎大家批评指正。