Linux基础 我是怎么与Linux系统结下不解之缘

发布于 2022-07-02  149 次阅读


一直想找个机会好好地梳理一下自己业余的编程学习轨迹,以比较客观地评价自己的过去,并且对于自己未来的发展以及后来者可以有一个参考作用。趁着个人博客的开张,我终于有一个不错的平台来好好地总结一波了:laughing:

我的编程之路

我生活和学习的环境与编程的关系很不搭边。在读本科之前,我一直都是生活在小山村,家里并没有宽带和个人PC。父母甚至认为个人PC是一种和游戏机等价的东西,会分散注意力,让人沉迷玩乐不思上进。当时家里只有姐姐有一个电脑,当时好像是说PS用的。我也是那时学的五笔(后来发现五笔并不是很多人用):smile:

虽然我并没有个人电脑,但是我人生第一次接触到编程应该是高中时期,当时隔壁班有一个同学开发了一个点名器,用来帮助老师随机点名或者是做活动用(回想起来初中高中的生活真是单纯,哈哈 :relaxed: 。现在回想起来,他那个软件估计是用VB之类的编程语言搞的。总之当时觉得很惊艳,但也没怎么在意。

时光匆匆,终于要上大学了。我人生的第一台PC还是上大学时老爸给我买的一台联想笔记本(后来还被人偷了 :joy: ),这主要还是因为我和父母说,我的师兄师姐都建议我在大学期间要有自己的个人电脑才行,因为这与作业、考试密切相关,他们才不得已搞了一台电脑给我。

不过,虽然我已经有了人生的第一台电脑,我的生活还是离编程十分遥远。我本科学的是临床医学,老师、同学都不会编程,或者说并不热衷于编程(毕竟专业又不是这个),所以是没有什么编程氛围的,也没有什么机会可以接触到编程。我记得本科一、二年级的时候好像是有VB语言的选修课的,我当时好像抢不到别的选修课才选的VB,最后估计还是老师可怜我才放我过的,哈哈!其实那会学VB的时候感觉还是蛮好玩的。印象中它好像有个图形的IDE,有一些参数设置,然后就可以做一个简单的应用出来,并如计算器之类的。只是当时觉得它太难太复杂了,而且似乎没有什么实际的用途,所以学的并不深入,也没有表现出太大的兴趣。后来学习了R语言、python,还有一些粗浅的linux shell脚本语言,才发现VB的真TM的无聊,哈哈 :relieved: !不管如何,本科就这样过去了,也从来没有想到过自己会和编程有什么关系。

直到研究生阶段,形势也发生变化。在硕士刚刚入学那会,有个师兄和我说,在研究生阶段,你应该了解一下linux和R语言。当时我是第一次听说linux和R语言,不过在稍微地了解了一下后就开始入坑了。在那会,生物学大数据十分地火热(就算是今天和未来的某个时间里,估计也是一个长盛不衰的领域了,以后有机会开坑聊聊)。我自己敏锐地感觉到,在未来,与数据处理相关的能力在生物学和医学研究中应该是十分重要的,所以我当时决心全身心地投入对R语言的学习(当然到今天,这种认识已经发生了比较深刻的变化了)。我的老师们其实对R语言之类的编程在生物学中的应用是有一点怀疑的,一方面他们觉得我们又不是编程相关专业的,这种事应该给更专业的人去做;另一方面,他们也看不惯大家都用所谓生信的数据来水sci :stuck_out_tongue: ,认为那些研究对生物学没有实质性的推动作用(当然这又是另外一个话题了)。

有点扯远了,让我们回到R语言吧!虽然当时决心开始学了,可是周围并没有太多可以参考的对象。我当时在淘宝用几块钱买了一些视频就开始刚,现在想想自己还真是神经大条,哈哈! :stuck_out_tongue: 总之就是看老师教嘛,老师打代码我也打代码。后来中途家里发生一些变故,我回家大约3周左右。在那段十分压抑和封闭的时间里,为了转移注意力,我全身心投入到R语言的学习中,在没有人指导的情况下,写出了几页自定义函数,并且给他们标上注释(后来我才知道在R语言中,自定义函数和注释往往通过roxygen之类的高级工具来管理的),其实也是蛮刚的,还觉得写代码十分好玩。总之呢,在不断地提出想法、实现和试错的过程中,我的R语言水平就日益精进了。不过在这个过程中我与linux也没有什么交集,主要是因为我平时是在windows平台下通过RStudio这个IDE进行编程和开发,并不需要用到linux。不过呢,很快它和我的缘分就要开始了 :heart:

我与linux系统

随着研究生阶段的不断深入学习,我又慢慢地了解到另外一个毗邻的领域——生物信息学。其实这个领域的定义比较不严谨,总之大致就是利用计算机技术来进行生物学大数据的分析。当时我也想了解一波,无奈以二代测序为基础的生物学大数据的相关软件都是运行在linux系统中。

虽然当时本人的R语言已经有了一定的水准,但是对于linux还是一窍不通。之前虽然听师兄说过一下,但自己并没有特别深入地去了解,也不知道怎么去学习。不过好在自己已经有一些编程基础,所以虽然有点畏惧,还是硬着头皮上了。当时在网上找了找视频,然后生信技能树的Jimmy老师的系列视频引起了我的注意,我大致看了一下,觉得可以作为入门的视频教程,就开始看了。当然,也就是在这里遇到了改变人生的编程语言——markdown。本博客的所有文章也是基于markdown进行编写。

可能学习计算机的人都有点嗤之以鼻,这算哪门子编程语言呀 :joy: !但在我的眼中,markdown就是一门编程语言,设计思维简单,语法简单(我花了半个小时就已经学到了90%我日常要使用的功能),还很强大。在教程中,Jimmy老师使用Typora(后来才知道这是markdown界最好用的软件之一)进行markdown编程,用来管理代码和梳理知识体系。我看到后,马上就确定mardown是一个记录笔记的神器,完全不需word或者其它稀奇古怪的东西。而且在对markdown的学习中,出于个人图床的需求,也迫使我加深了对linux服务器的了解和依赖。另外一个重要的接触就是github了,它是一个很受欢迎的代码管理和版本控制的平台,常常被戏称为“全球最大同性交友平台”。我觉得,作为一个业余的编程人,在这一刻才算是入门了。

很快,我就买了一台服务器,不过不是一般的小鸡,而是一台二手的、性能还不错的机器,配置如下:

image-20220416171557770

其实和生信工程师常用的配置相比就比较弱了,内存和CPU差了些。不过作为人生第一台服务器已经算比较满意了。当然,在选购服务器的时候,也接触了和软路由相关的内容,从此生活发生了巨大的变化,重新地认识了外面的世界(当然都是后话,属于支线剧情,就不再赘述了)。首先装的是Ubuntu系统,因为它是使用最为广泛的linux发行版之一,社区支持好,到目前为止我也只用过Ubuntu和Debian。当然,在买服务器之前,我已经用Windows在VM虚拟机中实战了一下,所以还是蛮有把握的。掌握实体服务器后所面临的网络访问问题也促使我了解了和计算机网络相关的知识。总之,这个时期我对于编程和外面世界的了解都处于快速的变化之中,可算是生活中的巨大转折点了。

拿到机子之后,经常ssh登陆shell后台,运行一下cdls命令,感觉很酷,哈哈 :sunglasses: 。有了Google和Github的buff加持,再加上B站的教学资源,进步也是非常显著的,不出一个月,基本上就可以玩得很溜了,当然再多的比较深层的东西以后也慢慢地了解了。至于如何入门学习linux、如何玩转Docker之类的,我的心得以后会慢慢在此博客进行分享,这里不再展开了。

关于《Linux基础》

作为一个非专业人士,我学习linux的过程和经验还是有一定参考价值的,尤其是对于新手。所以准备开个《Linux基础》的系列博文,讲一下新手应该怎么学习Linux。顺便水水博文嘛,哈哈:stuck_out_tongue:

可能有人会说,这种烂大街的内容还写来做什么呀:fearful:

要知道,同样的内容要写出新花样也不容易呀,对于写作能力和知识储备都有一定的要求。听说过费曼学习法嘛?这是一个自我锻炼和提升的绝佳机会!

而且,我以后也会讲一些和Docker、NAS、R语言甚至是Python有关等和编程有关的内容。Linux基础作为一种底层知识储备,多了解一些对于扩展学习也是有好处的。Linux系统“一切皆文件”的设计思想还是非常有学习和了解的必要的,这在使用Windows的过程中是很难体会到的!

虽然计算机技术日新月异,但总是有一些经典基础历久弥新。希望自己也能够触及这些最基本的东西!

我写作的过程会假装自己不会Linux编程。希望这种安排对新手会比较友好一些,让他们对Linux少一些畏惧,多一些喜爱。尽管如此,我感觉学习linux还是少不了要折腾和踩坑,想要入门还是要有一些心理准备喽!

希望我可以做到!

小结

总体而言,我与编程、与linux的关系存在很多偶然性,受个人、家庭、学习环境和社会的综合影响。可能这就是缘分吧。总之还是蛮幸运的,有机会收获一个终生爱好 :smile: 。这也算是读研究生最大的收获之一了。作为一个非计算机专业的童鞋,我的经历还是蛮有参考价值的。希望能够和小伙伴们一起进步喽!

先写这么多,有什么要补充或修改以后再说。