Linux 你为什么必须 (从现在开始就) 掌握 linux

stack · 2017年05月24日 · 最后由 王智强 回复于 2017年12月28日 · 4813 次阅读

写在前面

在我看来,人人都应该学习 linux,但这不是本文探讨的重点。

本文主要从软件测试人员的角度谈谈学习和掌握 linux 的重要性、必要性、紧迫性。

另外:

  • 这里所说的 linux 系统,是 unix 系统和类 unix 系统的统称;
  • 这里提到的 linux 操作,指的是它的命令行操作;

为什么必须掌握

如果你是一名软件测试人员,尤其,是一名尚未掌握 linux 的测试人员,以下内容,请一定要只字不落地阅读,认真地思考,如果认可,请践行起来。

在此之前,先来讨论一个看似无关的话题。

什么是能力?

一般来说,能力是完成一项目标或者任务所体现出来的素质。解释中暗含了 “能力是一个绝对值(正数)” 的意思,是比较学术的解释。

而从职业的场景、实战的角度看,能力应当是相对的概念:

在某些方面,当你具备一些素质,而其他人并不具备时,说明你有着相应的能力。

即,

能力是参照于其他人高出的那部分素质,而这参照范围可以大到所有人、一个行业的从业人员,也可以小到一个公司的员工,甚至是几个人。

举例来说,无论是招聘网站的职位上,还是你自己的简历上,几乎不会出现 “能熟练使用 windows 操作系统、熟练使用 Android 系统、熟练使用 IOS 系统” 等这样的要求和能力说明。因为,在测试人员里,这些能力是底限,是基础中的基础,本就应该是测试人员都具备的,甚至都快成了网民大众的基本功。换句话说,具备了这些能力,在测试行业里没有任何优势。但,linux 则不同,它常常出现在测试职位的技能要求里;求职者也常常会把自己熟悉 linux 这一事实显式地直白地体现在简历里,哪怕是不算太熟悉,也会表明自己有所了解。这意味着,熟练使用 linux 操作系统,甚至是简单地会用,在测试人员群体中,还算是稀缺的,是综合能力的一种体现。

通过这个现象可以得出一个结论,学习任何知识和技能时,不要害怕门槛高,学习成本高,因为门槛高,也是切切实实的好事儿。倘若门槛低,别人也能轻易获取和学习,那你就没有什么优势了。门槛高了(其实大部分情况下只是看起来门槛高),意味着许多人都会被排除在门槛外,那你就获得了足够的优势。总结一句话,在培养一种技能和能力时,尽量选择有门槛的、稀缺的、有技术壁垒的。

思考与讨论

  1. 想想在你的学习和成长生涯中,有哪些知识和技术是让你望而却步,不敢涉足的?
  2. 现在想想,这些技术别人是不是也有同样的感觉?
  3. 那些你乐意学习的、可轻松掌握的,是否长远看有足够的优势?
  4. 比你更优秀的人,比你多掌握了哪些有门槛的技术或能力呢?

如果你有这方面的经历和想法,欢迎畅言。

掌握 linux 的好处

linux 系统在 IT 行业的地位和重要性世人皆知,关于 Unix 和 Linux 的种种,也请自行搜索。除此之外,对测试人员来说,linux 还有其它非凡的意义。

技能栈足够宽

对于软件测试人员来说,测试的任何产品都基于操作系统,如常见的 Windows、Android、Ios、Linux 系统等。熟练使用操作系统本身就是测试人员的基本功。而随着对操作系统内核的深入理解和掌握,对提高测试能力大有帮助,也有利于测试得更加深入。

linux 系统是与 windows 系统截然不同的操作系统,它们的设计理念、内核原理有着巨大的差异。一种内核原理对应着它独有的一片天地,掌握一种操作系统,就掌握了该操作系统下的那片天地:处理器管理、存储器管理、文件管理、设备管理、安全性、内核结构、系统特性等。掌握这些内容,不仅增长学识,也是你测试能力向深层次提高的关键一步。

unix 和 linux 的家族足够庞大,就连移动端操作系统 IOS 和 Android,也分别是基于 Unix 和 Linux 而衍生出来的作品。掌握了 linux,也就自然而然地熟知 Android、Ios、Mac OS X 等系统。熟悉了 linux 系统的命令行操作,对 Android 的 shell,adb shell 命令、Mac OS X 的 shell 的熟悉自然不在话下。linux 还是最佳的也是应用最多的服务器端操作系统。

