Linux/Shell:排名第四的计算机关键技能

createh55个月前 (01-12)技术教程42

除了编程语言之外,要想找一份计算机相关的工作,还需要很多其他方面的技能。最近,来自美国求职公司 Indeed 的一份报告显示:在全美工作技能需求中,Linux/Shell技能仅次于SQL、Java、Python,是排名第四的计算机关键技能,力压JavaScript。

相对于SQL、Java、Python而言,Linux/Shell可谓是即简单又复杂。记住一个命令就能上手操作,看起来Shell很简单;shell命令虽然简单但是数量很大,而且参数选项又很繁琐,致使我们学了忘、忘了再学,总感觉没有学好学会,没有底气。所以说,shell又是一门难学的技术。

曾经有人喊出“让天下没有难做的生意”,也有人喊出“让天下没有难学的技术”,实际上,生意依然很难做,搞技术的仍然是996,因为这些只是口号,听听而言,不要当真。

shell之所以难学是因为它有“命令很多、参数繁琐”两大特点,是一个高维的知识空间。唯有找到联系,才能“降维”,才能让天下没有难学的shell。

命令与生活的联系,命令与命令之间的联系,只要找到内在联系,两个命令、三个命令、五个命令往往结合成一块儿东西。不仅量变少了,shell命令还能学活,有左右逢源的灵气。

就拿空格来说,深入研究一下,就能挖出一串东西,空格不再是冰冷冷的符号,更有人文色彩,更让人感到亲切。

空格的ASCII码是32,32是个有故事的数字,人的牙齿是32个。象棋有32个棋子。在shell中数组是通过空格来分割,其他的语言往往喜欢用逗号来分割。为什么shell要用空格来分割呢?这里面也有学问:shell的命令参数的基本规则是:command arg1 arg2 arg3…,各个参数靠空格分隔,其传入命令内部将转换成数组。命令行参数(依靠空格分隔)和数组的语法定义(依靠空格分隔)是一脉相承的,所以在shell中数组用空格分隔才算是合情合理。

再拿别名来说,数据库中有表别名和列别名,在C/C++有类型别名,而在shell里面有命令别名。从数据库联系到shell,采用这样的思路,对“别名”的理解才会有深度,才能把别名深入人心,才能运用自如。

再说一下shell的排序命令。大凡排序的地方,总是会涉及到稳定性。排序算法的稳定性大家应该都知道,通俗地讲就是能保证两个相等的数其在序列的前后位置和排序后它们两个的前后位置顺序相同。出现稳定性的问题根源在于出现了相同数据,可以踢出重复数据:sort -n filename | uniq。sort是将原有文件进行排序,而uniq是将相邻的行进行去重。通过排序的稳定性这个枢纽,把数据结构和shell中的sort uniq命令联系了起来,这样大家对unique的理解是不是更深了一步呢?网上很多文章,一笔带过,止步于“数据重复”,没有触及“算法稳定性”这个层面,这样的学习方式是肤浅的。

shell里面的命令很多,参数很多,但是每个命令都如同一个小精灵,它是有外形,有内涵,有活力的。挖掘命令背后的东西,发现命令背后的联系,体会命令字符的魅力,这就是《趣谈shell》的特点。《趣谈shell》的口号是:让天下没有难学的shell。欢迎大家关注《趣谈shell》。

相关文章

Java 开发人员所需的技能

  Java 的潜力一直是许多公司的话题。 事实上,几乎每家公司都在使用 Java,无论是小公司还是一些大型科技巨头公司。另一方面,还有许多其他公司正在招聘 Java 开发人员。Java开发人员技能可...

Java基础知识有哪些 怎么不断提高专业技能

  Java基础知识有哪些?怎么不断提高专业技能?在学习Java的过程中,需要从基础知识慢慢理解,通过一点点的学习积累,能够不断懂得编程的概念。基础知识的学习非常重要,Java编程其实并不难学,难的是...

史上最全java架构师技能图谱(下)

“java架构史上最全技能图谱分为上下两篇,这是java架构史上最全图谱下篇,包含: 大数据以及性能、设计模式、UML、中间件、分布式集群、负载均衡、通讯协议、架构设计等技术图谱等章节。...

背完这套Java面试八股文,自动解锁面试牛逼症被动技能

前言国内的互联网面试,恐怕是现存的、最接近科举考试的制度。很多人对八股文都嗤之以鼻,认为无法衡量出一个程序员的真是水平。还有一部分人则是深恶痛绝,因为实在太难背了。但是国内大环境如此,互联网IT行业的...

2018年技能提升报告:Kotlin将与Java展开激烈竞争

[闽南网]- Packt 发布了 2018 年技能提升报告的结果,旨在了解软件开发人员的工具使用情况和技能趋势。报告显示,Java 在编程语言中仍然占据主导地位,但 Kotlin 极有可能将其赶出移动...

Java程序员进阶技能:手把手教你排查线上环境OOM问题

大家好,我是方木排查和解决 OOM(Out of Memory)常见的问题排查方式查看服务的进程是否存在`ps -ef | grep 服务名 ps -aux | grep 服务名` 查看服务的日志`c...