所以,掌握了它,相当于 get 了一堆技能。

操作和思维习惯

不可否认,windows 的操作对测试人员影响至深,尤其是对功能测试人员。从我们一开始接触电脑开始,windows 的图形化操作就深深地影响了我们。几年下来,我们对所有的图形化界面操作似乎有了一种天生的能力,可以不加思索地使用它们。所以,当你第一次接触苹果的 Mac OS X 系统或 linux 系统的图形化界面时,也可以很轻松地使用起来。因为我们已然具备了对图形化界面操作的经验和思维习惯,所以新掌握一门图形化操作系统没有难度,同样也没有优势。

习惯甚至安逸于图形化的操作,长远看,对于测试人员自身素质的培养是有阻力的

linux 的命令行操作会改变你的操作习惯和思维习惯。它使你的双手能够更加密切地配合和协作,更好更快地完成各项工作。

图形化界面虽然好看易用,但解决问题还得靠命令行。

速度快

熟练使用 linux,你会体会到什么是快,以及怎样更快。测试人员作为技术人员,应该有技术极客精神,linux 在这点上支持得足够好。

linux 的速度快,我想至少有这几个方面的因素:

  1. 操作系统本身的性能稳定且强悍;
  2. 命令行操作起来流畅且快速;
  3. 用命令来编码,实现复用,一次执行多次使用;

图形化操作系统在降低了学习成本和认知门槛,提高了可读性和可操作性的同时,也降低了操作系统的性能和操控的速度。不必对比 linux 和 windows,在 windows 上就有很好的例证:

你有没有尝试过,当在 windows 上想把多个超过 1G 的文件拷贝到 U 盘上时,使用 cmd 命令拷贝会比图形化操作要快得多的多,而且拷贝期间基本不影响你同时做别的事情。

linux 的命令行操作,可以高效精准地完成各项工作。同时,它也使得经常使用 linux 的人输入速度和准确率更高,眼疾手快。

在实际工作中,需要用 linux 完成的工作,虽然可以 “曲线救国” 在 windows 下完成,但却会花费较多的时间。比如,不熟悉 linux 时,经常会把文件从 linux 系统中拷贝到 windows 系统中处理,减慢了速度不说,还经常因为系统换行符的差异伤脑筋,错误百出。在 “不会使用 linux” 的困难面前,能够想到用 windows 来解决问题,是值得鼓励的,这符合 “没有办法创造办法也要上” 的精神。但反复这么做,却从来不突破瓶颈,就有问题了。

linux 在速度快这方面的优势就不一一列举了。这里也并非是诋毁 windows,只为体现 linux 的优势而已。

编程捷径

熟悉了 linux 的命令行操作,你将会对所有的命令行操作有着天然的喜欢和自通,哪怕是 windows 的 dos 命令。

linux 的几乎每个命令(工具)都很好用,有些甚至很强大,如 awk、sed、vim、sar 等等,就拿 awk 来说,它在许多场合下被称作是编程语言——处理文本数据的编程语言

尤其是功能测试人员,掌握了 linux 命令,可谓是以最便捷、最低成本的方式打开了编程的大门,因为会使用 linux 命令离会 shell 编程仅半步之遥。

知行合一

linux 有很多哲学和文化,在 linux 之外的世界里同样适用。比如,linux 系统的设计理念是,让每一个命令做好一件事(实现一个功能),用管道线将这些命令组合起来,去实现更多的功能。——这也称得上是人生哲学了:

对个人而言,努力做好每一件事、仔细打磨每一样技能,将它们的价值组合起来,价值则会更大;

对团队而言,每个成员都有自己的分工,把自己专职的部分做好。再把团队成员的能力组合起来,就能做更多更有价值的事情了。

这类的哲学还有许多,知中有行,行中有知,就不一一列举了。

除以上之外,linux 还有着其它的辅助作用。

其它

linux 的命令行是基于文本的,因而在使用 linux 的过程中你不得不保持时刻阅读文本的状态。久而久之,阅读和理解的能力得以提升。再者,linux 的联机手册、命令的出错信息、系统信息等都是英文的,这会极大地提高英语阅读能力、扩大英语词汇量等。

有不少测试人员看到程序的出错信息,就会一概认为是 “出错了、程序运行异常、程序不能运行” 等,已经完全不具备阅读信息的能力。而能够熟练使用 linux 的人,则不会存在这种情况。

学习 linux 是有成本的,同时也非常超值。专业人士应该有专业人士的技术壁垒。

不掌握有没有坏处?

不进则退

linux 涉及的技能栈如此广泛,好处这么多,这在测试人员的要掌握的技能(技能栈)中是罕见的。所以,如果你没有占领 linux 这块高地,这在与同行竞争时是非常吃亏的。

随着你工作年限的增加,不能熟练使用 linux 就越发变成你的软肋,除非你在其它方面有切切实实的优势和积累。

学习中的陷阱

在学习和成长的路上,有一个陷阱,看起来正确无比,很具有迷惑性,实际则不然,那就是 “用到了再学”。在很长的一段时间里,我掉在这个陷阱里不能自拔。

近水楼台先得月,但首先得先是个楼台。用到了再学,也是一样。在用到之前,首先得知道,然后才是边用边学地渐进式的成长。而从 “不知道” 到 “知道”,是不连续的,往往需要先破冰

“为了储备知识去学学不进去,我这个人适合用到了再学。”

“系统学习效率太低,用到了再学岂不是更快?”

“学这个干什么?现在又用不到!”

……

但,很多时候,由于对一门知识或技能的知之甚少,你根本就没有机会用到它,甚至根本不曾听说它。它在你的世界里属于 “你不知道你不知道” 的那部分。

举个亲身经历的例子

当我学会了用 vim 对文件内容进行批量替换,我兴奋不已,我再也不用逐个编辑要修改的内容了,也不必将那些配置文件先下载到 pc 上用 notepad++ 进行批量替换了。我将 “用 vim 对配置文件的特定内容进行批量替换” 这一系列的操作用得是炉火纯青,以至于输入命令的速度、使用 vi 的速度都得到了极大的提高,曾被戏称为 “无影手”。比起之前,vim 已经极大地提高了我的效率。直到我又学习到了 sed 这个命令,才发现原来非交互式地修改文件内容更为高效!!!现在我知道了 sed 这个命令,我自然可以将其认真学习一番,这并不难,但 “windows 上编辑文本-->linux 下用 vim”,“vim-->sed” 却不得不需要破冰。

我想,我并不孤独。你也一定有相似的经历。linux 中这类的例子非常常见,有时候多掌握某个命令的一个参数就会让你效率提升很多。

总结

在软件测试领域里,必须要学习和掌握的内容远远不止 linux 一项,这也是我们后续会聊到的话题。但就普及程度、应用范围、重要程度而言,linux 是名列前茅的。

许多人能够意识到掌握 linux 的重要性和必要性,但却迟迟没有开始(没有意识到紧迫性)。这些人总是有着这样或那样的借口。比如,现在还用不到、没时间,没环境,等等。读了上述内容,你是否有些心动了呢?

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
共收到 17 条回复 时间 点赞

linux 不是挺简单的。。

stack #10 · 2017年05月24日 Author
yonghang.zhang 回复

是挺简单?还是挺不简单的?

stack 回复

连头像都懒得设置的人 你不必回复

stack 回复

除非对黑色命令行有恐惧,否则不是一周内就可以掌握常用的吗

不懂 windows 的人路过...

视野决定广度,广度决定深度。总是想用到在学,结果会发现你永远不会用到,因为你根本想不到。

有理有据 信服

yonghang.zhang 回复

别吹牛,而且 linux 何止命令行

CentOS+Mac 党路过

当我学会了用 vim 对文件内容进行批量替换,我兴奋不已,我再也不用逐个编辑要修改的内容了,也不必将那些配置文件先下载到 pc 上用 notepad++ 进行批量替换了。

notepad++ 也可以的...

呃 那去学好了 鸟哥基础篇看一看 跟着操作操作 用的多了就记住了

emma.ren 回复

鸟哥的私房菜里面的知识点都学会的话就是 Linux 高手。

支持一下,我用 linux 最重要的原因是因为编码统一 ,不像 win 一样搞事情。把它当成是一个工具在用,日常生活还是 win 为主

谢谢分享这么好的文章, 一直都知道 Linux 是很需要的技能, 但要学习的 IT 技能着实太多, 一直没有排上 Linux 的学习行程, 不过我还是会好好学习的.
而且看到有人也回复了, 我觉得只要不是对命令行有恐惧的话, 边用边查 google, 应该能在短期内初级上手吧, 当然要成为高手应该还是长期的累积了.

2000 年就有类似文章了,就跟你必须学某某编程语言一样

然后呢? 我知道必须掌握 Linux 然后呢

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册